// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: service.proto

package cash.z.wallet.sdk.rpc;

public final class Service {
  private Service() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface BlockIDOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.BlockID)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint64 height = 1;</code>
     * @return The height.
     */
    long getHeight();

    /**
     * <code>bytes hash = 2;</code>
     * @return The hash.
     */
    com.google.protobuf.ByteString getHash();
  }
  /**
   * <pre>
   * A BlockID message contains identifiers to select a block: a height or a
   * hash. Specification by hash is not implemented, but may be in the future.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.BlockID}
   */
  public static final class BlockID extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.BlockID)
      BlockIDOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BlockID.newBuilder() to construct.
    private BlockID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BlockID() {
      hash_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BlockID();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BlockID(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              height_ = input.readUInt64();
              break;
            }
            case 18: {

              hash_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockID_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.BlockID.class, cash.z.wallet.sdk.rpc.Service.BlockID.Builder.class);
    }

    public static final int HEIGHT_FIELD_NUMBER = 1;
    private long height_;
    /**
     * <code>uint64 height = 1;</code>
     * @return The height.
     */
    @java.lang.Override
    public long getHeight() {
      return height_;
    }

    public static final int HASH_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString hash_;
    /**
     * <code>bytes hash = 2;</code>
     * @return The hash.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getHash() {
      return hash_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (height_ != 0L) {
        output.writeUInt64(1, height_);
      }
      if (!hash_.isEmpty()) {
        output.writeBytes(2, hash_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (height_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, height_);
      }
      if (!hash_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, hash_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.BlockID)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.BlockID other = (cash.z.wallet.sdk.rpc.Service.BlockID) obj;

      if (getHeight()
          != other.getHeight()) return false;
      if (!getHash()
          .equals(other.getHash())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHeight());
      hash = (37 * hash) + HASH_FIELD_NUMBER;
      hash = (53 * hash) + getHash().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockID parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.BlockID prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A BlockID message contains identifiers to select a block: a height or a
     * hash. Specification by hash is not implemented, but may be in the future.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.BlockID}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.BlockID)
        cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockID_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.BlockID.class, cash.z.wallet.sdk.rpc.Service.BlockID.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.BlockID.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        height_ = 0L;

        hash_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockID getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockID build() {
        cash.z.wallet.sdk.rpc.Service.BlockID result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockID buildPartial() {
        cash.z.wallet.sdk.rpc.Service.BlockID result = new cash.z.wallet.sdk.rpc.Service.BlockID(this);
        result.height_ = height_;
        result.hash_ = hash_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.BlockID) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.BlockID)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.BlockID other) {
        if (other == cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance()) return this;
        if (other.getHeight() != 0L) {
          setHeight(other.getHeight());
        }
        if (other.getHash() != com.google.protobuf.ByteString.EMPTY) {
          setHash(other.getHash());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.BlockID parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.BlockID) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long height_ ;
      /**
       * <code>uint64 height = 1;</code>
       * @return The height.
       */
      @java.lang.Override
      public long getHeight() {
        return height_;
      }
      /**
       * <code>uint64 height = 1;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(long value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 height = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString hash_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes hash = 2;</code>
       * @return The hash.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getHash() {
        return hash_;
      }
      /**
       * <code>bytes hash = 2;</code>
       * @param value The hash to set.
       * @return This builder for chaining.
       */
      public Builder setHash(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hash_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes hash = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHash() {
        
        hash_ = getDefaultInstance().getHash();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.BlockID)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.BlockID)
    private static final cash.z.wallet.sdk.rpc.Service.BlockID DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.BlockID();
    }

    public static cash.z.wallet.sdk.rpc.Service.BlockID getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BlockID>
        PARSER = new com.google.protobuf.AbstractParser<BlockID>() {
      @java.lang.Override
      public BlockID parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BlockID(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BlockID> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BlockID> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockID getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BlockRangeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.BlockRange)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     * @return Whether the start field is set.
     */
    boolean hasStart();
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     * @return The start.
     */
    cash.z.wallet.sdk.rpc.Service.BlockID getStart();
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     */
    cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getStartOrBuilder();

    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     * @return Whether the end field is set.
     */
    boolean hasEnd();
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     * @return The end.
     */
    cash.z.wallet.sdk.rpc.Service.BlockID getEnd();
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     */
    cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getEndOrBuilder();
  }
  /**
   * <pre>
   * BlockRange specifies a series of blocks from start to end inclusive.
   * Both BlockIDs must be heights; specification by hash is not yet supported.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.BlockRange}
   */
  public static final class BlockRange extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.BlockRange)
      BlockRangeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BlockRange.newBuilder() to construct.
    private BlockRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BlockRange() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BlockRange();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BlockRange(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cash.z.wallet.sdk.rpc.Service.BlockID.Builder subBuilder = null;
              if (start_ != null) {
                subBuilder = start_.toBuilder();
              }
              start_ = input.readMessage(cash.z.wallet.sdk.rpc.Service.BlockID.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(start_);
                start_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              cash.z.wallet.sdk.rpc.Service.BlockID.Builder subBuilder = null;
              if (end_ != null) {
                subBuilder = end_.toBuilder();
              }
              end_ = input.readMessage(cash.z.wallet.sdk.rpc.Service.BlockID.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(end_);
                end_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockRange_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.BlockRange.class, cash.z.wallet.sdk.rpc.Service.BlockRange.Builder.class);
    }

    public static final int START_FIELD_NUMBER = 1;
    private cash.z.wallet.sdk.rpc.Service.BlockID start_;
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     * @return Whether the start field is set.
     */
    @java.lang.Override
    public boolean hasStart() {
      return start_ != null;
    }
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     * @return The start.
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockID getStart() {
      return start_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : start_;
    }
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getStartOrBuilder() {
      return getStart();
    }

    public static final int END_FIELD_NUMBER = 2;
    private cash.z.wallet.sdk.rpc.Service.BlockID end_;
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     * @return Whether the end field is set.
     */
    @java.lang.Override
    public boolean hasEnd() {
      return end_ != null;
    }
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockID getEnd() {
      return end_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : end_;
    }
    /**
     * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getEndOrBuilder() {
      return getEnd();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (start_ != null) {
        output.writeMessage(1, getStart());
      }
      if (end_ != null) {
        output.writeMessage(2, getEnd());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (start_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStart());
      }
      if (end_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getEnd());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.BlockRange)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.BlockRange other = (cash.z.wallet.sdk.rpc.Service.BlockRange) obj;

      if (hasStart() != other.hasStart()) return false;
      if (hasStart()) {
        if (!getStart()
            .equals(other.getStart())) return false;
      }
      if (hasEnd() != other.hasEnd()) return false;
      if (hasEnd()) {
        if (!getEnd()
            .equals(other.getEnd())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStart()) {
        hash = (37 * hash) + START_FIELD_NUMBER;
        hash = (53 * hash) + getStart().hashCode();
      }
      if (hasEnd()) {
        hash = (37 * hash) + END_FIELD_NUMBER;
        hash = (53 * hash) + getEnd().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.BlockRange parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.BlockRange prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * BlockRange specifies a series of blocks from start to end inclusive.
     * Both BlockIDs must be heights; specification by hash is not yet supported.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.BlockRange}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.BlockRange)
        cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.BlockRange.class, cash.z.wallet.sdk.rpc.Service.BlockRange.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.BlockRange.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (startBuilder_ == null) {
          start_ = null;
        } else {
          start_ = null;
          startBuilder_ = null;
        }
        if (endBuilder_ == null) {
          end_ = null;
        } else {
          end_ = null;
          endBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockRange getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.BlockRange.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockRange build() {
        cash.z.wallet.sdk.rpc.Service.BlockRange result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.BlockRange buildPartial() {
        cash.z.wallet.sdk.rpc.Service.BlockRange result = new cash.z.wallet.sdk.rpc.Service.BlockRange(this);
        if (startBuilder_ == null) {
          result.start_ = start_;
        } else {
          result.start_ = startBuilder_.build();
        }
        if (endBuilder_ == null) {
          result.end_ = end_;
        } else {
          result.end_ = endBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.BlockRange) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.BlockRange)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.BlockRange other) {
        if (other == cash.z.wallet.sdk.rpc.Service.BlockRange.getDefaultInstance()) return this;
        if (other.hasStart()) {
          mergeStart(other.getStart());
        }
        if (other.hasEnd()) {
          mergeEnd(other.getEnd());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.BlockRange parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.BlockRange) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cash.z.wallet.sdk.rpc.Service.BlockID start_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> startBuilder_;
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       * @return Whether the start field is set.
       */
      public boolean hasStart() {
        return startBuilder_ != null || start_ != null;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       * @return The start.
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID getStart() {
        if (startBuilder_ == null) {
          return start_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : start_;
        } else {
          return startBuilder_.getMessage();
        }
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public Builder setStart(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (startBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          start_ = value;
          onChanged();
        } else {
          startBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public Builder setStart(
          cash.z.wallet.sdk.rpc.Service.BlockID.Builder builderForValue) {
        if (startBuilder_ == null) {
          start_ = builderForValue.build();
          onChanged();
        } else {
          startBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public Builder mergeStart(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (startBuilder_ == null) {
          if (start_ != null) {
            start_ =
              cash.z.wallet.sdk.rpc.Service.BlockID.newBuilder(start_).mergeFrom(value).buildPartial();
          } else {
            start_ = value;
          }
          onChanged();
        } else {
          startBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public Builder clearStart() {
        if (startBuilder_ == null) {
          start_ = null;
          onChanged();
        } else {
          start_ = null;
          startBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID.Builder getStartBuilder() {
        
        onChanged();
        return getStartFieldBuilder().getBuilder();
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getStartOrBuilder() {
        if (startBuilder_ != null) {
          return startBuilder_.getMessageOrBuilder();
        } else {
          return start_ == null ?
              cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : start_;
        }
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID start = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> 
          getStartFieldBuilder() {
        if (startBuilder_ == null) {
          startBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder>(
                  getStart(),
                  getParentForChildren(),
                  isClean());
          start_ = null;
        }
        return startBuilder_;
      }

      private cash.z.wallet.sdk.rpc.Service.BlockID end_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> endBuilder_;
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       * @return Whether the end field is set.
       */
      public boolean hasEnd() {
        return endBuilder_ != null || end_ != null;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       * @return The end.
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID getEnd() {
        if (endBuilder_ == null) {
          return end_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : end_;
        } else {
          return endBuilder_.getMessage();
        }
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public Builder setEnd(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (endBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          end_ = value;
          onChanged();
        } else {
          endBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public Builder setEnd(
          cash.z.wallet.sdk.rpc.Service.BlockID.Builder builderForValue) {
        if (endBuilder_ == null) {
          end_ = builderForValue.build();
          onChanged();
        } else {
          endBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public Builder mergeEnd(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (endBuilder_ == null) {
          if (end_ != null) {
            end_ =
              cash.z.wallet.sdk.rpc.Service.BlockID.newBuilder(end_).mergeFrom(value).buildPartial();
          } else {
            end_ = value;
          }
          onChanged();
        } else {
          endBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public Builder clearEnd() {
        if (endBuilder_ == null) {
          end_ = null;
          onChanged();
        } else {
          end_ = null;
          endBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID.Builder getEndBuilder() {
        
        onChanged();
        return getEndFieldBuilder().getBuilder();
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getEndOrBuilder() {
        if (endBuilder_ != null) {
          return endBuilder_.getMessageOrBuilder();
        } else {
          return end_ == null ?
              cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : end_;
        }
      }
      /**
       * <code>.cash.z.wallet.sdk.rpc.BlockID end = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> 
          getEndFieldBuilder() {
        if (endBuilder_ == null) {
          endBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder>(
                  getEnd(),
                  getParentForChildren(),
                  isClean());
          end_ = null;
        }
        return endBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.BlockRange)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.BlockRange)
    private static final cash.z.wallet.sdk.rpc.Service.BlockRange DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.BlockRange();
    }

    public static cash.z.wallet.sdk.rpc.Service.BlockRange getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BlockRange>
        PARSER = new com.google.protobuf.AbstractParser<BlockRange>() {
      @java.lang.Override
      public BlockRange parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BlockRange(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BlockRange> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BlockRange> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockRange getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TxFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.TxFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     * @return Whether the block field is set.
     */
    boolean hasBlock();
    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     * @return The block.
     */
    cash.z.wallet.sdk.rpc.Service.BlockID getBlock();
    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     */
    cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getBlockOrBuilder();

    /**
     * <pre>
     * index within the block
     * </pre>
     *
     * <code>uint64 index = 2;</code>
     * @return The index.
     */
    long getIndex();

    /**
     * <pre>
     * transaction ID (hash, txid)
     * </pre>
     *
     * <code>bytes hash = 3;</code>
     * @return The hash.
     */
    com.google.protobuf.ByteString getHash();
  }
  /**
   * <pre>
   * A TxFilter contains the information needed to identify a particular
   * transaction: either a block and an index, or a direct transaction hash.
   * Currently, only specification by hash is supported.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.TxFilter}
   */
  public static final class TxFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.TxFilter)
      TxFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TxFilter.newBuilder() to construct.
    private TxFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TxFilter() {
      hash_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TxFilter();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TxFilter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              cash.z.wallet.sdk.rpc.Service.BlockID.Builder subBuilder = null;
              if (block_ != null) {
                subBuilder = block_.toBuilder();
              }
              block_ = input.readMessage(cash.z.wallet.sdk.rpc.Service.BlockID.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(block_);
                block_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              index_ = input.readUInt64();
              break;
            }
            case 26: {

              hash_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TxFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.TxFilter.class, cash.z.wallet.sdk.rpc.Service.TxFilter.Builder.class);
    }

    public static final int BLOCK_FIELD_NUMBER = 1;
    private cash.z.wallet.sdk.rpc.Service.BlockID block_;
    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     * @return Whether the block field is set.
     */
    @java.lang.Override
    public boolean hasBlock() {
      return block_ != null;
    }
    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     * @return The block.
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockID getBlock() {
      return block_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : block_;
    }
    /**
     * <pre>
     * block identifier, height or hash
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getBlockOrBuilder() {
      return getBlock();
    }

    public static final int INDEX_FIELD_NUMBER = 2;
    private long index_;
    /**
     * <pre>
     * index within the block
     * </pre>
     *
     * <code>uint64 index = 2;</code>
     * @return The index.
     */
    @java.lang.Override
    public long getIndex() {
      return index_;
    }

    public static final int HASH_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString hash_;
    /**
     * <pre>
     * transaction ID (hash, txid)
     * </pre>
     *
     * <code>bytes hash = 3;</code>
     * @return The hash.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getHash() {
      return hash_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (block_ != null) {
        output.writeMessage(1, getBlock());
      }
      if (index_ != 0L) {
        output.writeUInt64(2, index_);
      }
      if (!hash_.isEmpty()) {
        output.writeBytes(3, hash_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (block_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getBlock());
      }
      if (index_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, index_);
      }
      if (!hash_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, hash_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.TxFilter)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.TxFilter other = (cash.z.wallet.sdk.rpc.Service.TxFilter) obj;

      if (hasBlock() != other.hasBlock()) return false;
      if (hasBlock()) {
        if (!getBlock()
            .equals(other.getBlock())) return false;
      }
      if (getIndex()
          != other.getIndex()) return false;
      if (!getHash()
          .equals(other.getHash())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBlock()) {
        hash = (37 * hash) + BLOCK_FIELD_NUMBER;
        hash = (53 * hash) + getBlock().hashCode();
      }
      hash = (37 * hash) + INDEX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getIndex());
      hash = (37 * hash) + HASH_FIELD_NUMBER;
      hash = (53 * hash) + getHash().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TxFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.TxFilter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A TxFilter contains the information needed to identify a particular
     * transaction: either a block and an index, or a direct transaction hash.
     * Currently, only specification by hash is supported.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.TxFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.TxFilter)
        cash.z.wallet.sdk.rpc.Service.TxFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TxFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.TxFilter.class, cash.z.wallet.sdk.rpc.Service.TxFilter.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.TxFilter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (blockBuilder_ == null) {
          block_ = null;
        } else {
          block_ = null;
          blockBuilder_ = null;
        }
        index_ = 0L;

        hash_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TxFilter getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.TxFilter.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TxFilter build() {
        cash.z.wallet.sdk.rpc.Service.TxFilter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TxFilter buildPartial() {
        cash.z.wallet.sdk.rpc.Service.TxFilter result = new cash.z.wallet.sdk.rpc.Service.TxFilter(this);
        if (blockBuilder_ == null) {
          result.block_ = block_;
        } else {
          result.block_ = blockBuilder_.build();
        }
        result.index_ = index_;
        result.hash_ = hash_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.TxFilter) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.TxFilter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.TxFilter other) {
        if (other == cash.z.wallet.sdk.rpc.Service.TxFilter.getDefaultInstance()) return this;
        if (other.hasBlock()) {
          mergeBlock(other.getBlock());
        }
        if (other.getIndex() != 0L) {
          setIndex(other.getIndex());
        }
        if (other.getHash() != com.google.protobuf.ByteString.EMPTY) {
          setHash(other.getHash());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.TxFilter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.TxFilter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private cash.z.wallet.sdk.rpc.Service.BlockID block_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> blockBuilder_;
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       * @return Whether the block field is set.
       */
      public boolean hasBlock() {
        return blockBuilder_ != null || block_ != null;
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       * @return The block.
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID getBlock() {
        if (blockBuilder_ == null) {
          return block_ == null ? cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : block_;
        } else {
          return blockBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public Builder setBlock(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (blockBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          block_ = value;
          onChanged();
        } else {
          blockBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public Builder setBlock(
          cash.z.wallet.sdk.rpc.Service.BlockID.Builder builderForValue) {
        if (blockBuilder_ == null) {
          block_ = builderForValue.build();
          onChanged();
        } else {
          blockBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public Builder mergeBlock(cash.z.wallet.sdk.rpc.Service.BlockID value) {
        if (blockBuilder_ == null) {
          if (block_ != null) {
            block_ =
              cash.z.wallet.sdk.rpc.Service.BlockID.newBuilder(block_).mergeFrom(value).buildPartial();
          } else {
            block_ = value;
          }
          onChanged();
        } else {
          blockBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public Builder clearBlock() {
        if (blockBuilder_ == null) {
          block_ = null;
          onChanged();
        } else {
          block_ = null;
          blockBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockID.Builder getBlockBuilder() {
        
        onChanged();
        return getBlockFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder getBlockOrBuilder() {
        if (blockBuilder_ != null) {
          return blockBuilder_.getMessageOrBuilder();
        } else {
          return block_ == null ?
              cash.z.wallet.sdk.rpc.Service.BlockID.getDefaultInstance() : block_;
        }
      }
      /**
       * <pre>
       * block identifier, height or hash
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockID block = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder> 
          getBlockFieldBuilder() {
        if (blockBuilder_ == null) {
          blockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cash.z.wallet.sdk.rpc.Service.BlockID, cash.z.wallet.sdk.rpc.Service.BlockID.Builder, cash.z.wallet.sdk.rpc.Service.BlockIDOrBuilder>(
                  getBlock(),
                  getParentForChildren(),
                  isClean());
          block_ = null;
        }
        return blockBuilder_;
      }

      private long index_ ;
      /**
       * <pre>
       * index within the block
       * </pre>
       *
       * <code>uint64 index = 2;</code>
       * @return The index.
       */
      @java.lang.Override
      public long getIndex() {
        return index_;
      }
      /**
       * <pre>
       * index within the block
       * </pre>
       *
       * <code>uint64 index = 2;</code>
       * @param value The index to set.
       * @return This builder for chaining.
       */
      public Builder setIndex(long value) {
        
        index_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * index within the block
       * </pre>
       *
       * <code>uint64 index = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndex() {
        
        index_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString hash_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * transaction ID (hash, txid)
       * </pre>
       *
       * <code>bytes hash = 3;</code>
       * @return The hash.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getHash() {
        return hash_;
      }
      /**
       * <pre>
       * transaction ID (hash, txid)
       * </pre>
       *
       * <code>bytes hash = 3;</code>
       * @param value The hash to set.
       * @return This builder for chaining.
       */
      public Builder setHash(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hash_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * transaction ID (hash, txid)
       * </pre>
       *
       * <code>bytes hash = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHash() {
        
        hash_ = getDefaultInstance().getHash();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.TxFilter)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.TxFilter)
    private static final cash.z.wallet.sdk.rpc.Service.TxFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.TxFilter();
    }

    public static cash.z.wallet.sdk.rpc.Service.TxFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TxFilter>
        PARSER = new com.google.protobuf.AbstractParser<TxFilter>() {
      @java.lang.Override
      public TxFilter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TxFilter(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TxFilter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TxFilter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.TxFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RawTransactionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.RawTransaction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * exact data returned by Zcash 'getrawtransaction'
     * </pre>
     *
     * <code>bytes data = 1;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();

    /**
     * <pre>
     * height that the transaction was mined (or -1)
     * </pre>
     *
     * <code>uint64 height = 2;</code>
     * @return The height.
     */
    long getHeight();
  }
  /**
   * <pre>
   * RawTransaction contains the complete transaction data. It also optionally includes 
   * the block height in which the transaction was included.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.RawTransaction}
   */
  public static final class RawTransaction extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.RawTransaction)
      RawTransactionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RawTransaction.newBuilder() to construct.
    private RawTransaction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RawTransaction() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RawTransaction();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RawTransaction(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {

              data_ = input.readBytes();
              break;
            }
            case 16: {

              height_ = input.readUInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_RawTransaction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.RawTransaction.class, cash.z.wallet.sdk.rpc.Service.RawTransaction.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString data_;
    /**
     * <pre>
     * exact data returned by Zcash 'getrawtransaction'
     * </pre>
     *
     * <code>bytes data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    public static final int HEIGHT_FIELD_NUMBER = 2;
    private long height_;
    /**
     * <pre>
     * height that the transaction was mined (or -1)
     * </pre>
     *
     * <code>uint64 height = 2;</code>
     * @return The height.
     */
    @java.lang.Override
    public long getHeight() {
      return height_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!data_.isEmpty()) {
        output.writeBytes(1, data_);
      }
      if (height_ != 0L) {
        output.writeUInt64(2, height_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, data_);
      }
      if (height_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, height_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.RawTransaction)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.RawTransaction other = (cash.z.wallet.sdk.rpc.Service.RawTransaction) obj;

      if (!getData()
          .equals(other.getData())) return false;
      if (getHeight()
          != other.getHeight()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DATA_FIELD_NUMBER;
      hash = (53 * hash) + getData().hashCode();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHeight());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.RawTransaction parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.RawTransaction prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * RawTransaction contains the complete transaction data. It also optionally includes 
     * the block height in which the transaction was included.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.RawTransaction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.RawTransaction)
        cash.z.wallet.sdk.rpc.Service.RawTransactionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_RawTransaction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.RawTransaction.class, cash.z.wallet.sdk.rpc.Service.RawTransaction.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.RawTransaction.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        data_ = com.google.protobuf.ByteString.EMPTY;

        height_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.RawTransaction getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.RawTransaction.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.RawTransaction build() {
        cash.z.wallet.sdk.rpc.Service.RawTransaction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.RawTransaction buildPartial() {
        cash.z.wallet.sdk.rpc.Service.RawTransaction result = new cash.z.wallet.sdk.rpc.Service.RawTransaction(this);
        result.data_ = data_;
        result.height_ = height_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.RawTransaction) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.RawTransaction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.RawTransaction other) {
        if (other == cash.z.wallet.sdk.rpc.Service.RawTransaction.getDefaultInstance()) return this;
        if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
          setData(other.getData());
        }
        if (other.getHeight() != 0L) {
          setHeight(other.getHeight());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.RawTransaction parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.RawTransaction) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * exact data returned by Zcash 'getrawtransaction'
       * </pre>
       *
       * <code>bytes data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <pre>
       * exact data returned by Zcash 'getrawtransaction'
       * </pre>
       *
       * <code>bytes data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * exact data returned by Zcash 'getrawtransaction'
       * </pre>
       *
       * <code>bytes data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }

      private long height_ ;
      /**
       * <pre>
       * height that the transaction was mined (or -1)
       * </pre>
       *
       * <code>uint64 height = 2;</code>
       * @return The height.
       */
      @java.lang.Override
      public long getHeight() {
        return height_;
      }
      /**
       * <pre>
       * height that the transaction was mined (or -1)
       * </pre>
       *
       * <code>uint64 height = 2;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(long value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * height that the transaction was mined (or -1)
       * </pre>
       *
       * <code>uint64 height = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.RawTransaction)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.RawTransaction)
    private static final cash.z.wallet.sdk.rpc.Service.RawTransaction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.RawTransaction();
    }

    public static cash.z.wallet.sdk.rpc.Service.RawTransaction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RawTransaction>
        PARSER = new com.google.protobuf.AbstractParser<RawTransaction>() {
      @java.lang.Override
      public RawTransaction parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RawTransaction(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RawTransaction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RawTransaction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.RawTransaction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SendResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.SendResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 errorCode = 1;</code>
     * @return The errorCode.
     */
    int getErrorCode();

    /**
     * <code>string errorMessage = 2;</code>
     * @return The errorMessage.
     */
    java.lang.String getErrorMessage();
    /**
     * <code>string errorMessage = 2;</code>
     * @return The bytes for errorMessage.
     */
    com.google.protobuf.ByteString
        getErrorMessageBytes();
  }
  /**
   * <pre>
   * A SendResponse encodes an error code and a string. It is currently used
   * only by SendTransaction(). If error code is zero, the operation was
   * successful; if non-zero, it and the message specify the failure.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.SendResponse}
   */
  public static final class SendResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.SendResponse)
      SendResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SendResponse.newBuilder() to construct.
    private SendResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SendResponse() {
      errorMessage_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SendResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SendResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              errorCode_ = input.readInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              errorMessage_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_SendResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.SendResponse.class, cash.z.wallet.sdk.rpc.Service.SendResponse.Builder.class);
    }

    public static final int ERRORCODE_FIELD_NUMBER = 1;
    private int errorCode_;
    /**
     * <code>int32 errorCode = 1;</code>
     * @return The errorCode.
     */
    @java.lang.Override
    public int getErrorCode() {
      return errorCode_;
    }

    public static final int ERRORMESSAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object errorMessage_;
    /**
     * <code>string errorMessage = 2;</code>
     * @return The errorMessage.
     */
    @java.lang.Override
    public java.lang.String getErrorMessage() {
      java.lang.Object ref = errorMessage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        errorMessage_ = s;
        return s;
      }
    }
    /**
     * <code>string errorMessage = 2;</code>
     * @return The bytes for errorMessage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getErrorMessageBytes() {
      java.lang.Object ref = errorMessage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        errorMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (errorCode_ != 0) {
        output.writeInt32(1, errorCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, errorMessage_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (errorCode_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, errorCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(errorMessage_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, errorMessage_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.SendResponse)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.SendResponse other = (cash.z.wallet.sdk.rpc.Service.SendResponse) obj;

      if (getErrorCode()
          != other.getErrorCode()) return false;
      if (!getErrorMessage()
          .equals(other.getErrorMessage())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ERRORCODE_FIELD_NUMBER;
      hash = (53 * hash) + getErrorCode();
      hash = (37 * hash) + ERRORMESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getErrorMessage().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.SendResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.SendResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A SendResponse encodes an error code and a string. It is currently used
     * only by SendTransaction(). If error code is zero, the operation was
     * successful; if non-zero, it and the message specify the failure.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.SendResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.SendResponse)
        cash.z.wallet.sdk.rpc.Service.SendResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_SendResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.SendResponse.class, cash.z.wallet.sdk.rpc.Service.SendResponse.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.SendResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        errorCode_ = 0;

        errorMessage_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.SendResponse getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.SendResponse.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.SendResponse build() {
        cash.z.wallet.sdk.rpc.Service.SendResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.SendResponse buildPartial() {
        cash.z.wallet.sdk.rpc.Service.SendResponse result = new cash.z.wallet.sdk.rpc.Service.SendResponse(this);
        result.errorCode_ = errorCode_;
        result.errorMessage_ = errorMessage_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.SendResponse) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.SendResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.SendResponse other) {
        if (other == cash.z.wallet.sdk.rpc.Service.SendResponse.getDefaultInstance()) return this;
        if (other.getErrorCode() != 0) {
          setErrorCode(other.getErrorCode());
        }
        if (!other.getErrorMessage().isEmpty()) {
          errorMessage_ = other.errorMessage_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.SendResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.SendResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int errorCode_ ;
      /**
       * <code>int32 errorCode = 1;</code>
       * @return The errorCode.
       */
      @java.lang.Override
      public int getErrorCode() {
        return errorCode_;
      }
      /**
       * <code>int32 errorCode = 1;</code>
       * @param value The errorCode to set.
       * @return This builder for chaining.
       */
      public Builder setErrorCode(int value) {
        
        errorCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 errorCode = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrorCode() {
        
        errorCode_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object errorMessage_ = "";
      /**
       * <code>string errorMessage = 2;</code>
       * @return The errorMessage.
       */
      public java.lang.String getErrorMessage() {
        java.lang.Object ref = errorMessage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          errorMessage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string errorMessage = 2;</code>
       * @return The bytes for errorMessage.
       */
      public com.google.protobuf.ByteString
          getErrorMessageBytes() {
        java.lang.Object ref = errorMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          errorMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string errorMessage = 2;</code>
       * @param value The errorMessage to set.
       * @return This builder for chaining.
       */
      public Builder setErrorMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        errorMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string errorMessage = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrorMessage() {
        
        errorMessage_ = getDefaultInstance().getErrorMessage();
        onChanged();
        return this;
      }
      /**
       * <code>string errorMessage = 2;</code>
       * @param value The bytes for errorMessage to set.
       * @return This builder for chaining.
       */
      public Builder setErrorMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        errorMessage_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.SendResponse)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.SendResponse)
    private static final cash.z.wallet.sdk.rpc.Service.SendResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.SendResponse();
    }

    public static cash.z.wallet.sdk.rpc.Service.SendResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SendResponse>
        PARSER = new com.google.protobuf.AbstractParser<SendResponse>() {
      @java.lang.Override
      public SendResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SendResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SendResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SendResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.SendResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ChainSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.ChainSpec)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Chainspec is a placeholder to allow specification of a particular chain fork.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.ChainSpec}
   */
  public static final class ChainSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.ChainSpec)
      ChainSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ChainSpec.newBuilder() to construct.
    private ChainSpec(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ChainSpec() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ChainSpec();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ChainSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_ChainSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.ChainSpec.class, cash.z.wallet.sdk.rpc.Service.ChainSpec.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.ChainSpec)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.ChainSpec other = (cash.z.wallet.sdk.rpc.Service.ChainSpec) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.ChainSpec parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.ChainSpec prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Chainspec is a placeholder to allow specification of a particular chain fork.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.ChainSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.ChainSpec)
        cash.z.wallet.sdk.rpc.Service.ChainSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_ChainSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.ChainSpec.class, cash.z.wallet.sdk.rpc.Service.ChainSpec.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.ChainSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.ChainSpec getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.ChainSpec.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.ChainSpec build() {
        cash.z.wallet.sdk.rpc.Service.ChainSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.ChainSpec buildPartial() {
        cash.z.wallet.sdk.rpc.Service.ChainSpec result = new cash.z.wallet.sdk.rpc.Service.ChainSpec(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.ChainSpec) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.ChainSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.ChainSpec other) {
        if (other == cash.z.wallet.sdk.rpc.Service.ChainSpec.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.ChainSpec parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.ChainSpec) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.ChainSpec)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.ChainSpec)
    private static final cash.z.wallet.sdk.rpc.Service.ChainSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.ChainSpec();
    }

    public static cash.z.wallet.sdk.rpc.Service.ChainSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ChainSpec>
        PARSER = new com.google.protobuf.AbstractParser<ChainSpec>() {
      @java.lang.Override
      public ChainSpec parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ChainSpec(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ChainSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ChainSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.ChainSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EmptyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.Empty)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Empty is for gRPCs that take no arguments, currently only GetLightdInfo.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.Empty}
   */
  public static final class Empty extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.Empty)
      EmptyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Empty.newBuilder() to construct.
    private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Empty() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Empty();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Empty(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Empty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.Empty.class, cash.z.wallet.sdk.rpc.Service.Empty.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.Empty)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.Empty other = (cash.z.wallet.sdk.rpc.Service.Empty) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Empty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.Empty prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Empty is for gRPCs that take no arguments, currently only GetLightdInfo.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.Empty}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.Empty)
        cash.z.wallet.sdk.rpc.Service.EmptyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Empty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.Empty.class, cash.z.wallet.sdk.rpc.Service.Empty.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.Empty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Empty getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.Empty.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Empty build() {
        cash.z.wallet.sdk.rpc.Service.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Empty buildPartial() {
        cash.z.wallet.sdk.rpc.Service.Empty result = new cash.z.wallet.sdk.rpc.Service.Empty(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.Empty) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.Empty)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.Empty other) {
        if (other == cash.z.wallet.sdk.rpc.Service.Empty.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.Empty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.Empty) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.Empty)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.Empty)
    private static final cash.z.wallet.sdk.rpc.Service.Empty DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.Empty();
    }

    public static cash.z.wallet.sdk.rpc.Service.Empty getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Empty>
        PARSER = new com.google.protobuf.AbstractParser<Empty>() {
      @java.lang.Override
      public Empty parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Empty(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Empty> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Empty> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.Empty getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LightdInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.LightdInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string version = 1;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <code>string vendor = 2;</code>
     * @return The vendor.
     */
    java.lang.String getVendor();
    /**
     * <code>string vendor = 2;</code>
     * @return The bytes for vendor.
     */
    com.google.protobuf.ByteString
        getVendorBytes();

    /**
     * <pre>
     * true
     * </pre>
     *
     * <code>bool taddrSupport = 3;</code>
     * @return The taddrSupport.
     */
    boolean getTaddrSupport();

    /**
     * <pre>
     * either "main" or "test"
     * </pre>
     *
     * <code>string chainName = 4;</code>
     * @return The chainName.
     */
    java.lang.String getChainName();
    /**
     * <pre>
     * either "main" or "test"
     * </pre>
     *
     * <code>string chainName = 4;</code>
     * @return The bytes for chainName.
     */
    com.google.protobuf.ByteString
        getChainNameBytes();

    /**
     * <pre>
     * depends on mainnet or testnet
     * </pre>
     *
     * <code>uint64 saplingActivationHeight = 5;</code>
     * @return The saplingActivationHeight.
     */
    long getSaplingActivationHeight();

    /**
     * <pre>
     * protocol identifier, see consensus/upgrades.cpp
     * </pre>
     *
     * <code>string consensusBranchId = 6;</code>
     * @return The consensusBranchId.
     */
    java.lang.String getConsensusBranchId();
    /**
     * <pre>
     * protocol identifier, see consensus/upgrades.cpp
     * </pre>
     *
     * <code>string consensusBranchId = 6;</code>
     * @return The bytes for consensusBranchId.
     */
    com.google.protobuf.ByteString
        getConsensusBranchIdBytes();

    /**
     * <pre>
     * latest block on the best chain
     * </pre>
     *
     * <code>uint64 blockHeight = 7;</code>
     * @return The blockHeight.
     */
    long getBlockHeight();

    /**
     * <code>string gitCommit = 8;</code>
     * @return The gitCommit.
     */
    java.lang.String getGitCommit();
    /**
     * <code>string gitCommit = 8;</code>
     * @return The bytes for gitCommit.
     */
    com.google.protobuf.ByteString
        getGitCommitBytes();

    /**
     * <code>string branch = 9;</code>
     * @return The branch.
     */
    java.lang.String getBranch();
    /**
     * <code>string branch = 9;</code>
     * @return The bytes for branch.
     */
    com.google.protobuf.ByteString
        getBranchBytes();

    /**
     * <code>string buildDate = 10;</code>
     * @return The buildDate.
     */
    java.lang.String getBuildDate();
    /**
     * <code>string buildDate = 10;</code>
     * @return The bytes for buildDate.
     */
    com.google.protobuf.ByteString
        getBuildDateBytes();

    /**
     * <code>string buildUser = 11;</code>
     * @return The buildUser.
     */
    java.lang.String getBuildUser();
    /**
     * <code>string buildUser = 11;</code>
     * @return The bytes for buildUser.
     */
    com.google.protobuf.ByteString
        getBuildUserBytes();

    /**
     * <pre>
     * less than tip height if pirated is syncing
     * </pre>
     *
     * <code>uint64 estimatedHeight = 12;</code>
     * @return The estimatedHeight.
     */
    long getEstimatedHeight();

    /**
     * <pre>
     * example: "v4.1.1-877212414"
     * </pre>
     *
     * <code>string piratedBuild = 13;</code>
     * @return The piratedBuild.
     */
    java.lang.String getPiratedBuild();
    /**
     * <pre>
     * example: "v4.1.1-877212414"
     * </pre>
     *
     * <code>string piratedBuild = 13;</code>
     * @return The bytes for piratedBuild.
     */
    com.google.protobuf.ByteString
        getPiratedBuildBytes();

    /**
     * <pre>
     * example: "/MagicBean:4.1.1/"
     * </pre>
     *
     * <code>string piratedSubversion = 14;</code>
     * @return The piratedSubversion.
     */
    java.lang.String getPiratedSubversion();
    /**
     * <pre>
     * example: "/MagicBean:4.1.1/"
     * </pre>
     *
     * <code>string piratedSubversion = 14;</code>
     * @return The bytes for piratedSubversion.
     */
    com.google.protobuf.ByteString
        getPiratedSubversionBytes();
  }
  /**
   * <pre>
   * LightdInfo returns various information about this lightwalletd instance
   * and the state of the blockchain.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.LightdInfo}
   */
  public static final class LightdInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.LightdInfo)
      LightdInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LightdInfo.newBuilder() to construct.
    private LightdInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LightdInfo() {
      version_ = "";
      vendor_ = "";
      chainName_ = "";
      consensusBranchId_ = "";
      gitCommit_ = "";
      branch_ = "";
      buildDate_ = "";
      buildUser_ = "";
      piratedBuild_ = "";
      piratedSubversion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LightdInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LightdInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              vendor_ = s;
              break;
            }
            case 24: {

              taddrSupport_ = input.readBool();
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              chainName_ = s;
              break;
            }
            case 40: {

              saplingActivationHeight_ = input.readUInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              consensusBranchId_ = s;
              break;
            }
            case 56: {

              blockHeight_ = input.readUInt64();
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();

              gitCommit_ = s;
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();

              branch_ = s;
              break;
            }
            case 82: {
              java.lang.String s = input.readStringRequireUtf8();

              buildDate_ = s;
              break;
            }
            case 90: {
              java.lang.String s = input.readStringRequireUtf8();

              buildUser_ = s;
              break;
            }
            case 96: {

              estimatedHeight_ = input.readUInt64();
              break;
            }
            case 106: {
              java.lang.String s = input.readStringRequireUtf8();

              piratedBuild_ = s;
              break;
            }
            case 114: {
              java.lang.String s = input.readStringRequireUtf8();

              piratedSubversion_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_LightdInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.LightdInfo.class, cash.z.wallet.sdk.rpc.Service.LightdInfo.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private volatile java.lang.Object version_;
    /**
     * <code>string version = 1;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VENDOR_FIELD_NUMBER = 2;
    private volatile java.lang.Object vendor_;
    /**
     * <code>string vendor = 2;</code>
     * @return The vendor.
     */
    @java.lang.Override
    public java.lang.String getVendor() {
      java.lang.Object ref = vendor_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        vendor_ = s;
        return s;
      }
    }
    /**
     * <code>string vendor = 2;</code>
     * @return The bytes for vendor.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVendorBytes() {
      java.lang.Object ref = vendor_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        vendor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TADDRSUPPORT_FIELD_NUMBER = 3;
    private boolean taddrSupport_;
    /**
     * <pre>
     * true
     * </pre>
     *
     * <code>bool taddrSupport = 3;</code>
     * @return The taddrSupport.
     */
    @java.lang.Override
    public boolean getTaddrSupport() {
      return taddrSupport_;
    }

    public static final int CHAINNAME_FIELD_NUMBER = 4;
    private volatile java.lang.Object chainName_;
    /**
     * <pre>
     * either "main" or "test"
     * </pre>
     *
     * <code>string chainName = 4;</code>
     * @return The chainName.
     */
    @java.lang.Override
    public java.lang.String getChainName() {
      java.lang.Object ref = chainName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        chainName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * either "main" or "test"
     * </pre>
     *
     * <code>string chainName = 4;</code>
     * @return The bytes for chainName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getChainNameBytes() {
      java.lang.Object ref = chainName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chainName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SAPLINGACTIVATIONHEIGHT_FIELD_NUMBER = 5;
    private long saplingActivationHeight_;
    /**
     * <pre>
     * depends on mainnet or testnet
     * </pre>
     *
     * <code>uint64 saplingActivationHeight = 5;</code>
     * @return The saplingActivationHeight.
     */
    @java.lang.Override
    public long getSaplingActivationHeight() {
      return saplingActivationHeight_;
    }

    public static final int CONSENSUSBRANCHID_FIELD_NUMBER = 6;
    private volatile java.lang.Object consensusBranchId_;
    /**
     * <pre>
     * protocol identifier, see consensus/upgrades.cpp
     * </pre>
     *
     * <code>string consensusBranchId = 6;</code>
     * @return The consensusBranchId.
     */
    @java.lang.Override
    public java.lang.String getConsensusBranchId() {
      java.lang.Object ref = consensusBranchId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        consensusBranchId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * protocol identifier, see consensus/upgrades.cpp
     * </pre>
     *
     * <code>string consensusBranchId = 6;</code>
     * @return The bytes for consensusBranchId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConsensusBranchIdBytes() {
      java.lang.Object ref = consensusBranchId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        consensusBranchId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BLOCKHEIGHT_FIELD_NUMBER = 7;
    private long blockHeight_;
    /**
     * <pre>
     * latest block on the best chain
     * </pre>
     *
     * <code>uint64 blockHeight = 7;</code>
     * @return The blockHeight.
     */
    @java.lang.Override
    public long getBlockHeight() {
      return blockHeight_;
    }

    public static final int GITCOMMIT_FIELD_NUMBER = 8;
    private volatile java.lang.Object gitCommit_;
    /**
     * <code>string gitCommit = 8;</code>
     * @return The gitCommit.
     */
    @java.lang.Override
    public java.lang.String getGitCommit() {
      java.lang.Object ref = gitCommit_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        gitCommit_ = s;
        return s;
      }
    }
    /**
     * <code>string gitCommit = 8;</code>
     * @return The bytes for gitCommit.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGitCommitBytes() {
      java.lang.Object ref = gitCommit_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gitCommit_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BRANCH_FIELD_NUMBER = 9;
    private volatile java.lang.Object branch_;
    /**
     * <code>string branch = 9;</code>
     * @return The branch.
     */
    @java.lang.Override
    public java.lang.String getBranch() {
      java.lang.Object ref = branch_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        branch_ = s;
        return s;
      }
    }
    /**
     * <code>string branch = 9;</code>
     * @return The bytes for branch.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBranchBytes() {
      java.lang.Object ref = branch_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        branch_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUILDDATE_FIELD_NUMBER = 10;
    private volatile java.lang.Object buildDate_;
    /**
     * <code>string buildDate = 10;</code>
     * @return The buildDate.
     */
    @java.lang.Override
    public java.lang.String getBuildDate() {
      java.lang.Object ref = buildDate_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        buildDate_ = s;
        return s;
      }
    }
    /**
     * <code>string buildDate = 10;</code>
     * @return The bytes for buildDate.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBuildDateBytes() {
      java.lang.Object ref = buildDate_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        buildDate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUILDUSER_FIELD_NUMBER = 11;
    private volatile java.lang.Object buildUser_;
    /**
     * <code>string buildUser = 11;</code>
     * @return The buildUser.
     */
    @java.lang.Override
    public java.lang.String getBuildUser() {
      java.lang.Object ref = buildUser_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        buildUser_ = s;
        return s;
      }
    }
    /**
     * <code>string buildUser = 11;</code>
     * @return The bytes for buildUser.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBuildUserBytes() {
      java.lang.Object ref = buildUser_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        buildUser_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ESTIMATEDHEIGHT_FIELD_NUMBER = 12;
    private long estimatedHeight_;
    /**
     * <pre>
     * less than tip height if pirated is syncing
     * </pre>
     *
     * <code>uint64 estimatedHeight = 12;</code>
     * @return The estimatedHeight.
     */
    @java.lang.Override
    public long getEstimatedHeight() {
      return estimatedHeight_;
    }

    public static final int PIRATEDBUILD_FIELD_NUMBER = 13;
    private volatile java.lang.Object piratedBuild_;
    /**
     * <pre>
     * example: "v4.1.1-877212414"
     * </pre>
     *
     * <code>string piratedBuild = 13;</code>
     * @return The piratedBuild.
     */
    @java.lang.Override
    public java.lang.String getPiratedBuild() {
      java.lang.Object ref = piratedBuild_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        piratedBuild_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * example: "v4.1.1-877212414"
     * </pre>
     *
     * <code>string piratedBuild = 13;</code>
     * @return The bytes for piratedBuild.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPiratedBuildBytes() {
      java.lang.Object ref = piratedBuild_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        piratedBuild_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PIRATEDSUBVERSION_FIELD_NUMBER = 14;
    private volatile java.lang.Object piratedSubversion_;
    /**
     * <pre>
     * example: "/MagicBean:4.1.1/"
     * </pre>
     *
     * <code>string piratedSubversion = 14;</code>
     * @return The piratedSubversion.
     */
    @java.lang.Override
    public java.lang.String getPiratedSubversion() {
      java.lang.Object ref = piratedSubversion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        piratedSubversion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * example: "/MagicBean:4.1.1/"
     * </pre>
     *
     * <code>string piratedSubversion = 14;</code>
     * @return The bytes for piratedSubversion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPiratedSubversionBytes() {
      java.lang.Object ref = piratedSubversion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        piratedSubversion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(vendor_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, vendor_);
      }
      if (taddrSupport_ != false) {
        output.writeBool(3, taddrSupport_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(chainName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, chainName_);
      }
      if (saplingActivationHeight_ != 0L) {
        output.writeUInt64(5, saplingActivationHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(consensusBranchId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, consensusBranchId_);
      }
      if (blockHeight_ != 0L) {
        output.writeUInt64(7, blockHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gitCommit_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, gitCommit_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(branch_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, branch_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildDate_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, buildDate_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildUser_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, buildUser_);
      }
      if (estimatedHeight_ != 0L) {
        output.writeUInt64(12, estimatedHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(piratedBuild_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, piratedBuild_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(piratedSubversion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, piratedSubversion_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(vendor_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, vendor_);
      }
      if (taddrSupport_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, taddrSupport_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(chainName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, chainName_);
      }
      if (saplingActivationHeight_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, saplingActivationHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(consensusBranchId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, consensusBranchId_);
      }
      if (blockHeight_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(7, blockHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gitCommit_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, gitCommit_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(branch_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, branch_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildDate_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, buildDate_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildUser_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, buildUser_);
      }
      if (estimatedHeight_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(12, estimatedHeight_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(piratedBuild_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, piratedBuild_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(piratedSubversion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, piratedSubversion_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.LightdInfo)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.LightdInfo other = (cash.z.wallet.sdk.rpc.Service.LightdInfo) obj;

      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getVendor()
          .equals(other.getVendor())) return false;
      if (getTaddrSupport()
          != other.getTaddrSupport()) return false;
      if (!getChainName()
          .equals(other.getChainName())) return false;
      if (getSaplingActivationHeight()
          != other.getSaplingActivationHeight()) return false;
      if (!getConsensusBranchId()
          .equals(other.getConsensusBranchId())) return false;
      if (getBlockHeight()
          != other.getBlockHeight()) return false;
      if (!getGitCommit()
          .equals(other.getGitCommit())) return false;
      if (!getBranch()
          .equals(other.getBranch())) return false;
      if (!getBuildDate()
          .equals(other.getBuildDate())) return false;
      if (!getBuildUser()
          .equals(other.getBuildUser())) return false;
      if (getEstimatedHeight()
          != other.getEstimatedHeight()) return false;
      if (!getPiratedBuild()
          .equals(other.getPiratedBuild())) return false;
      if (!getPiratedSubversion()
          .equals(other.getPiratedSubversion())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + VENDOR_FIELD_NUMBER;
      hash = (53 * hash) + getVendor().hashCode();
      hash = (37 * hash) + TADDRSUPPORT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getTaddrSupport());
      hash = (37 * hash) + CHAINNAME_FIELD_NUMBER;
      hash = (53 * hash) + getChainName().hashCode();
      hash = (37 * hash) + SAPLINGACTIVATIONHEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSaplingActivationHeight());
      hash = (37 * hash) + CONSENSUSBRANCHID_FIELD_NUMBER;
      hash = (53 * hash) + getConsensusBranchId().hashCode();
      hash = (37 * hash) + BLOCKHEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBlockHeight());
      hash = (37 * hash) + GITCOMMIT_FIELD_NUMBER;
      hash = (53 * hash) + getGitCommit().hashCode();
      hash = (37 * hash) + BRANCH_FIELD_NUMBER;
      hash = (53 * hash) + getBranch().hashCode();
      hash = (37 * hash) + BUILDDATE_FIELD_NUMBER;
      hash = (53 * hash) + getBuildDate().hashCode();
      hash = (37 * hash) + BUILDUSER_FIELD_NUMBER;
      hash = (53 * hash) + getBuildUser().hashCode();
      hash = (37 * hash) + ESTIMATEDHEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEstimatedHeight());
      hash = (37 * hash) + PIRATEDBUILD_FIELD_NUMBER;
      hash = (53 * hash) + getPiratedBuild().hashCode();
      hash = (37 * hash) + PIRATEDSUBVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getPiratedSubversion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.LightdInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.LightdInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * LightdInfo returns various information about this lightwalletd instance
     * and the state of the blockchain.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.LightdInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.LightdInfo)
        cash.z.wallet.sdk.rpc.Service.LightdInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_LightdInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.LightdInfo.class, cash.z.wallet.sdk.rpc.Service.LightdInfo.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.LightdInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = "";

        vendor_ = "";

        taddrSupport_ = false;

        chainName_ = "";

        saplingActivationHeight_ = 0L;

        consensusBranchId_ = "";

        blockHeight_ = 0L;

        gitCommit_ = "";

        branch_ = "";

        buildDate_ = "";

        buildUser_ = "";

        estimatedHeight_ = 0L;

        piratedBuild_ = "";

        piratedSubversion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.LightdInfo getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.LightdInfo.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.LightdInfo build() {
        cash.z.wallet.sdk.rpc.Service.LightdInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.LightdInfo buildPartial() {
        cash.z.wallet.sdk.rpc.Service.LightdInfo result = new cash.z.wallet.sdk.rpc.Service.LightdInfo(this);
        result.version_ = version_;
        result.vendor_ = vendor_;
        result.taddrSupport_ = taddrSupport_;
        result.chainName_ = chainName_;
        result.saplingActivationHeight_ = saplingActivationHeight_;
        result.consensusBranchId_ = consensusBranchId_;
        result.blockHeight_ = blockHeight_;
        result.gitCommit_ = gitCommit_;
        result.branch_ = branch_;
        result.buildDate_ = buildDate_;
        result.buildUser_ = buildUser_;
        result.estimatedHeight_ = estimatedHeight_;
        result.piratedBuild_ = piratedBuild_;
        result.piratedSubversion_ = piratedSubversion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.LightdInfo) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.LightdInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.LightdInfo other) {
        if (other == cash.z.wallet.sdk.rpc.Service.LightdInfo.getDefaultInstance()) return this;
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getVendor().isEmpty()) {
          vendor_ = other.vendor_;
          onChanged();
        }
        if (other.getTaddrSupport() != false) {
          setTaddrSupport(other.getTaddrSupport());
        }
        if (!other.getChainName().isEmpty()) {
          chainName_ = other.chainName_;
          onChanged();
        }
        if (other.getSaplingActivationHeight() != 0L) {
          setSaplingActivationHeight(other.getSaplingActivationHeight());
        }
        if (!other.getConsensusBranchId().isEmpty()) {
          consensusBranchId_ = other.consensusBranchId_;
          onChanged();
        }
        if (other.getBlockHeight() != 0L) {
          setBlockHeight(other.getBlockHeight());
        }
        if (!other.getGitCommit().isEmpty()) {
          gitCommit_ = other.gitCommit_;
          onChanged();
        }
        if (!other.getBranch().isEmpty()) {
          branch_ = other.branch_;
          onChanged();
        }
        if (!other.getBuildDate().isEmpty()) {
          buildDate_ = other.buildDate_;
          onChanged();
        }
        if (!other.getBuildUser().isEmpty()) {
          buildUser_ = other.buildUser_;
          onChanged();
        }
        if (other.getEstimatedHeight() != 0L) {
          setEstimatedHeight(other.getEstimatedHeight());
        }
        if (!other.getPiratedBuild().isEmpty()) {
          piratedBuild_ = other.piratedBuild_;
          onChanged();
        }
        if (!other.getPiratedSubversion().isEmpty()) {
          piratedSubversion_ = other.piratedSubversion_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.LightdInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.LightdInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <code>string version = 1;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string version = 1;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string version = 1;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <code>string version = 1;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object vendor_ = "";
      /**
       * <code>string vendor = 2;</code>
       * @return The vendor.
       */
      public java.lang.String getVendor() {
        java.lang.Object ref = vendor_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          vendor_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string vendor = 2;</code>
       * @return The bytes for vendor.
       */
      public com.google.protobuf.ByteString
          getVendorBytes() {
        java.lang.Object ref = vendor_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vendor_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string vendor = 2;</code>
       * @param value The vendor to set.
       * @return This builder for chaining.
       */
      public Builder setVendor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        vendor_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string vendor = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVendor() {
        
        vendor_ = getDefaultInstance().getVendor();
        onChanged();
        return this;
      }
      /**
       * <code>string vendor = 2;</code>
       * @param value The bytes for vendor to set.
       * @return This builder for chaining.
       */
      public Builder setVendorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        vendor_ = value;
        onChanged();
        return this;
      }

      private boolean taddrSupport_ ;
      /**
       * <pre>
       * true
       * </pre>
       *
       * <code>bool taddrSupport = 3;</code>
       * @return The taddrSupport.
       */
      @java.lang.Override
      public boolean getTaddrSupport() {
        return taddrSupport_;
      }
      /**
       * <pre>
       * true
       * </pre>
       *
       * <code>bool taddrSupport = 3;</code>
       * @param value The taddrSupport to set.
       * @return This builder for chaining.
       */
      public Builder setTaddrSupport(boolean value) {
        
        taddrSupport_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * true
       * </pre>
       *
       * <code>bool taddrSupport = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTaddrSupport() {
        
        taddrSupport_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object chainName_ = "";
      /**
       * <pre>
       * either "main" or "test"
       * </pre>
       *
       * <code>string chainName = 4;</code>
       * @return The chainName.
       */
      public java.lang.String getChainName() {
        java.lang.Object ref = chainName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          chainName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * either "main" or "test"
       * </pre>
       *
       * <code>string chainName = 4;</code>
       * @return The bytes for chainName.
       */
      public com.google.protobuf.ByteString
          getChainNameBytes() {
        java.lang.Object ref = chainName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chainName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * either "main" or "test"
       * </pre>
       *
       * <code>string chainName = 4;</code>
       * @param value The chainName to set.
       * @return This builder for chaining.
       */
      public Builder setChainName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        chainName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * either "main" or "test"
       * </pre>
       *
       * <code>string chainName = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearChainName() {
        
        chainName_ = getDefaultInstance().getChainName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * either "main" or "test"
       * </pre>
       *
       * <code>string chainName = 4;</code>
       * @param value The bytes for chainName to set.
       * @return This builder for chaining.
       */
      public Builder setChainNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        chainName_ = value;
        onChanged();
        return this;
      }

      private long saplingActivationHeight_ ;
      /**
       * <pre>
       * depends on mainnet or testnet
       * </pre>
       *
       * <code>uint64 saplingActivationHeight = 5;</code>
       * @return The saplingActivationHeight.
       */
      @java.lang.Override
      public long getSaplingActivationHeight() {
        return saplingActivationHeight_;
      }
      /**
       * <pre>
       * depends on mainnet or testnet
       * </pre>
       *
       * <code>uint64 saplingActivationHeight = 5;</code>
       * @param value The saplingActivationHeight to set.
       * @return This builder for chaining.
       */
      public Builder setSaplingActivationHeight(long value) {
        
        saplingActivationHeight_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * depends on mainnet or testnet
       * </pre>
       *
       * <code>uint64 saplingActivationHeight = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSaplingActivationHeight() {
        
        saplingActivationHeight_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object consensusBranchId_ = "";
      /**
       * <pre>
       * protocol identifier, see consensus/upgrades.cpp
       * </pre>
       *
       * <code>string consensusBranchId = 6;</code>
       * @return The consensusBranchId.
       */
      public java.lang.String getConsensusBranchId() {
        java.lang.Object ref = consensusBranchId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          consensusBranchId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * protocol identifier, see consensus/upgrades.cpp
       * </pre>
       *
       * <code>string consensusBranchId = 6;</code>
       * @return The bytes for consensusBranchId.
       */
      public com.google.protobuf.ByteString
          getConsensusBranchIdBytes() {
        java.lang.Object ref = consensusBranchId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          consensusBranchId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * protocol identifier, see consensus/upgrades.cpp
       * </pre>
       *
       * <code>string consensusBranchId = 6;</code>
       * @param value The consensusBranchId to set.
       * @return This builder for chaining.
       */
      public Builder setConsensusBranchId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        consensusBranchId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protocol identifier, see consensus/upgrades.cpp
       * </pre>
       *
       * <code>string consensusBranchId = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearConsensusBranchId() {
        
        consensusBranchId_ = getDefaultInstance().getConsensusBranchId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protocol identifier, see consensus/upgrades.cpp
       * </pre>
       *
       * <code>string consensusBranchId = 6;</code>
       * @param value The bytes for consensusBranchId to set.
       * @return This builder for chaining.
       */
      public Builder setConsensusBranchIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        consensusBranchId_ = value;
        onChanged();
        return this;
      }

      private long blockHeight_ ;
      /**
       * <pre>
       * latest block on the best chain
       * </pre>
       *
       * <code>uint64 blockHeight = 7;</code>
       * @return The blockHeight.
       */
      @java.lang.Override
      public long getBlockHeight() {
        return blockHeight_;
      }
      /**
       * <pre>
       * latest block on the best chain
       * </pre>
       *
       * <code>uint64 blockHeight = 7;</code>
       * @param value The blockHeight to set.
       * @return This builder for chaining.
       */
      public Builder setBlockHeight(long value) {
        
        blockHeight_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * latest block on the best chain
       * </pre>
       *
       * <code>uint64 blockHeight = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearBlockHeight() {
        
        blockHeight_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object gitCommit_ = "";
      /**
       * <code>string gitCommit = 8;</code>
       * @return The gitCommit.
       */
      public java.lang.String getGitCommit() {
        java.lang.Object ref = gitCommit_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          gitCommit_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string gitCommit = 8;</code>
       * @return The bytes for gitCommit.
       */
      public com.google.protobuf.ByteString
          getGitCommitBytes() {
        java.lang.Object ref = gitCommit_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gitCommit_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string gitCommit = 8;</code>
       * @param value The gitCommit to set.
       * @return This builder for chaining.
       */
      public Builder setGitCommit(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        gitCommit_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string gitCommit = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearGitCommit() {
        
        gitCommit_ = getDefaultInstance().getGitCommit();
        onChanged();
        return this;
      }
      /**
       * <code>string gitCommit = 8;</code>
       * @param value The bytes for gitCommit to set.
       * @return This builder for chaining.
       */
      public Builder setGitCommitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        gitCommit_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object branch_ = "";
      /**
       * <code>string branch = 9;</code>
       * @return The branch.
       */
      public java.lang.String getBranch() {
        java.lang.Object ref = branch_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          branch_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string branch = 9;</code>
       * @return The bytes for branch.
       */
      public com.google.protobuf.ByteString
          getBranchBytes() {
        java.lang.Object ref = branch_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          branch_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string branch = 9;</code>
       * @param value The branch to set.
       * @return This builder for chaining.
       */
      public Builder setBranch(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        branch_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string branch = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearBranch() {
        
        branch_ = getDefaultInstance().getBranch();
        onChanged();
        return this;
      }
      /**
       * <code>string branch = 9;</code>
       * @param value The bytes for branch to set.
       * @return This builder for chaining.
       */
      public Builder setBranchBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        branch_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object buildDate_ = "";
      /**
       * <code>string buildDate = 10;</code>
       * @return The buildDate.
       */
      public java.lang.String getBuildDate() {
        java.lang.Object ref = buildDate_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          buildDate_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string buildDate = 10;</code>
       * @return The bytes for buildDate.
       */
      public com.google.protobuf.ByteString
          getBuildDateBytes() {
        java.lang.Object ref = buildDate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          buildDate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string buildDate = 10;</code>
       * @param value The buildDate to set.
       * @return This builder for chaining.
       */
      public Builder setBuildDate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        buildDate_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string buildDate = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuildDate() {
        
        buildDate_ = getDefaultInstance().getBuildDate();
        onChanged();
        return this;
      }
      /**
       * <code>string buildDate = 10;</code>
       * @param value The bytes for buildDate to set.
       * @return This builder for chaining.
       */
      public Builder setBuildDateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        buildDate_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object buildUser_ = "";
      /**
       * <code>string buildUser = 11;</code>
       * @return The buildUser.
       */
      public java.lang.String getBuildUser() {
        java.lang.Object ref = buildUser_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          buildUser_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string buildUser = 11;</code>
       * @return The bytes for buildUser.
       */
      public com.google.protobuf.ByteString
          getBuildUserBytes() {
        java.lang.Object ref = buildUser_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          buildUser_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string buildUser = 11;</code>
       * @param value The buildUser to set.
       * @return This builder for chaining.
       */
      public Builder setBuildUser(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        buildUser_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string buildUser = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuildUser() {
        
        buildUser_ = getDefaultInstance().getBuildUser();
        onChanged();
        return this;
      }
      /**
       * <code>string buildUser = 11;</code>
       * @param value The bytes for buildUser to set.
       * @return This builder for chaining.
       */
      public Builder setBuildUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        buildUser_ = value;
        onChanged();
        return this;
      }

      private long estimatedHeight_ ;
      /**
       * <pre>
       * less than tip height if pirated is syncing
       * </pre>
       *
       * <code>uint64 estimatedHeight = 12;</code>
       * @return The estimatedHeight.
       */
      @java.lang.Override
      public long getEstimatedHeight() {
        return estimatedHeight_;
      }
      /**
       * <pre>
       * less than tip height if pirated is syncing
       * </pre>
       *
       * <code>uint64 estimatedHeight = 12;</code>
       * @param value The estimatedHeight to set.
       * @return This builder for chaining.
       */
      public Builder setEstimatedHeight(long value) {
        
        estimatedHeight_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * less than tip height if pirated is syncing
       * </pre>
       *
       * <code>uint64 estimatedHeight = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearEstimatedHeight() {
        
        estimatedHeight_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object piratedBuild_ = "";
      /**
       * <pre>
       * example: "v4.1.1-877212414"
       * </pre>
       *
       * <code>string piratedBuild = 13;</code>
       * @return The piratedBuild.
       */
      public java.lang.String getPiratedBuild() {
        java.lang.Object ref = piratedBuild_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          piratedBuild_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * example: "v4.1.1-877212414"
       * </pre>
       *
       * <code>string piratedBuild = 13;</code>
       * @return The bytes for piratedBuild.
       */
      public com.google.protobuf.ByteString
          getPiratedBuildBytes() {
        java.lang.Object ref = piratedBuild_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          piratedBuild_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * example: "v4.1.1-877212414"
       * </pre>
       *
       * <code>string piratedBuild = 13;</code>
       * @param value The piratedBuild to set.
       * @return This builder for chaining.
       */
      public Builder setPiratedBuild(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        piratedBuild_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * example: "v4.1.1-877212414"
       * </pre>
       *
       * <code>string piratedBuild = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearPiratedBuild() {
        
        piratedBuild_ = getDefaultInstance().getPiratedBuild();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * example: "v4.1.1-877212414"
       * </pre>
       *
       * <code>string piratedBuild = 13;</code>
       * @param value The bytes for piratedBuild to set.
       * @return This builder for chaining.
       */
      public Builder setPiratedBuildBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        piratedBuild_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object piratedSubversion_ = "";
      /**
       * <pre>
       * example: "/MagicBean:4.1.1/"
       * </pre>
       *
       * <code>string piratedSubversion = 14;</code>
       * @return The piratedSubversion.
       */
      public java.lang.String getPiratedSubversion() {
        java.lang.Object ref = piratedSubversion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          piratedSubversion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * example: "/MagicBean:4.1.1/"
       * </pre>
       *
       * <code>string piratedSubversion = 14;</code>
       * @return The bytes for piratedSubversion.
       */
      public com.google.protobuf.ByteString
          getPiratedSubversionBytes() {
        java.lang.Object ref = piratedSubversion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          piratedSubversion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * example: "/MagicBean:4.1.1/"
       * </pre>
       *
       * <code>string piratedSubversion = 14;</code>
       * @param value The piratedSubversion to set.
       * @return This builder for chaining.
       */
      public Builder setPiratedSubversion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        piratedSubversion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * example: "/MagicBean:4.1.1/"
       * </pre>
       *
       * <code>string piratedSubversion = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearPiratedSubversion() {
        
        piratedSubversion_ = getDefaultInstance().getPiratedSubversion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * example: "/MagicBean:4.1.1/"
       * </pre>
       *
       * <code>string piratedSubversion = 14;</code>
       * @param value The bytes for piratedSubversion to set.
       * @return This builder for chaining.
       */
      public Builder setPiratedSubversionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        piratedSubversion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.LightdInfo)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.LightdInfo)
    private static final cash.z.wallet.sdk.rpc.Service.LightdInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.LightdInfo();
    }

    public static cash.z.wallet.sdk.rpc.Service.LightdInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LightdInfo>
        PARSER = new com.google.protobuf.AbstractParser<LightdInfo>() {
      @java.lang.Override
      public LightdInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LightdInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<LightdInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LightdInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.LightdInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransparentAddressBlockFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * t-address
     * </pre>
     *
     * <code>string address = 1;</code>
     * @return The address.
     */
    java.lang.String getAddress();
    /**
     * <pre>
     * t-address
     * </pre>
     *
     * <code>string address = 1;</code>
     * @return The bytes for address.
     */
    com.google.protobuf.ByteString
        getAddressBytes();

    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     * @return Whether the range field is set.
     */
    boolean hasRange();
    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     * @return The range.
     */
    cash.z.wallet.sdk.rpc.Service.BlockRange getRange();
    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     */
    cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder getRangeOrBuilder();
  }
  /**
   * <pre>
   * TransparentAddressBlockFilter restricts the results to the given address
   * or block range.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter}
   */
  public static final class TransparentAddressBlockFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter)
      TransparentAddressBlockFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TransparentAddressBlockFilter.newBuilder() to construct.
    private TransparentAddressBlockFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransparentAddressBlockFilter() {
      address_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TransparentAddressBlockFilter();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TransparentAddressBlockFilter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              address_ = s;
              break;
            }
            case 18: {
              cash.z.wallet.sdk.rpc.Service.BlockRange.Builder subBuilder = null;
              if (range_ != null) {
                subBuilder = range_.toBuilder();
              }
              range_ = input.readMessage(cash.z.wallet.sdk.rpc.Service.BlockRange.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(range_);
                range_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.class, cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.Builder.class);
    }

    public static final int ADDRESS_FIELD_NUMBER = 1;
    private volatile java.lang.Object address_;
    /**
     * <pre>
     * t-address
     * </pre>
     *
     * <code>string address = 1;</code>
     * @return The address.
     */
    @java.lang.Override
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        address_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * t-address
     * </pre>
     *
     * <code>string address = 1;</code>
     * @return The bytes for address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RANGE_FIELD_NUMBER = 2;
    private cash.z.wallet.sdk.rpc.Service.BlockRange range_;
    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     * @return Whether the range field is set.
     */
    @java.lang.Override
    public boolean hasRange() {
      return range_ != null;
    }
    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     * @return The range.
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockRange getRange() {
      return range_ == null ? cash.z.wallet.sdk.rpc.Service.BlockRange.getDefaultInstance() : range_;
    }
    /**
     * <pre>
     * start, end heights
     * </pre>
     *
     * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder getRangeOrBuilder() {
      return getRange();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, address_);
      }
      if (range_ != null) {
        output.writeMessage(2, getRange());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, address_);
      }
      if (range_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRange());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter other = (cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (hasRange() != other.hasRange()) return false;
      if (hasRange()) {
        if (!getRange()
            .equals(other.getRange())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      if (hasRange()) {
        hash = (37 * hash) + RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getRange().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * TransparentAddressBlockFilter restricts the results to the given address
     * or block range.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter)
        cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.class, cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        address_ = "";

        if (rangeBuilder_ == null) {
          range_ = null;
        } else {
          range_ = null;
          rangeBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter build() {
        cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter buildPartial() {
        cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter result = new cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter(this);
        result.address_ = address_;
        if (rangeBuilder_ == null) {
          result.range_ = range_;
        } else {
          result.range_ = rangeBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter other) {
        if (other == cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter.getDefaultInstance()) return this;
        if (!other.getAddress().isEmpty()) {
          address_ = other.address_;
          onChanged();
        }
        if (other.hasRange()) {
          mergeRange(other.getRange());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object address_ = "";
      /**
       * <pre>
       * t-address
       * </pre>
       *
       * <code>string address = 1;</code>
       * @return The address.
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * t-address
       * </pre>
       *
       * <code>string address = 1;</code>
       * @return The bytes for address.
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * t-address
       * </pre>
       *
       * <code>string address = 1;</code>
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * t-address
       * </pre>
       *
       * <code>string address = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * t-address
       * </pre>
       *
       * <code>string address = 1;</code>
       * @param value The bytes for address to set.
       * @return This builder for chaining.
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        address_ = value;
        onChanged();
        return this;
      }

      private cash.z.wallet.sdk.rpc.Service.BlockRange range_;
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockRange, cash.z.wallet.sdk.rpc.Service.BlockRange.Builder, cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder> rangeBuilder_;
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       * @return Whether the range field is set.
       */
      public boolean hasRange() {
        return rangeBuilder_ != null || range_ != null;
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       * @return The range.
       */
      public cash.z.wallet.sdk.rpc.Service.BlockRange getRange() {
        if (rangeBuilder_ == null) {
          return range_ == null ? cash.z.wallet.sdk.rpc.Service.BlockRange.getDefaultInstance() : range_;
        } else {
          return rangeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public Builder setRange(cash.z.wallet.sdk.rpc.Service.BlockRange value) {
        if (rangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          range_ = value;
          onChanged();
        } else {
          rangeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public Builder setRange(
          cash.z.wallet.sdk.rpc.Service.BlockRange.Builder builderForValue) {
        if (rangeBuilder_ == null) {
          range_ = builderForValue.build();
          onChanged();
        } else {
          rangeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public Builder mergeRange(cash.z.wallet.sdk.rpc.Service.BlockRange value) {
        if (rangeBuilder_ == null) {
          if (range_ != null) {
            range_ =
              cash.z.wallet.sdk.rpc.Service.BlockRange.newBuilder(range_).mergeFrom(value).buildPartial();
          } else {
            range_ = value;
          }
          onChanged();
        } else {
          rangeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public Builder clearRange() {
        if (rangeBuilder_ == null) {
          range_ = null;
          onChanged();
        } else {
          range_ = null;
          rangeBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockRange.Builder getRangeBuilder() {
        
        onChanged();
        return getRangeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder getRangeOrBuilder() {
        if (rangeBuilder_ != null) {
          return rangeBuilder_.getMessageOrBuilder();
        } else {
          return range_ == null ?
              cash.z.wallet.sdk.rpc.Service.BlockRange.getDefaultInstance() : range_;
        }
      }
      /**
       * <pre>
       * start, end heights
       * </pre>
       *
       * <code>.cash.z.wallet.sdk.rpc.BlockRange range = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.BlockRange, cash.z.wallet.sdk.rpc.Service.BlockRange.Builder, cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder> 
          getRangeFieldBuilder() {
        if (rangeBuilder_ == null) {
          rangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              cash.z.wallet.sdk.rpc.Service.BlockRange, cash.z.wallet.sdk.rpc.Service.BlockRange.Builder, cash.z.wallet.sdk.rpc.Service.BlockRangeOrBuilder>(
                  getRange(),
                  getParentForChildren(),
                  isClean());
          range_ = null;
        }
        return rangeBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.TransparentAddressBlockFilter)
    private static final cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter();
    }

    public static cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TransparentAddressBlockFilter>
        PARSER = new com.google.protobuf.AbstractParser<TransparentAddressBlockFilter>() {
      @java.lang.Override
      public TransparentAddressBlockFilter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TransparentAddressBlockFilter(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TransparentAddressBlockFilter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TransparentAddressBlockFilter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.TransparentAddressBlockFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DurationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.Duration)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int64 intervalUs = 1;</code>
     * @return The intervalUs.
     */
    long getIntervalUs();
  }
  /**
   * <pre>
   * Duration is currently used only for testing, so that the Ping rpc
   * can simulate a delay, to create many simultaneous connections. Units
   * are microseconds.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.Duration}
   */
  public static final class Duration extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.Duration)
      DurationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Duration.newBuilder() to construct.
    private Duration(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Duration() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Duration();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Duration(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              intervalUs_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Duration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.Duration.class, cash.z.wallet.sdk.rpc.Service.Duration.Builder.class);
    }

    public static final int INTERVALUS_FIELD_NUMBER = 1;
    private long intervalUs_;
    /**
     * <code>int64 intervalUs = 1;</code>
     * @return The intervalUs.
     */
    @java.lang.Override
    public long getIntervalUs() {
      return intervalUs_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (intervalUs_ != 0L) {
        output.writeInt64(1, intervalUs_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (intervalUs_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, intervalUs_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.Duration)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.Duration other = (cash.z.wallet.sdk.rpc.Service.Duration) obj;

      if (getIntervalUs()
          != other.getIntervalUs()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + INTERVALUS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getIntervalUs());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Duration parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.Duration prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Duration is currently used only for testing, so that the Ping rpc
     * can simulate a delay, to create many simultaneous connections. Units
     * are microseconds.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.Duration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.Duration)
        cash.z.wallet.sdk.rpc.Service.DurationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Duration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.Duration.class, cash.z.wallet.sdk.rpc.Service.Duration.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.Duration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        intervalUs_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Duration getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.Duration.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Duration build() {
        cash.z.wallet.sdk.rpc.Service.Duration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Duration buildPartial() {
        cash.z.wallet.sdk.rpc.Service.Duration result = new cash.z.wallet.sdk.rpc.Service.Duration(this);
        result.intervalUs_ = intervalUs_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.Duration) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.Duration)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.Duration other) {
        if (other == cash.z.wallet.sdk.rpc.Service.Duration.getDefaultInstance()) return this;
        if (other.getIntervalUs() != 0L) {
          setIntervalUs(other.getIntervalUs());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.Duration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.Duration) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long intervalUs_ ;
      /**
       * <code>int64 intervalUs = 1;</code>
       * @return The intervalUs.
       */
      @java.lang.Override
      public long getIntervalUs() {
        return intervalUs_;
      }
      /**
       * <code>int64 intervalUs = 1;</code>
       * @param value The intervalUs to set.
       * @return This builder for chaining.
       */
      public Builder setIntervalUs(long value) {
        
        intervalUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 intervalUs = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIntervalUs() {
        
        intervalUs_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.Duration)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.Duration)
    private static final cash.z.wallet.sdk.rpc.Service.Duration DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.Duration();
    }

    public static cash.z.wallet.sdk.rpc.Service.Duration getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Duration>
        PARSER = new com.google.protobuf.AbstractParser<Duration>() {
      @java.lang.Override
      public Duration parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Duration(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Duration> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Duration> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.Duration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PingResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.PingResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int64 entry = 1;</code>
     * @return The entry.
     */
    long getEntry();

    /**
     * <code>int64 exit = 2;</code>
     * @return The exit.
     */
    long getExit();
  }
  /**
   * <pre>
   * PingResponse is used to indicate concurrency, how many Ping rpcs
   * are executing upon entry and upon exit (after the delay).
   * This rpc is used for testing only.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.PingResponse}
   */
  public static final class PingResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.PingResponse)
      PingResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PingResponse.newBuilder() to construct.
    private PingResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PingResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PingResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PingResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              entry_ = input.readInt64();
              break;
            }
            case 16: {

              exit_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_PingResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.PingResponse.class, cash.z.wallet.sdk.rpc.Service.PingResponse.Builder.class);
    }

    public static final int ENTRY_FIELD_NUMBER = 1;
    private long entry_;
    /**
     * <code>int64 entry = 1;</code>
     * @return The entry.
     */
    @java.lang.Override
    public long getEntry() {
      return entry_;
    }

    public static final int EXIT_FIELD_NUMBER = 2;
    private long exit_;
    /**
     * <code>int64 exit = 2;</code>
     * @return The exit.
     */
    @java.lang.Override
    public long getExit() {
      return exit_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (entry_ != 0L) {
        output.writeInt64(1, entry_);
      }
      if (exit_ != 0L) {
        output.writeInt64(2, exit_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (entry_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, entry_);
      }
      if (exit_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, exit_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.PingResponse)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.PingResponse other = (cash.z.wallet.sdk.rpc.Service.PingResponse) obj;

      if (getEntry()
          != other.getEntry()) return false;
      if (getExit()
          != other.getExit()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ENTRY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEntry());
      hash = (37 * hash) + EXIT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getExit());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.PingResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.PingResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * PingResponse is used to indicate concurrency, how many Ping rpcs
     * are executing upon entry and upon exit (after the delay).
     * This rpc is used for testing only.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.PingResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.PingResponse)
        cash.z.wallet.sdk.rpc.Service.PingResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_PingResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.PingResponse.class, cash.z.wallet.sdk.rpc.Service.PingResponse.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.PingResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        entry_ = 0L;

        exit_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.PingResponse getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.PingResponse.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.PingResponse build() {
        cash.z.wallet.sdk.rpc.Service.PingResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.PingResponse buildPartial() {
        cash.z.wallet.sdk.rpc.Service.PingResponse result = new cash.z.wallet.sdk.rpc.Service.PingResponse(this);
        result.entry_ = entry_;
        result.exit_ = exit_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.PingResponse) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.PingResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.PingResponse other) {
        if (other == cash.z.wallet.sdk.rpc.Service.PingResponse.getDefaultInstance()) return this;
        if (other.getEntry() != 0L) {
          setEntry(other.getEntry());
        }
        if (other.getExit() != 0L) {
          setExit(other.getExit());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.PingResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.PingResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long entry_ ;
      /**
       * <code>int64 entry = 1;</code>
       * @return The entry.
       */
      @java.lang.Override
      public long getEntry() {
        return entry_;
      }
      /**
       * <code>int64 entry = 1;</code>
       * @param value The entry to set.
       * @return This builder for chaining.
       */
      public Builder setEntry(long value) {
        
        entry_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 entry = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntry() {
        
        entry_ = 0L;
        onChanged();
        return this;
      }

      private long exit_ ;
      /**
       * <code>int64 exit = 2;</code>
       * @return The exit.
       */
      @java.lang.Override
      public long getExit() {
        return exit_;
      }
      /**
       * <code>int64 exit = 2;</code>
       * @param value The exit to set.
       * @return This builder for chaining.
       */
      public Builder setExit(long value) {
        
        exit_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 exit = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExit() {
        
        exit_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.PingResponse)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.PingResponse)
    private static final cash.z.wallet.sdk.rpc.Service.PingResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.PingResponse();
    }

    public static cash.z.wallet.sdk.rpc.Service.PingResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PingResponse>
        PARSER = new com.google.protobuf.AbstractParser<PingResponse>() {
      @java.lang.Override
      public PingResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PingResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PingResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PingResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.PingResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.Address)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string address = 1;</code>
     * @return The address.
     */
    java.lang.String getAddress();
    /**
     * <code>string address = 1;</code>
     * @return The bytes for address.
     */
    com.google.protobuf.ByteString
        getAddressBytes();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.Address}
   */
  public static final class Address extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.Address)
      AddressOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Address.newBuilder() to construct.
    private Address(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Address() {
      address_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Address();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Address(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              address_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Address_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Address_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.Address.class, cash.z.wallet.sdk.rpc.Service.Address.Builder.class);
    }

    public static final int ADDRESS_FIELD_NUMBER = 1;
    private volatile java.lang.Object address_;
    /**
     * <code>string address = 1;</code>
     * @return The address.
     */
    @java.lang.Override
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        address_ = s;
        return s;
      }
    }
    /**
     * <code>string address = 1;</code>
     * @return The bytes for address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, address_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, address_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.Address)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.Address other = (cash.z.wallet.sdk.rpc.Service.Address) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Address parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.Address prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.Address}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.Address)
        cash.z.wallet.sdk.rpc.Service.AddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Address_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Address_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.Address.class, cash.z.wallet.sdk.rpc.Service.Address.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.Address.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        address_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Address_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Address getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.Address.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Address build() {
        cash.z.wallet.sdk.rpc.Service.Address result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Address buildPartial() {
        cash.z.wallet.sdk.rpc.Service.Address result = new cash.z.wallet.sdk.rpc.Service.Address(this);
        result.address_ = address_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.Address) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.Address)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.Address other) {
        if (other == cash.z.wallet.sdk.rpc.Service.Address.getDefaultInstance()) return this;
        if (!other.getAddress().isEmpty()) {
          address_ = other.address_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.Address parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.Address) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object address_ = "";
      /**
       * <code>string address = 1;</code>
       * @return The address.
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string address = 1;</code>
       * @return The bytes for address.
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string address = 1;</code>
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string address = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string address = 1;</code>
       * @param value The bytes for address to set.
       * @return This builder for chaining.
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        address_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.Address)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.Address)
    private static final cash.z.wallet.sdk.rpc.Service.Address DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.Address();
    }

    public static cash.z.wallet.sdk.rpc.Service.Address getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Address>
        PARSER = new com.google.protobuf.AbstractParser<Address>() {
      @java.lang.Override
      public Address parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Address(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Address> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Address> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.Address getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AddressListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.AddressList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string addresses = 1;</code>
     * @return A list containing the addresses.
     */
    java.util.List<java.lang.String>
        getAddressesList();
    /**
     * <code>repeated string addresses = 1;</code>
     * @return The count of addresses.
     */
    int getAddressesCount();
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the element to return.
     * @return The addresses at the given index.
     */
    java.lang.String getAddresses(int index);
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the addresses at the given index.
     */
    com.google.protobuf.ByteString
        getAddressesBytes(int index);
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.AddressList}
   */
  public static final class AddressList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.AddressList)
      AddressListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AddressList.newBuilder() to construct.
    private AddressList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AddressList() {
      addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AddressList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AddressList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                addresses_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              addresses_.add(s);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          addresses_ = addresses_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_AddressList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.AddressList.class, cash.z.wallet.sdk.rpc.Service.AddressList.Builder.class);
    }

    public static final int ADDRESSES_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList addresses_;
    /**
     * <code>repeated string addresses = 1;</code>
     * @return A list containing the addresses.
     */
    public com.google.protobuf.ProtocolStringList
        getAddressesList() {
      return addresses_;
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @return The count of addresses.
     */
    public int getAddressesCount() {
      return addresses_.size();
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the element to return.
     * @return The addresses at the given index.
     */
    public java.lang.String getAddresses(int index) {
      return addresses_.get(index);
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the addresses at the given index.
     */
    public com.google.protobuf.ByteString
        getAddressesBytes(int index) {
      return addresses_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < addresses_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, addresses_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < addresses_.size(); i++) {
          dataSize += computeStringSizeNoTag(addresses_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAddressesList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.AddressList)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.AddressList other = (cash.z.wallet.sdk.rpc.Service.AddressList) obj;

      if (!getAddressesList()
          .equals(other.getAddressesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAddressesCount() > 0) {
        hash = (37 * hash) + ADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + getAddressesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.AddressList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.AddressList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.AddressList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.AddressList)
        cash.z.wallet.sdk.rpc.Service.AddressListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_AddressList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.AddressList.class, cash.z.wallet.sdk.rpc.Service.AddressList.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.AddressList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.AddressList getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.AddressList.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.AddressList build() {
        cash.z.wallet.sdk.rpc.Service.AddressList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.AddressList buildPartial() {
        cash.z.wallet.sdk.rpc.Service.AddressList result = new cash.z.wallet.sdk.rpc.Service.AddressList(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          addresses_ = addresses_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.addresses_ = addresses_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.AddressList) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.AddressList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.AddressList other) {
        if (other == cash.z.wallet.sdk.rpc.Service.AddressList.getDefaultInstance()) return this;
        if (!other.addresses_.isEmpty()) {
          if (addresses_.isEmpty()) {
            addresses_ = other.addresses_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureAddressesIsMutable();
            addresses_.addAll(other.addresses_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.AddressList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.AddressList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAddressesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          addresses_ = new com.google.protobuf.LazyStringArrayList(addresses_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return A list containing the addresses.
       */
      public com.google.protobuf.ProtocolStringList
          getAddressesList() {
        return addresses_.getUnmodifiableView();
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return The count of addresses.
       */
      public int getAddressesCount() {
        return addresses_.size();
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index of the element to return.
       * @return The addresses at the given index.
       */
      public java.lang.String getAddresses(int index) {
        return addresses_.get(index);
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the addresses at the given index.
       */
      public com.google.protobuf.ByteString
          getAddressesBytes(int index) {
        return addresses_.getByteString(index);
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index to set the value at.
       * @param value The addresses to set.
       * @return This builder for chaining.
       */
      public Builder setAddresses(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAddressesIsMutable();
        addresses_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param value The addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAddresses(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAddressesIsMutable();
        addresses_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param values The addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAllAddresses(
          java.lang.Iterable<java.lang.String> values) {
        ensureAddressesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, addresses_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddresses() {
        addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param value The bytes of the addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAddressesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAddressesIsMutable();
        addresses_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.AddressList)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.AddressList)
    private static final cash.z.wallet.sdk.rpc.Service.AddressList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.AddressList();
    }

    public static cash.z.wallet.sdk.rpc.Service.AddressList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AddressList>
        PARSER = new com.google.protobuf.AbstractParser<AddressList>() {
      @java.lang.Override
      public AddressList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AddressList(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AddressList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AddressList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.AddressList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BalanceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.Balance)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int64 valueZat = 1;</code>
     * @return The valueZat.
     */
    long getValueZat();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.Balance}
   */
  public static final class Balance extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.Balance)
      BalanceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Balance.newBuilder() to construct.
    private Balance(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Balance() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Balance();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Balance(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              valueZat_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Balance_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.Balance.class, cash.z.wallet.sdk.rpc.Service.Balance.Builder.class);
    }

    public static final int VALUEZAT_FIELD_NUMBER = 1;
    private long valueZat_;
    /**
     * <code>int64 valueZat = 1;</code>
     * @return The valueZat.
     */
    @java.lang.Override
    public long getValueZat() {
      return valueZat_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (valueZat_ != 0L) {
        output.writeInt64(1, valueZat_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (valueZat_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, valueZat_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.Balance)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.Balance other = (cash.z.wallet.sdk.rpc.Service.Balance) obj;

      if (getValueZat()
          != other.getValueZat()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VALUEZAT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getValueZat());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Balance parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.Balance prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.Balance}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.Balance)
        cash.z.wallet.sdk.rpc.Service.BalanceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Balance_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.Balance.class, cash.z.wallet.sdk.rpc.Service.Balance.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.Balance.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        valueZat_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Balance getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.Balance.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Balance build() {
        cash.z.wallet.sdk.rpc.Service.Balance result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Balance buildPartial() {
        cash.z.wallet.sdk.rpc.Service.Balance result = new cash.z.wallet.sdk.rpc.Service.Balance(this);
        result.valueZat_ = valueZat_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.Balance) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.Balance)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.Balance other) {
        if (other == cash.z.wallet.sdk.rpc.Service.Balance.getDefaultInstance()) return this;
        if (other.getValueZat() != 0L) {
          setValueZat(other.getValueZat());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.Balance parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.Balance) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long valueZat_ ;
      /**
       * <code>int64 valueZat = 1;</code>
       * @return The valueZat.
       */
      @java.lang.Override
      public long getValueZat() {
        return valueZat_;
      }
      /**
       * <code>int64 valueZat = 1;</code>
       * @param value The valueZat to set.
       * @return This builder for chaining.
       */
      public Builder setValueZat(long value) {
        
        valueZat_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 valueZat = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueZat() {
        
        valueZat_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.Balance)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.Balance)
    private static final cash.z.wallet.sdk.rpc.Service.Balance DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.Balance();
    }

    public static cash.z.wallet.sdk.rpc.Service.Balance getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Balance>
        PARSER = new com.google.protobuf.AbstractParser<Balance>() {
      @java.lang.Override
      public Balance parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Balance(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Balance> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Balance> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.Balance getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExcludeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.Exclude)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated bytes txid = 1;</code>
     * @return A list containing the txid.
     */
    java.util.List<com.google.protobuf.ByteString> getTxidList();
    /**
     * <code>repeated bytes txid = 1;</code>
     * @return The count of txid.
     */
    int getTxidCount();
    /**
     * <code>repeated bytes txid = 1;</code>
     * @param index The index of the element to return.
     * @return The txid at the given index.
     */
    com.google.protobuf.ByteString getTxid(int index);
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.Exclude}
   */
  public static final class Exclude extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.Exclude)
      ExcludeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Exclude.newBuilder() to construct.
    private Exclude(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Exclude() {
      txid_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Exclude();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Exclude(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                txid_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                mutable_bitField0_ |= 0x00000001;
              }
              txid_.add(input.readBytes());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          txid_ = java.util.Collections.unmodifiableList(txid_); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Exclude_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.Exclude.class, cash.z.wallet.sdk.rpc.Service.Exclude.Builder.class);
    }

    public static final int TXID_FIELD_NUMBER = 1;
    private java.util.List<com.google.protobuf.ByteString> txid_;
    /**
     * <code>repeated bytes txid = 1;</code>
     * @return A list containing the txid.
     */
    @java.lang.Override
    public java.util.List<com.google.protobuf.ByteString>
        getTxidList() {
      return txid_;
    }
    /**
     * <code>repeated bytes txid = 1;</code>
     * @return The count of txid.
     */
    public int getTxidCount() {
      return txid_.size();
    }
    /**
     * <code>repeated bytes txid = 1;</code>
     * @param index The index of the element to return.
     * @return The txid at the given index.
     */
    public com.google.protobuf.ByteString getTxid(int index) {
      return txid_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < txid_.size(); i++) {
        output.writeBytes(1, txid_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < txid_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(txid_.get(i));
        }
        size += dataSize;
        size += 1 * getTxidList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.Exclude)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.Exclude other = (cash.z.wallet.sdk.rpc.Service.Exclude) obj;

      if (!getTxidList()
          .equals(other.getTxidList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTxidCount() > 0) {
        hash = (37 * hash) + TXID_FIELD_NUMBER;
        hash = (53 * hash) + getTxidList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.Exclude parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.Exclude prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.Exclude}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.Exclude)
        cash.z.wallet.sdk.rpc.Service.ExcludeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Exclude_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.Exclude.class, cash.z.wallet.sdk.rpc.Service.Exclude.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.Exclude.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        txid_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Exclude getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.Exclude.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Exclude build() {
        cash.z.wallet.sdk.rpc.Service.Exclude result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.Exclude buildPartial() {
        cash.z.wallet.sdk.rpc.Service.Exclude result = new cash.z.wallet.sdk.rpc.Service.Exclude(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          txid_ = java.util.Collections.unmodifiableList(txid_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.txid_ = txid_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.Exclude) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.Exclude)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.Exclude other) {
        if (other == cash.z.wallet.sdk.rpc.Service.Exclude.getDefaultInstance()) return this;
        if (!other.txid_.isEmpty()) {
          if (txid_.isEmpty()) {
            txid_ = other.txid_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTxidIsMutable();
            txid_.addAll(other.txid_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.Exclude parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.Exclude) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.protobuf.ByteString> txid_ = java.util.Collections.emptyList();
      private void ensureTxidIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          txid_ = new java.util.ArrayList<com.google.protobuf.ByteString>(txid_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @return A list containing the txid.
       */
      public java.util.List<com.google.protobuf.ByteString>
          getTxidList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(txid_) : txid_;
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @return The count of txid.
       */
      public int getTxidCount() {
        return txid_.size();
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @param index The index of the element to return.
       * @return The txid at the given index.
       */
      public com.google.protobuf.ByteString getTxid(int index) {
        return txid_.get(index);
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @param index The index to set the value at.
       * @param value The txid to set.
       * @return This builder for chaining.
       */
      public Builder setTxid(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTxidIsMutable();
        txid_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @param value The txid to add.
       * @return This builder for chaining.
       */
      public Builder addTxid(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTxidIsMutable();
        txid_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @param values The txid to add.
       * @return This builder for chaining.
       */
      public Builder addAllTxid(
          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureTxidIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, txid_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes txid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTxid() {
        txid_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.Exclude)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.Exclude)
    private static final cash.z.wallet.sdk.rpc.Service.Exclude DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.Exclude();
    }

    public static cash.z.wallet.sdk.rpc.Service.Exclude getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Exclude>
        PARSER = new com.google.protobuf.AbstractParser<Exclude>() {
      @java.lang.Override
      public Exclude parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Exclude(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Exclude> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Exclude> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.Exclude getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TreeStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.TreeState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * "main" or "test"
     * </pre>
     *
     * <code>string network = 1;</code>
     * @return The network.
     */
    java.lang.String getNetwork();
    /**
     * <pre>
     * "main" or "test"
     * </pre>
     *
     * <code>string network = 1;</code>
     * @return The bytes for network.
     */
    com.google.protobuf.ByteString
        getNetworkBytes();

    /**
     * <code>uint64 height = 2;</code>
     * @return The height.
     */
    long getHeight();

    /**
     * <pre>
     * block id
     * </pre>
     *
     * <code>string hash = 3;</code>
     * @return The hash.
     */
    java.lang.String getHash();
    /**
     * <pre>
     * block id
     * </pre>
     *
     * <code>string hash = 3;</code>
     * @return The bytes for hash.
     */
    com.google.protobuf.ByteString
        getHashBytes();

    /**
     * <pre>
     * Unix epoch time when the block was mined
     * </pre>
     *
     * <code>uint32 time = 4;</code>
     * @return The time.
     */
    int getTime();

    /**
     * <pre>
     * sapling commitment tree state
     * </pre>
     *
     * <code>string tree = 5;</code>
     * @return The tree.
     */
    java.lang.String getTree();
    /**
     * <pre>
     * sapling commitment tree state
     * </pre>
     *
     * <code>string tree = 5;</code>
     * @return The bytes for tree.
     */
    com.google.protobuf.ByteString
        getTreeBytes();
  }
  /**
   * <pre>
   * The TreeState is derived from the Zcash z_gettreestate rpc.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.TreeState}
   */
  public static final class TreeState extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.TreeState)
      TreeStateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TreeState.newBuilder() to construct.
    private TreeState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TreeState() {
      network_ = "";
      hash_ = "";
      tree_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TreeState();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TreeState(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              network_ = s;
              break;
            }
            case 16: {

              height_ = input.readUInt64();
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              hash_ = s;
              break;
            }
            case 32: {

              time_ = input.readUInt32();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              tree_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TreeState_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.TreeState.class, cash.z.wallet.sdk.rpc.Service.TreeState.Builder.class);
    }

    public static final int NETWORK_FIELD_NUMBER = 1;
    private volatile java.lang.Object network_;
    /**
     * <pre>
     * "main" or "test"
     * </pre>
     *
     * <code>string network = 1;</code>
     * @return The network.
     */
    @java.lang.Override
    public java.lang.String getNetwork() {
      java.lang.Object ref = network_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        network_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * "main" or "test"
     * </pre>
     *
     * <code>string network = 1;</code>
     * @return The bytes for network.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNetworkBytes() {
      java.lang.Object ref = network_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        network_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEIGHT_FIELD_NUMBER = 2;
    private long height_;
    /**
     * <code>uint64 height = 2;</code>
     * @return The height.
     */
    @java.lang.Override
    public long getHeight() {
      return height_;
    }

    public static final int HASH_FIELD_NUMBER = 3;
    private volatile java.lang.Object hash_;
    /**
     * <pre>
     * block id
     * </pre>
     *
     * <code>string hash = 3;</code>
     * @return The hash.
     */
    @java.lang.Override
    public java.lang.String getHash() {
      java.lang.Object ref = hash_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hash_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * block id
     * </pre>
     *
     * <code>string hash = 3;</code>
     * @return The bytes for hash.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHashBytes() {
      java.lang.Object ref = hash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 4;
    private int time_;
    /**
     * <pre>
     * Unix epoch time when the block was mined
     * </pre>
     *
     * <code>uint32 time = 4;</code>
     * @return The time.
     */
    @java.lang.Override
    public int getTime() {
      return time_;
    }

    public static final int TREE_FIELD_NUMBER = 5;
    private volatile java.lang.Object tree_;
    /**
     * <pre>
     * sapling commitment tree state
     * </pre>
     *
     * <code>string tree = 5;</code>
     * @return The tree.
     */
    @java.lang.Override
    public java.lang.String getTree() {
      java.lang.Object ref = tree_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        tree_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * sapling commitment tree state
     * </pre>
     *
     * <code>string tree = 5;</code>
     * @return The bytes for tree.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTreeBytes() {
      java.lang.Object ref = tree_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tree_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(network_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, network_);
      }
      if (height_ != 0L) {
        output.writeUInt64(2, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hash_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, hash_);
      }
      if (time_ != 0) {
        output.writeUInt32(4, time_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tree_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, tree_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(network_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, network_);
      }
      if (height_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hash_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, hash_);
      }
      if (time_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, time_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tree_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, tree_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.TreeState)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.TreeState other = (cash.z.wallet.sdk.rpc.Service.TreeState) obj;

      if (!getNetwork()
          .equals(other.getNetwork())) return false;
      if (getHeight()
          != other.getHeight()) return false;
      if (!getHash()
          .equals(other.getHash())) return false;
      if (getTime()
          != other.getTime()) return false;
      if (!getTree()
          .equals(other.getTree())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NETWORK_FIELD_NUMBER;
      hash = (53 * hash) + getNetwork().hashCode();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHeight());
      hash = (37 * hash) + HASH_FIELD_NUMBER;
      hash = (53 * hash) + getHash().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + getTime();
      hash = (37 * hash) + TREE_FIELD_NUMBER;
      hash = (53 * hash) + getTree().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.TreeState parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.TreeState prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The TreeState is derived from the Zcash z_gettreestate rpc.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.TreeState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.TreeState)
        cash.z.wallet.sdk.rpc.Service.TreeStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TreeState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.TreeState.class, cash.z.wallet.sdk.rpc.Service.TreeState.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.TreeState.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        network_ = "";

        height_ = 0L;

        hash_ = "";

        time_ = 0;

        tree_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TreeState getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.TreeState.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TreeState build() {
        cash.z.wallet.sdk.rpc.Service.TreeState result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.TreeState buildPartial() {
        cash.z.wallet.sdk.rpc.Service.TreeState result = new cash.z.wallet.sdk.rpc.Service.TreeState(this);
        result.network_ = network_;
        result.height_ = height_;
        result.hash_ = hash_;
        result.time_ = time_;
        result.tree_ = tree_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.TreeState) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.TreeState)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.TreeState other) {
        if (other == cash.z.wallet.sdk.rpc.Service.TreeState.getDefaultInstance()) return this;
        if (!other.getNetwork().isEmpty()) {
          network_ = other.network_;
          onChanged();
        }
        if (other.getHeight() != 0L) {
          setHeight(other.getHeight());
        }
        if (!other.getHash().isEmpty()) {
          hash_ = other.hash_;
          onChanged();
        }
        if (other.getTime() != 0) {
          setTime(other.getTime());
        }
        if (!other.getTree().isEmpty()) {
          tree_ = other.tree_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.TreeState parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.TreeState) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object network_ = "";
      /**
       * <pre>
       * "main" or "test"
       * </pre>
       *
       * <code>string network = 1;</code>
       * @return The network.
       */
      public java.lang.String getNetwork() {
        java.lang.Object ref = network_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          network_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * "main" or "test"
       * </pre>
       *
       * <code>string network = 1;</code>
       * @return The bytes for network.
       */
      public com.google.protobuf.ByteString
          getNetworkBytes() {
        java.lang.Object ref = network_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          network_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * "main" or "test"
       * </pre>
       *
       * <code>string network = 1;</code>
       * @param value The network to set.
       * @return This builder for chaining.
       */
      public Builder setNetwork(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        network_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * "main" or "test"
       * </pre>
       *
       * <code>string network = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNetwork() {
        
        network_ = getDefaultInstance().getNetwork();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * "main" or "test"
       * </pre>
       *
       * <code>string network = 1;</code>
       * @param value The bytes for network to set.
       * @return This builder for chaining.
       */
      public Builder setNetworkBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        network_ = value;
        onChanged();
        return this;
      }

      private long height_ ;
      /**
       * <code>uint64 height = 2;</code>
       * @return The height.
       */
      @java.lang.Override
      public long getHeight() {
        return height_;
      }
      /**
       * <code>uint64 height = 2;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(long value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 height = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object hash_ = "";
      /**
       * <pre>
       * block id
       * </pre>
       *
       * <code>string hash = 3;</code>
       * @return The hash.
       */
      public java.lang.String getHash() {
        java.lang.Object ref = hash_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * block id
       * </pre>
       *
       * <code>string hash = 3;</code>
       * @return The bytes for hash.
       */
      public com.google.protobuf.ByteString
          getHashBytes() {
        java.lang.Object ref = hash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * block id
       * </pre>
       *
       * <code>string hash = 3;</code>
       * @param value The hash to set.
       * @return This builder for chaining.
       */
      public Builder setHash(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hash_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * block id
       * </pre>
       *
       * <code>string hash = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHash() {
        
        hash_ = getDefaultInstance().getHash();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * block id
       * </pre>
       *
       * <code>string hash = 3;</code>
       * @param value The bytes for hash to set.
       * @return This builder for chaining.
       */
      public Builder setHashBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hash_ = value;
        onChanged();
        return this;
      }

      private int time_ ;
      /**
       * <pre>
       * Unix epoch time when the block was mined
       * </pre>
       *
       * <code>uint32 time = 4;</code>
       * @return The time.
       */
      @java.lang.Override
      public int getTime() {
        return time_;
      }
      /**
       * <pre>
       * Unix epoch time when the block was mined
       * </pre>
       *
       * <code>uint32 time = 4;</code>
       * @param value The time to set.
       * @return This builder for chaining.
       */
      public Builder setTime(int value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unix epoch time when the block was mined
       * </pre>
       *
       * <code>uint32 time = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTime() {
        
        time_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object tree_ = "";
      /**
       * <pre>
       * sapling commitment tree state
       * </pre>
       *
       * <code>string tree = 5;</code>
       * @return The tree.
       */
      public java.lang.String getTree() {
        java.lang.Object ref = tree_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tree_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * sapling commitment tree state
       * </pre>
       *
       * <code>string tree = 5;</code>
       * @return The bytes for tree.
       */
      public com.google.protobuf.ByteString
          getTreeBytes() {
        java.lang.Object ref = tree_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tree_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * sapling commitment tree state
       * </pre>
       *
       * <code>string tree = 5;</code>
       * @param value The tree to set.
       * @return This builder for chaining.
       */
      public Builder setTree(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        tree_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sapling commitment tree state
       * </pre>
       *
       * <code>string tree = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTree() {
        
        tree_ = getDefaultInstance().getTree();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sapling commitment tree state
       * </pre>
       *
       * <code>string tree = 5;</code>
       * @param value The bytes for tree to set.
       * @return This builder for chaining.
       */
      public Builder setTreeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        tree_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.TreeState)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.TreeState)
    private static final cash.z.wallet.sdk.rpc.Service.TreeState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.TreeState();
    }

    public static cash.z.wallet.sdk.rpc.Service.TreeState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TreeState>
        PARSER = new com.google.protobuf.AbstractParser<TreeState>() {
      @java.lang.Override
      public TreeState parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TreeState(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TreeState> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TreeState> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.TreeState getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetAddressUtxosArgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.GetAddressUtxosArg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string addresses = 1;</code>
     * @return A list containing the addresses.
     */
    java.util.List<java.lang.String>
        getAddressesList();
    /**
     * <code>repeated string addresses = 1;</code>
     * @return The count of addresses.
     */
    int getAddressesCount();
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the element to return.
     * @return The addresses at the given index.
     */
    java.lang.String getAddresses(int index);
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the addresses at the given index.
     */
    com.google.protobuf.ByteString
        getAddressesBytes(int index);

    /**
     * <code>uint64 startHeight = 2;</code>
     * @return The startHeight.
     */
    long getStartHeight();

    /**
     * <pre>
     * zero means unlimited
     * </pre>
     *
     * <code>uint32 maxEntries = 3;</code>
     * @return The maxEntries.
     */
    int getMaxEntries();
  }
  /**
   * <pre>
   * Results are sorted by height, which makes it easy to issue another
   * request that picks up from where the previous left off.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosArg}
   */
  public static final class GetAddressUtxosArg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosArg)
      GetAddressUtxosArgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetAddressUtxosArg.newBuilder() to construct.
    private GetAddressUtxosArg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetAddressUtxosArg() {
      addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetAddressUtxosArg();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetAddressUtxosArg(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                addresses_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              addresses_.add(s);
              break;
            }
            case 16: {

              startHeight_ = input.readUInt64();
              break;
            }
            case 24: {

              maxEntries_ = input.readUInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          addresses_ = addresses_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.Builder.class);
    }

    public static final int ADDRESSES_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList addresses_;
    /**
     * <code>repeated string addresses = 1;</code>
     * @return A list containing the addresses.
     */
    public com.google.protobuf.ProtocolStringList
        getAddressesList() {
      return addresses_;
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @return The count of addresses.
     */
    public int getAddressesCount() {
      return addresses_.size();
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the element to return.
     * @return The addresses at the given index.
     */
    public java.lang.String getAddresses(int index) {
      return addresses_.get(index);
    }
    /**
     * <code>repeated string addresses = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the addresses at the given index.
     */
    public com.google.protobuf.ByteString
        getAddressesBytes(int index) {
      return addresses_.getByteString(index);
    }

    public static final int STARTHEIGHT_FIELD_NUMBER = 2;
    private long startHeight_;
    /**
     * <code>uint64 startHeight = 2;</code>
     * @return The startHeight.
     */
    @java.lang.Override
    public long getStartHeight() {
      return startHeight_;
    }

    public static final int MAXENTRIES_FIELD_NUMBER = 3;
    private int maxEntries_;
    /**
     * <pre>
     * zero means unlimited
     * </pre>
     *
     * <code>uint32 maxEntries = 3;</code>
     * @return The maxEntries.
     */
    @java.lang.Override
    public int getMaxEntries() {
      return maxEntries_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < addresses_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, addresses_.getRaw(i));
      }
      if (startHeight_ != 0L) {
        output.writeUInt64(2, startHeight_);
      }
      if (maxEntries_ != 0) {
        output.writeUInt32(3, maxEntries_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < addresses_.size(); i++) {
          dataSize += computeStringSizeNoTag(addresses_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAddressesList().size();
      }
      if (startHeight_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, startHeight_);
      }
      if (maxEntries_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, maxEntries_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg other = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg) obj;

      if (!getAddressesList()
          .equals(other.getAddressesList())) return false;
      if (getStartHeight()
          != other.getStartHeight()) return false;
      if (getMaxEntries()
          != other.getMaxEntries()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAddressesCount() > 0) {
        hash = (37 * hash) + ADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + getAddressesList().hashCode();
      }
      hash = (37 * hash) + STARTHEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStartHeight());
      hash = (37 * hash) + MAXENTRIES_FIELD_NUMBER;
      hash = (53 * hash) + getMaxEntries();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Results are sorted by height, which makes it easy to issue another
     * request that picks up from where the previous left off.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosArg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosArg)
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        startHeight_ = 0L;

        maxEntries_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg build() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg buildPartial() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg result = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          addresses_ = addresses_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.addresses_ = addresses_;
        result.startHeight_ = startHeight_;
        result.maxEntries_ = maxEntries_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg other) {
        if (other == cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg.getDefaultInstance()) return this;
        if (!other.addresses_.isEmpty()) {
          if (addresses_.isEmpty()) {
            addresses_ = other.addresses_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureAddressesIsMutable();
            addresses_.addAll(other.addresses_);
          }
          onChanged();
        }
        if (other.getStartHeight() != 0L) {
          setStartHeight(other.getStartHeight());
        }
        if (other.getMaxEntries() != 0) {
          setMaxEntries(other.getMaxEntries());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAddressesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          addresses_ = new com.google.protobuf.LazyStringArrayList(addresses_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return A list containing the addresses.
       */
      public com.google.protobuf.ProtocolStringList
          getAddressesList() {
        return addresses_.getUnmodifiableView();
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return The count of addresses.
       */
      public int getAddressesCount() {
        return addresses_.size();
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index of the element to return.
       * @return The addresses at the given index.
       */
      public java.lang.String getAddresses(int index) {
        return addresses_.get(index);
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the addresses at the given index.
       */
      public com.google.protobuf.ByteString
          getAddressesBytes(int index) {
        return addresses_.getByteString(index);
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param index The index to set the value at.
       * @param value The addresses to set.
       * @return This builder for chaining.
       */
      public Builder setAddresses(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAddressesIsMutable();
        addresses_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param value The addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAddresses(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAddressesIsMutable();
        addresses_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param values The addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAllAddresses(
          java.lang.Iterable<java.lang.String> values) {
        ensureAddressesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, addresses_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddresses() {
        addresses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string addresses = 1;</code>
       * @param value The bytes of the addresses to add.
       * @return This builder for chaining.
       */
      public Builder addAddressesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAddressesIsMutable();
        addresses_.add(value);
        onChanged();
        return this;
      }

      private long startHeight_ ;
      /**
       * <code>uint64 startHeight = 2;</code>
       * @return The startHeight.
       */
      @java.lang.Override
      public long getStartHeight() {
        return startHeight_;
      }
      /**
       * <code>uint64 startHeight = 2;</code>
       * @param value The startHeight to set.
       * @return This builder for chaining.
       */
      public Builder setStartHeight(long value) {
        
        startHeight_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 startHeight = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartHeight() {
        
        startHeight_ = 0L;
        onChanged();
        return this;
      }

      private int maxEntries_ ;
      /**
       * <pre>
       * zero means unlimited
       * </pre>
       *
       * <code>uint32 maxEntries = 3;</code>
       * @return The maxEntries.
       */
      @java.lang.Override
      public int getMaxEntries() {
        return maxEntries_;
      }
      /**
       * <pre>
       * zero means unlimited
       * </pre>
       *
       * <code>uint32 maxEntries = 3;</code>
       * @param value The maxEntries to set.
       * @return This builder for chaining.
       */
      public Builder setMaxEntries(int value) {
        
        maxEntries_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * zero means unlimited
       * </pre>
       *
       * <code>uint32 maxEntries = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxEntries() {
        
        maxEntries_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosArg)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosArg)
    private static final cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg();
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetAddressUtxosArg>
        PARSER = new com.google.protobuf.AbstractParser<GetAddressUtxosArg>() {
      @java.lang.Override
      public GetAddressUtxosArg parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetAddressUtxosArg(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetAddressUtxosArg> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetAddressUtxosArg> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosArg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetAddressUtxosReplyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.GetAddressUtxosReply)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string address = 6;</code>
     * @return The address.
     */
    java.lang.String getAddress();
    /**
     * <code>string address = 6;</code>
     * @return The bytes for address.
     */
    com.google.protobuf.ByteString
        getAddressBytes();

    /**
     * <code>bytes txid = 1;</code>
     * @return The txid.
     */
    com.google.protobuf.ByteString getTxid();

    /**
     * <code>int32 index = 2;</code>
     * @return The index.
     */
    int getIndex();

    /**
     * <code>bytes script = 3;</code>
     * @return The script.
     */
    com.google.protobuf.ByteString getScript();

    /**
     * <code>int64 valueZat = 4;</code>
     * @return The valueZat.
     */
    long getValueZat();

    /**
     * <code>uint64 height = 5;</code>
     * @return The height.
     */
    long getHeight();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosReply}
   */
  public static final class GetAddressUtxosReply extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosReply)
      GetAddressUtxosReplyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetAddressUtxosReply.newBuilder() to construct.
    private GetAddressUtxosReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetAddressUtxosReply() {
      address_ = "";
      txid_ = com.google.protobuf.ByteString.EMPTY;
      script_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetAddressUtxosReply();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetAddressUtxosReply(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {

              txid_ = input.readBytes();
              break;
            }
            case 16: {

              index_ = input.readInt32();
              break;
            }
            case 26: {

              script_ = input.readBytes();
              break;
            }
            case 32: {

              valueZat_ = input.readInt64();
              break;
            }
            case 40: {

              height_ = input.readUInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              address_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder.class);
    }

    public static final int ADDRESS_FIELD_NUMBER = 6;
    private volatile java.lang.Object address_;
    /**
     * <code>string address = 6;</code>
     * @return The address.
     */
    @java.lang.Override
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        address_ = s;
        return s;
      }
    }
    /**
     * <code>string address = 6;</code>
     * @return The bytes for address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TXID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString txid_;
    /**
     * <code>bytes txid = 1;</code>
     * @return The txid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTxid() {
      return txid_;
    }

    public static final int INDEX_FIELD_NUMBER = 2;
    private int index_;
    /**
     * <code>int32 index = 2;</code>
     * @return The index.
     */
    @java.lang.Override
    public int getIndex() {
      return index_;
    }

    public static final int SCRIPT_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString script_;
    /**
     * <code>bytes script = 3;</code>
     * @return The script.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getScript() {
      return script_;
    }

    public static final int VALUEZAT_FIELD_NUMBER = 4;
    private long valueZat_;
    /**
     * <code>int64 valueZat = 4;</code>
     * @return The valueZat.
     */
    @java.lang.Override
    public long getValueZat() {
      return valueZat_;
    }

    public static final int HEIGHT_FIELD_NUMBER = 5;
    private long height_;
    /**
     * <code>uint64 height = 5;</code>
     * @return The height.
     */
    @java.lang.Override
    public long getHeight() {
      return height_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!txid_.isEmpty()) {
        output.writeBytes(1, txid_);
      }
      if (index_ != 0) {
        output.writeInt32(2, index_);
      }
      if (!script_.isEmpty()) {
        output.writeBytes(3, script_);
      }
      if (valueZat_ != 0L) {
        output.writeInt64(4, valueZat_);
      }
      if (height_ != 0L) {
        output.writeUInt64(5, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, address_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!txid_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, txid_);
      }
      if (index_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, index_);
      }
      if (!script_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, script_);
      }
      if (valueZat_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, valueZat_);
      }
      if (height_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, address_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply other = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (!getTxid()
          .equals(other.getTxid())) return false;
      if (getIndex()
          != other.getIndex()) return false;
      if (!getScript()
          .equals(other.getScript())) return false;
      if (getValueZat()
          != other.getValueZat()) return false;
      if (getHeight()
          != other.getHeight()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      hash = (37 * hash) + TXID_FIELD_NUMBER;
      hash = (53 * hash) + getTxid().hashCode();
      hash = (37 * hash) + INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getIndex();
      hash = (37 * hash) + SCRIPT_FIELD_NUMBER;
      hash = (53 * hash) + getScript().hashCode();
      hash = (37 * hash) + VALUEZAT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getValueZat());
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHeight());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosReply}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosReply)
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        address_ = "";

        txid_ = com.google.protobuf.ByteString.EMPTY;

        index_ = 0;

        script_ = com.google.protobuf.ByteString.EMPTY;

        valueZat_ = 0L;

        height_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply build() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply buildPartial() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply result = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply(this);
        result.address_ = address_;
        result.txid_ = txid_;
        result.index_ = index_;
        result.script_ = script_;
        result.valueZat_ = valueZat_;
        result.height_ = height_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply other) {
        if (other == cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.getDefaultInstance()) return this;
        if (!other.getAddress().isEmpty()) {
          address_ = other.address_;
          onChanged();
        }
        if (other.getTxid() != com.google.protobuf.ByteString.EMPTY) {
          setTxid(other.getTxid());
        }
        if (other.getIndex() != 0) {
          setIndex(other.getIndex());
        }
        if (other.getScript() != com.google.protobuf.ByteString.EMPTY) {
          setScript(other.getScript());
        }
        if (other.getValueZat() != 0L) {
          setValueZat(other.getValueZat());
        }
        if (other.getHeight() != 0L) {
          setHeight(other.getHeight());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object address_ = "";
      /**
       * <code>string address = 6;</code>
       * @return The address.
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string address = 6;</code>
       * @return The bytes for address.
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string address = 6;</code>
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        address_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string address = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string address = 6;</code>
       * @param value The bytes for address to set.
       * @return This builder for chaining.
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        address_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString txid_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes txid = 1;</code>
       * @return The txid.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTxid() {
        return txid_;
      }
      /**
       * <code>bytes txid = 1;</code>
       * @param value The txid to set.
       * @return This builder for chaining.
       */
      public Builder setTxid(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        txid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes txid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTxid() {
        
        txid_ = getDefaultInstance().getTxid();
        onChanged();
        return this;
      }

      private int index_ ;
      /**
       * <code>int32 index = 2;</code>
       * @return The index.
       */
      @java.lang.Override
      public int getIndex() {
        return index_;
      }
      /**
       * <code>int32 index = 2;</code>
       * @param value The index to set.
       * @return This builder for chaining.
       */
      public Builder setIndex(int value) {
        
        index_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 index = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndex() {
        
        index_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString script_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes script = 3;</code>
       * @return The script.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getScript() {
        return script_;
      }
      /**
       * <code>bytes script = 3;</code>
       * @param value The script to set.
       * @return This builder for chaining.
       */
      public Builder setScript(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        script_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes script = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearScript() {
        
        script_ = getDefaultInstance().getScript();
        onChanged();
        return this;
      }

      private long valueZat_ ;
      /**
       * <code>int64 valueZat = 4;</code>
       * @return The valueZat.
       */
      @java.lang.Override
      public long getValueZat() {
        return valueZat_;
      }
      /**
       * <code>int64 valueZat = 4;</code>
       * @param value The valueZat to set.
       * @return This builder for chaining.
       */
      public Builder setValueZat(long value) {
        
        valueZat_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 valueZat = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueZat() {
        
        valueZat_ = 0L;
        onChanged();
        return this;
      }

      private long height_ ;
      /**
       * <code>uint64 height = 5;</code>
       * @return The height.
       */
      @java.lang.Override
      public long getHeight() {
        return height_;
      }
      /**
       * <code>uint64 height = 5;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(long value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 height = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosReply)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosReply)
    private static final cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply();
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetAddressUtxosReply>
        PARSER = new com.google.protobuf.AbstractParser<GetAddressUtxosReply>() {
      @java.lang.Override
      public GetAddressUtxosReply parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetAddressUtxosReply(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetAddressUtxosReply> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetAddressUtxosReply> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetAddressUtxosReplyListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> 
        getAddressUtxosList();
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getAddressUtxos(int index);
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    int getAddressUtxosCount();
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    java.util.List<? extends cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder> 
        getAddressUtxosOrBuilderList();
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder getAddressUtxosOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList}
   */
  public static final class GetAddressUtxosReplyList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList)
      GetAddressUtxosReplyListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetAddressUtxosReplyList.newBuilder() to construct.
    private GetAddressUtxosReplyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetAddressUtxosReplyList() {
      addressUtxos_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetAddressUtxosReplyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetAddressUtxosReplyList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                addressUtxos_ = new java.util.ArrayList<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply>();
                mutable_bitField0_ |= 0x00000001;
              }
              addressUtxos_.add(
                  input.readMessage(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          addressUtxos_ = java.util.Collections.unmodifiableList(addressUtxos_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.Builder.class);
    }

    public static final int ADDRESSUTXOS_FIELD_NUMBER = 1;
    private java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> addressUtxos_;
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    @java.lang.Override
    public java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> getAddressUtxosList() {
      return addressUtxos_;
    }
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder> 
        getAddressUtxosOrBuilderList() {
      return addressUtxos_;
    }
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    @java.lang.Override
    public int getAddressUtxosCount() {
      return addressUtxos_.size();
    }
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getAddressUtxos(int index) {
      return addressUtxos_.get(index);
    }
    /**
     * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
     */
    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder getAddressUtxosOrBuilder(
        int index) {
      return addressUtxos_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < addressUtxos_.size(); i++) {
        output.writeMessage(1, addressUtxos_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < addressUtxos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, addressUtxos_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList other = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList) obj;

      if (!getAddressUtxosList()
          .equals(other.getAddressUtxosList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAddressUtxosCount() > 0) {
        hash = (37 * hash) + ADDRESSUTXOS_FIELD_NUMBER;
        hash = (53 * hash) + getAddressUtxosList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList)
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.class, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAddressUtxosFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (addressUtxosBuilder_ == null) {
          addressUtxos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          addressUtxosBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Service.internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList build() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList buildPartial() {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList result = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList(this);
        int from_bitField0_ = bitField0_;
        if (addressUtxosBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            addressUtxos_ = java.util.Collections.unmodifiableList(addressUtxos_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.addressUtxos_ = addressUtxos_;
        } else {
          result.addressUtxos_ = addressUtxosBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList other) {
        if (other == cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList.getDefaultInstance()) return this;
        if (addressUtxosBuilder_ == null) {
          if (!other.addressUtxos_.isEmpty()) {
            if (addressUtxos_.isEmpty()) {
              addressUtxos_ = other.addressUtxos_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAddressUtxosIsMutable();
              addressUtxos_.addAll(other.addressUtxos_);
            }
            onChanged();
          }
        } else {
          if (!other.addressUtxos_.isEmpty()) {
            if (addressUtxosBuilder_.isEmpty()) {
              addressUtxosBuilder_.dispose();
              addressUtxosBuilder_ = null;
              addressUtxos_ = other.addressUtxos_;
              bitField0_ = (bitField0_ & ~0x00000001);
              addressUtxosBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAddressUtxosFieldBuilder() : null;
            } else {
              addressUtxosBuilder_.addAllMessages(other.addressUtxos_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> addressUtxos_ =
        java.util.Collections.emptyList();
      private void ensureAddressUtxosIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          addressUtxos_ = new java.util.ArrayList<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply>(addressUtxos_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder> addressUtxosBuilder_;

      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> getAddressUtxosList() {
        if (addressUtxosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(addressUtxos_);
        } else {
          return addressUtxosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public int getAddressUtxosCount() {
        if (addressUtxosBuilder_ == null) {
          return addressUtxos_.size();
        } else {
          return addressUtxosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply getAddressUtxos(int index) {
        if (addressUtxosBuilder_ == null) {
          return addressUtxos_.get(index);
        } else {
          return addressUtxosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder setAddressUtxos(
          int index, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply value) {
        if (addressUtxosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressUtxosIsMutable();
          addressUtxos_.set(index, value);
          onChanged();
        } else {
          addressUtxosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder setAddressUtxos(
          int index, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder builderForValue) {
        if (addressUtxosBuilder_ == null) {
          ensureAddressUtxosIsMutable();
          addressUtxos_.set(index, builderForValue.build());
          onChanged();
        } else {
          addressUtxosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder addAddressUtxos(cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply value) {
        if (addressUtxosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressUtxosIsMutable();
          addressUtxos_.add(value);
          onChanged();
        } else {
          addressUtxosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder addAddressUtxos(
          int index, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply value) {
        if (addressUtxosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressUtxosIsMutable();
          addressUtxos_.add(index, value);
          onChanged();
        } else {
          addressUtxosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder addAddressUtxos(
          cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder builderForValue) {
        if (addressUtxosBuilder_ == null) {
          ensureAddressUtxosIsMutable();
          addressUtxos_.add(builderForValue.build());
          onChanged();
        } else {
          addressUtxosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder addAddressUtxos(
          int index, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder builderForValue) {
        if (addressUtxosBuilder_ == null) {
          ensureAddressUtxosIsMutable();
          addressUtxos_.add(index, builderForValue.build());
          onChanged();
        } else {
          addressUtxosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder addAllAddressUtxos(
          java.lang.Iterable<? extends cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply> values) {
        if (addressUtxosBuilder_ == null) {
          ensureAddressUtxosIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, addressUtxos_);
          onChanged();
        } else {
          addressUtxosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder clearAddressUtxos() {
        if (addressUtxosBuilder_ == null) {
          addressUtxos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          addressUtxosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public Builder removeAddressUtxos(int index) {
        if (addressUtxosBuilder_ == null) {
          ensureAddressUtxosIsMutable();
          addressUtxos_.remove(index);
          onChanged();
        } else {
          addressUtxosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder getAddressUtxosBuilder(
          int index) {
        return getAddressUtxosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder getAddressUtxosOrBuilder(
          int index) {
        if (addressUtxosBuilder_ == null) {
          return addressUtxos_.get(index);  } else {
          return addressUtxosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public java.util.List<? extends cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder> 
           getAddressUtxosOrBuilderList() {
        if (addressUtxosBuilder_ != null) {
          return addressUtxosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(addressUtxos_);
        }
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder addAddressUtxosBuilder() {
        return getAddressUtxosFieldBuilder().addBuilder(
            cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.getDefaultInstance());
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder addAddressUtxosBuilder(
          int index) {
        return getAddressUtxosFieldBuilder().addBuilder(
            index, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.getDefaultInstance());
      }
      /**
       * <code>repeated .cash.z.wallet.sdk.rpc.GetAddressUtxosReply addressUtxos = 1;</code>
       */
      public java.util.List<cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder> 
           getAddressUtxosBuilderList() {
        return getAddressUtxosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder> 
          getAddressUtxosFieldBuilder() {
        if (addressUtxosBuilder_ == null) {
          addressUtxosBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReply.Builder, cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyOrBuilder>(
                  addressUtxos_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          addressUtxos_ = null;
        }
        return addressUtxosBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.GetAddressUtxosReplyList)
    private static final cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList();
    }

    public static cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetAddressUtxosReplyList>
        PARSER = new com.google.protobuf.AbstractParser<GetAddressUtxosReplyList>() {
      @java.lang.Override
      public GetAddressUtxosReplyList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetAddressUtxosReplyList(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetAddressUtxosReplyList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetAddressUtxosReplyList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Service.GetAddressUtxosReplyList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_BlockID_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_BlockRange_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_TxFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_RawTransaction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_SendResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_ChainSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_Empty_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_LightdInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_Duration_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_PingResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_Address_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_Address_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_AddressList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_Balance_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_Exclude_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_TreeState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\rservice.proto\022\025cash.z.wallet.sdk.rpc\032\025" +
      "compact_formats.proto\"\'\n\007BlockID\022\016\n\006heig" +
      "ht\030\001 \001(\004\022\014\n\004hash\030\002 \001(\014\"h\n\nBlockRange\022-\n\005" +
      "start\030\001 \001(\0132\036.cash.z.wallet.sdk.rpc.Bloc" +
      "kID\022+\n\003end\030\002 \001(\0132\036.cash.z.wallet.sdk.rpc" +
      ".BlockID\"V\n\010TxFilter\022-\n\005block\030\001 \001(\0132\036.ca" +
      "sh.z.wallet.sdk.rpc.BlockID\022\r\n\005index\030\002 \001" +
      "(\004\022\014\n\004hash\030\003 \001(\014\".\n\016RawTransaction\022\014\n\004da" +
      "ta\030\001 \001(\014\022\016\n\006height\030\002 \001(\004\"7\n\014SendResponse" +
      "\022\021\n\terrorCode\030\001 \001(\005\022\024\n\014errorMessage\030\002 \001(" +
      "\t\"\013\n\tChainSpec\"\007\n\005Empty\"\272\002\n\nLightdInfo\022\017" +
      "\n\007version\030\001 \001(\t\022\016\n\006vendor\030\002 \001(\t\022\024\n\014taddr" +
      "Support\030\003 \001(\010\022\021\n\tchainName\030\004 \001(\t\022\037\n\027sapl" +
      "ingActivationHeight\030\005 \001(\004\022\031\n\021consensusBr" +
      "anchId\030\006 \001(\t\022\023\n\013blockHeight\030\007 \001(\004\022\021\n\tgit" +
      "Commit\030\010 \001(\t\022\016\n\006branch\030\t \001(\t\022\021\n\tbuildDat" +
      "e\030\n \001(\t\022\021\n\tbuildUser\030\013 \001(\t\022\027\n\017estimatedH" +
      "eight\030\014 \001(\004\022\024\n\014piratedBuild\030\r \001(\t\022\031\n\021pir" +
      "atedSubversion\030\016 \001(\t\"b\n\035TransparentAddre" +
      "ssBlockFilter\022\017\n\007address\030\001 \001(\t\0220\n\005range\030" +
      "\002 \001(\0132!.cash.z.wallet.sdk.rpc.BlockRange" +
      "\"\036\n\010Duration\022\022\n\nintervalUs\030\001 \001(\003\"+\n\014Ping" +
      "Response\022\r\n\005entry\030\001 \001(\003\022\014\n\004exit\030\002 \001(\003\"\032\n" +
      "\007Address\022\017\n\007address\030\001 \001(\t\" \n\013AddressList" +
      "\022\021\n\taddresses\030\001 \003(\t\"\033\n\007Balance\022\020\n\010valueZ" +
      "at\030\001 \001(\003\"\027\n\007Exclude\022\014\n\004txid\030\001 \003(\014\"V\n\tTre" +
      "eState\022\017\n\007network\030\001 \001(\t\022\016\n\006height\030\002 \001(\004\022" +
      "\014\n\004hash\030\003 \001(\t\022\014\n\004time\030\004 \001(\r\022\014\n\004tree\030\005 \001(" +
      "\t\"P\n\022GetAddressUtxosArg\022\021\n\taddresses\030\001 \003" +
      "(\t\022\023\n\013startHeight\030\002 \001(\004\022\022\n\nmaxEntries\030\003 " +
      "\001(\r\"v\n\024GetAddressUtxosReply\022\017\n\007address\030\006" +
      " \001(\t\022\014\n\004txid\030\001 \001(\014\022\r\n\005index\030\002 \001(\005\022\016\n\006scr" +
      "ipt\030\003 \001(\014\022\020\n\010valueZat\030\004 \001(\003\022\016\n\006height\030\005 " +
      "\001(\004\"]\n\030GetAddressUtxosReplyList\022A\n\014addre" +
      "ssUtxos\030\001 \003(\0132+.cash.z.wallet.sdk.rpc.Ge" +
      "tAddressUtxosReply2\273\n\n\021CompactTxStreamer" +
      "\022T\n\016GetLatestBlock\022 .cash.z.wallet.sdk.r" +
      "pc.ChainSpec\032\036.cash.z.wallet.sdk.rpc.Blo" +
      "ckID\"\000\022Q\n\010GetBlock\022\036.cash.z.wallet.sdk.r" +
      "pc.BlockID\032#.cash.z.wallet.sdk.rpc.Compa" +
      "ctBlock\"\000\022[\n\rGetBlockRange\022!.cash.z.wall" +
      "et.sdk.rpc.BlockRange\032#.cash.z.wallet.sd" +
      "k.rpc.CompactBlock\"\0000\001\022Z\n\016GetTransaction" +
      "\022\037.cash.z.wallet.sdk.rpc.TxFilter\032%.cash" +
      ".z.wallet.sdk.rpc.RawTransaction\"\000\022_\n\017Se" +
      "ndTransaction\022%.cash.z.wallet.sdk.rpc.Ra" +
      "wTransaction\032#.cash.z.wallet.sdk.rpc.Sen" +
      "dResponse\"\000\022s\n\020GetTaddressTxids\0224.cash.z" +
      ".wallet.sdk.rpc.TransparentAddressBlockF" +
      "ilter\032%.cash.z.wallet.sdk.rpc.RawTransac" +
      "tion\"\0000\001\022Z\n\022GetTaddressBalance\022\".cash.z." +
      "wallet.sdk.rpc.AddressList\032\036.cash.z.wall" +
      "et.sdk.rpc.Balance\"\000\022^\n\030GetTaddressBalan" +
      "ceStream\022\036.cash.z.wallet.sdk.rpc.Address" +
      "\032\036.cash.z.wallet.sdk.rpc.Balance\"\000(\001\022T\n\014" +
      "GetMempoolTx\022\036.cash.z.wallet.sdk.rpc.Exc" +
      "lude\032 .cash.z.wallet.sdk.rpc.CompactTx\"\000" +
      "0\001\022R\n\014GetTreeState\022\036.cash.z.wallet.sdk.r" +
      "pc.BlockID\032 .cash.z.wallet.sdk.rpc.TreeS" +
      "tate\"\000\022o\n\017GetAddressUtxos\022).cash.z.walle" +
      "t.sdk.rpc.GetAddressUtxosArg\032/.cash.z.wa" +
      "llet.sdk.rpc.GetAddressUtxosReplyList\"\000\022" +
      "s\n\025GetAddressUtxosStream\022).cash.z.wallet" +
      ".sdk.rpc.GetAddressUtxosArg\032+.cash.z.wal" +
      "let.sdk.rpc.GetAddressUtxosReply\"\0000\001\022R\n\r" +
      "GetLightdInfo\022\034.cash.z.wallet.sdk.rpc.Em" +
      "pty\032!.cash.z.wallet.sdk.rpc.LightdInfo\"\000" +
      "\022N\n\004Ping\022\037.cash.z.wallet.sdk.rpc.Duratio" +
      "n\032#.cash.z.wallet.sdk.rpc.PingResponse\"\000" +
      "B\033Z\026lightwalletd/walletrpc\272\002\000b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          cash.z.wallet.sdk.rpc.CompactFormats.getDescriptor(),
        });
    internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cash_z_wallet_sdk_rpc_BlockID_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_BlockID_descriptor,
        new java.lang.String[] { "Height", "Hash", });
    internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cash_z_wallet_sdk_rpc_BlockRange_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_BlockRange_descriptor,
        new java.lang.String[] { "Start", "End", });
    internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cash_z_wallet_sdk_rpc_TxFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_TxFilter_descriptor,
        new java.lang.String[] { "Block", "Index", "Hash", });
    internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cash_z_wallet_sdk_rpc_RawTransaction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_RawTransaction_descriptor,
        new java.lang.String[] { "Data", "Height", });
    internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cash_z_wallet_sdk_rpc_SendResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_SendResponse_descriptor,
        new java.lang.String[] { "ErrorCode", "ErrorMessage", });
    internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cash_z_wallet_sdk_rpc_ChainSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_ChainSpec_descriptor,
        new java.lang.String[] { });
    internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_cash_z_wallet_sdk_rpc_Empty_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_Empty_descriptor,
        new java.lang.String[] { });
    internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_cash_z_wallet_sdk_rpc_LightdInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_LightdInfo_descriptor,
        new java.lang.String[] { "Version", "Vendor", "TaddrSupport", "ChainName", "SaplingActivationHeight", "ConsensusBranchId", "BlockHeight", "GitCommit", "Branch", "BuildDate", "BuildUser", "EstimatedHeight", "PiratedBuild", "PiratedSubversion", });
    internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_TransparentAddressBlockFilter_descriptor,
        new java.lang.String[] { "Address", "Range", });
    internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_cash_z_wallet_sdk_rpc_Duration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_Duration_descriptor,
        new java.lang.String[] { "IntervalUs", });
    internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_cash_z_wallet_sdk_rpc_PingResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_PingResponse_descriptor,
        new java.lang.String[] { "Entry", "Exit", });
    internal_static_cash_z_wallet_sdk_rpc_Address_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_cash_z_wallet_sdk_rpc_Address_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_Address_descriptor,
        new java.lang.String[] { "Address", });
    internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_cash_z_wallet_sdk_rpc_AddressList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_AddressList_descriptor,
        new java.lang.String[] { "Addresses", });
    internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_cash_z_wallet_sdk_rpc_Balance_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_Balance_descriptor,
        new java.lang.String[] { "ValueZat", });
    internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_cash_z_wallet_sdk_rpc_Exclude_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_Exclude_descriptor,
        new java.lang.String[] { "Txid", });
    internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_cash_z_wallet_sdk_rpc_TreeState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_TreeState_descriptor,
        new java.lang.String[] { "Network", "Height", "Hash", "Time", "Tree", });
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosArg_descriptor,
        new java.lang.String[] { "Addresses", "StartHeight", "MaxEntries", });
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReply_descriptor,
        new java.lang.String[] { "Address", "Txid", "Index", "Script", "ValueZat", "Height", });
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_GetAddressUtxosReplyList_descriptor,
        new java.lang.String[] { "AddressUtxos", });
    cash.z.wallet.sdk.rpc.CompactFormats.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
