// Copyright Rivtower Technologies LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file is generated by rust-protobuf 2.8.1. Do not edit
// @generated

// https://github.com/Manishearth/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![cfg_attr(rustfmt, rustfmt_skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unsafe_code)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `executor.proto`

use protobuf::Message as Message_imported_for_functions;
use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_1;

#[derive(PartialEq,Clone,Default)]
pub struct ExecutedHeader {
    // message fields
    pub prevhash: ::std::vec::Vec<u8>,
    pub timestamp: u64,
    pub height: u64,
    pub state_root: ::std::vec::Vec<u8>,
    pub transactions_root: ::std::vec::Vec<u8>,
    pub receipts_root: ::std::vec::Vec<u8>,
    pub log_bloom: ::std::vec::Vec<u8>,
    pub quota_used: u64,
    pub quota_limit: u64,
    pub proposer: ::std::vec::Vec<u8>,
    pub vc_commitment: ::std::vec::Vec<u8>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ExecutedHeader {
    fn default() -> &'a ExecutedHeader {
        <ExecutedHeader as ::protobuf::Message>::default_instance()
    }
}

impl ExecutedHeader {
    pub fn new() -> ExecutedHeader {
        ::std::default::Default::default()
    }

    // bytes prevhash = 1;


    pub fn get_prevhash(&self) -> &[u8] {
        &self.prevhash
    }
    pub fn clear_prevhash(&mut self) {
        self.prevhash.clear();
    }

    // Param is passed by value, moved
    pub fn set_prevhash(&mut self, v: ::std::vec::Vec<u8>) {
        self.prevhash = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_prevhash(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.prevhash
    }

    // Take field
    pub fn take_prevhash(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.prevhash, ::std::vec::Vec::new())
    }

    // uint64 timestamp = 2;


    pub fn get_timestamp(&self) -> u64 {
        self.timestamp
    }
    pub fn clear_timestamp(&mut self) {
        self.timestamp = 0;
    }

    // Param is passed by value, moved
    pub fn set_timestamp(&mut self, v: u64) {
        self.timestamp = v;
    }

    // uint64 height = 3;


    pub fn get_height(&self) -> u64 {
        self.height
    }
    pub fn clear_height(&mut self) {
        self.height = 0;
    }

    // Param is passed by value, moved
    pub fn set_height(&mut self, v: u64) {
        self.height = v;
    }

    // bytes state_root = 4;


    pub fn get_state_root(&self) -> &[u8] {
        &self.state_root
    }
    pub fn clear_state_root(&mut self) {
        self.state_root.clear();
    }

    // Param is passed by value, moved
    pub fn set_state_root(&mut self, v: ::std::vec::Vec<u8>) {
        self.state_root = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_state_root(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.state_root
    }

    // Take field
    pub fn take_state_root(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.state_root, ::std::vec::Vec::new())
    }

    // bytes transactions_root = 5;


    pub fn get_transactions_root(&self) -> &[u8] {
        &self.transactions_root
    }
    pub fn clear_transactions_root(&mut self) {
        self.transactions_root.clear();
    }

    // Param is passed by value, moved
    pub fn set_transactions_root(&mut self, v: ::std::vec::Vec<u8>) {
        self.transactions_root = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_transactions_root(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.transactions_root
    }

    // Take field
    pub fn take_transactions_root(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.transactions_root, ::std::vec::Vec::new())
    }

    // bytes receipts_root = 6;


    pub fn get_receipts_root(&self) -> &[u8] {
        &self.receipts_root
    }
    pub fn clear_receipts_root(&mut self) {
        self.receipts_root.clear();
    }

    // Param is passed by value, moved
    pub fn set_receipts_root(&mut self, v: ::std::vec::Vec<u8>) {
        self.receipts_root = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_receipts_root(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.receipts_root
    }

    // Take field
    pub fn take_receipts_root(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.receipts_root, ::std::vec::Vec::new())
    }

    // bytes log_bloom = 7;


    pub fn get_log_bloom(&self) -> &[u8] {
        &self.log_bloom
    }
    pub fn clear_log_bloom(&mut self) {
        self.log_bloom.clear();
    }

    // Param is passed by value, moved
    pub fn set_log_bloom(&mut self, v: ::std::vec::Vec<u8>) {
        self.log_bloom = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_log_bloom(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.log_bloom
    }

    // Take field
    pub fn take_log_bloom(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.log_bloom, ::std::vec::Vec::new())
    }

    // uint64 quota_used = 8;


    pub fn get_quota_used(&self) -> u64 {
        self.quota_used
    }
    pub fn clear_quota_used(&mut self) {
        self.quota_used = 0;
    }

    // Param is passed by value, moved
    pub fn set_quota_used(&mut self, v: u64) {
        self.quota_used = v;
    }

    // uint64 quota_limit = 9;


    pub fn get_quota_limit(&self) -> u64 {
        self.quota_limit
    }
    pub fn clear_quota_limit(&mut self) {
        self.quota_limit = 0;
    }

    // Param is passed by value, moved
    pub fn set_quota_limit(&mut self, v: u64) {
        self.quota_limit = v;
    }

    // bytes proposer = 10;


    pub fn get_proposer(&self) -> &[u8] {
        &self.proposer
    }
    pub fn clear_proposer(&mut self) {
        self.proposer.clear();
    }

    // Param is passed by value, moved
    pub fn set_proposer(&mut self, v: ::std::vec::Vec<u8>) {
        self.proposer = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_proposer(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.proposer
    }

    // Take field
    pub fn take_proposer(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.proposer, ::std::vec::Vec::new())
    }

    // bytes vc_commitment = 11;


    pub fn get_vc_commitment(&self) -> &[u8] {
        &self.vc_commitment
    }
    pub fn clear_vc_commitment(&mut self) {
        self.vc_commitment.clear();
    }

    // Param is passed by value, moved
    pub fn set_vc_commitment(&mut self, v: ::std::vec::Vec<u8>) {
        self.vc_commitment = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_vc_commitment(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.vc_commitment
    }

    // Take field
    pub fn take_vc_commitment(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.vc_commitment, ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for ExecutedHeader {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.prevhash)?;
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.timestamp = tmp;
                },
                3 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.height = tmp;
                },
                4 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.state_root)?;
                },
                5 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.transactions_root)?;
                },
                6 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.receipts_root)?;
                },
                7 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.log_bloom)?;
                },
                8 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.quota_used = tmp;
                },
                9 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.quota_limit = tmp;
                },
                10 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.proposer)?;
                },
                11 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.vc_commitment)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.prevhash.is_empty() {
            my_size += ::protobuf::rt::bytes_size(1, &self.prevhash);
        }
        if self.timestamp != 0 {
            my_size += ::protobuf::rt::value_size(2, self.timestamp, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.height != 0 {
            my_size += ::protobuf::rt::value_size(3, self.height, ::protobuf::wire_format::WireTypeVarint);
        }
        if !self.state_root.is_empty() {
            my_size += ::protobuf::rt::bytes_size(4, &self.state_root);
        }
        if !self.transactions_root.is_empty() {
            my_size += ::protobuf::rt::bytes_size(5, &self.transactions_root);
        }
        if !self.receipts_root.is_empty() {
            my_size += ::protobuf::rt::bytes_size(6, &self.receipts_root);
        }
        if !self.log_bloom.is_empty() {
            my_size += ::protobuf::rt::bytes_size(7, &self.log_bloom);
        }
        if self.quota_used != 0 {
            my_size += ::protobuf::rt::value_size(8, self.quota_used, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.quota_limit != 0 {
            my_size += ::protobuf::rt::value_size(9, self.quota_limit, ::protobuf::wire_format::WireTypeVarint);
        }
        if !self.proposer.is_empty() {
            my_size += ::protobuf::rt::bytes_size(10, &self.proposer);
        }
        if !self.vc_commitment.is_empty() {
            my_size += ::protobuf::rt::bytes_size(11, &self.vc_commitment);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.prevhash.is_empty() {
            os.write_bytes(1, &self.prevhash)?;
        }
        if self.timestamp != 0 {
            os.write_uint64(2, self.timestamp)?;
        }
        if self.height != 0 {
            os.write_uint64(3, self.height)?;
        }
        if !self.state_root.is_empty() {
            os.write_bytes(4, &self.state_root)?;
        }
        if !self.transactions_root.is_empty() {
            os.write_bytes(5, &self.transactions_root)?;
        }
        if !self.receipts_root.is_empty() {
            os.write_bytes(6, &self.receipts_root)?;
        }
        if !self.log_bloom.is_empty() {
            os.write_bytes(7, &self.log_bloom)?;
        }
        if self.quota_used != 0 {
            os.write_uint64(8, self.quota_used)?;
        }
        if self.quota_limit != 0 {
            os.write_uint64(9, self.quota_limit)?;
        }
        if !self.proposer.is_empty() {
            os.write_bytes(10, &self.proposer)?;
        }
        if !self.vc_commitment.is_empty() {
            os.write_bytes(11, &self.vc_commitment)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ExecutedHeader {
        ExecutedHeader::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "prevhash",
                    |m: &ExecutedHeader| { &m.prevhash },
                    |m: &mut ExecutedHeader| { &mut m.prevhash },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "timestamp",
                    |m: &ExecutedHeader| { &m.timestamp },
                    |m: &mut ExecutedHeader| { &mut m.timestamp },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "height",
                    |m: &ExecutedHeader| { &m.height },
                    |m: &mut ExecutedHeader| { &mut m.height },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "state_root",
                    |m: &ExecutedHeader| { &m.state_root },
                    |m: &mut ExecutedHeader| { &mut m.state_root },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "transactions_root",
                    |m: &ExecutedHeader| { &m.transactions_root },
                    |m: &mut ExecutedHeader| { &mut m.transactions_root },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "receipts_root",
                    |m: &ExecutedHeader| { &m.receipts_root },
                    |m: &mut ExecutedHeader| { &mut m.receipts_root },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "log_bloom",
                    |m: &ExecutedHeader| { &m.log_bloom },
                    |m: &mut ExecutedHeader| { &mut m.log_bloom },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "quota_used",
                    |m: &ExecutedHeader| { &m.quota_used },
                    |m: &mut ExecutedHeader| { &mut m.quota_used },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "quota_limit",
                    |m: &ExecutedHeader| { &m.quota_limit },
                    |m: &mut ExecutedHeader| { &mut m.quota_limit },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "proposer",
                    |m: &ExecutedHeader| { &m.proposer },
                    |m: &mut ExecutedHeader| { &mut m.proposer },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "vc_commitment",
                    |m: &ExecutedHeader| { &m.vc_commitment },
                    |m: &mut ExecutedHeader| { &mut m.vc_commitment },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ExecutedHeader>(
                    "ExecutedHeader",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ExecutedHeader {
        static mut instance: ::protobuf::lazy::Lazy<ExecutedHeader> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ExecutedHeader,
        };
        unsafe {
            instance.get(ExecutedHeader::new)
        }
    }
}

impl ::protobuf::Clear for ExecutedHeader {
    fn clear(&mut self) {
        self.prevhash.clear();
        self.timestamp = 0;
        self.height = 0;
        self.state_root.clear();
        self.transactions_root.clear();
        self.receipts_root.clear();
        self.log_bloom.clear();
        self.quota_used = 0;
        self.quota_limit = 0;
        self.proposer.clear();
        self.vc_commitment.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ExecutedHeader {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ExecutedHeader {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct LogEntry {
    // message fields
    pub address: ::std::vec::Vec<u8>,
    pub topics: ::protobuf::RepeatedField<::std::vec::Vec<u8>>,
    pub data: ::std::vec::Vec<u8>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a LogEntry {
    fn default() -> &'a LogEntry {
        <LogEntry as ::protobuf::Message>::default_instance()
    }
}

impl LogEntry {
    pub fn new() -> LogEntry {
        ::std::default::Default::default()
    }

    // bytes address = 1;


    pub fn get_address(&self) -> &[u8] {
        &self.address
    }
    pub fn clear_address(&mut self) {
        self.address.clear();
    }

    // Param is passed by value, moved
    pub fn set_address(&mut self, v: ::std::vec::Vec<u8>) {
        self.address = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_address(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.address
    }

    // Take field
    pub fn take_address(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.address, ::std::vec::Vec::new())
    }

    // repeated bytes topics = 2;


    pub fn get_topics(&self) -> &[::std::vec::Vec<u8>] {
        &self.topics
    }
    pub fn clear_topics(&mut self) {
        self.topics.clear();
    }

    // Param is passed by value, moved
    pub fn set_topics(&mut self, v: ::protobuf::RepeatedField<::std::vec::Vec<u8>>) {
        self.topics = v;
    }

    // Mutable pointer to the field.
    pub fn mut_topics(&mut self) -> &mut ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        &mut self.topics
    }

    // Take field
    pub fn take_topics(&mut self) -> ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        ::std::mem::replace(&mut self.topics, ::protobuf::RepeatedField::new())
    }

    // bytes data = 3;


    pub fn get_data(&self) -> &[u8] {
        &self.data
    }
    pub fn clear_data(&mut self) {
        self.data.clear();
    }

    // Param is passed by value, moved
    pub fn set_data(&mut self, v: ::std::vec::Vec<u8>) {
        self.data = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_data(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.data
    }

    // Take field
    pub fn take_data(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.data, ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for LogEntry {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.address)?;
                },
                2 => {
                    ::protobuf::rt::read_repeated_bytes_into(wire_type, is, &mut self.topics)?;
                },
                3 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.data)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.address.is_empty() {
            my_size += ::protobuf::rt::bytes_size(1, &self.address);
        }
        for value in &self.topics {
            my_size += ::protobuf::rt::bytes_size(2, &value);
        };
        if !self.data.is_empty() {
            my_size += ::protobuf::rt::bytes_size(3, &self.data);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.address.is_empty() {
            os.write_bytes(1, &self.address)?;
        }
        for v in &self.topics {
            os.write_bytes(2, &v)?;
        };
        if !self.data.is_empty() {
            os.write_bytes(3, &self.data)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> LogEntry {
        LogEntry::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "address",
                    |m: &LogEntry| { &m.address },
                    |m: &mut LogEntry| { &mut m.address },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "topics",
                    |m: &LogEntry| { &m.topics },
                    |m: &mut LogEntry| { &mut m.topics },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "data",
                    |m: &LogEntry| { &m.data },
                    |m: &mut LogEntry| { &mut m.data },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<LogEntry>(
                    "LogEntry",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static LogEntry {
        static mut instance: ::protobuf::lazy::Lazy<LogEntry> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const LogEntry,
        };
        unsafe {
            instance.get(LogEntry::new)
        }
    }
}

impl ::protobuf::Clear for LogEntry {
    fn clear(&mut self) {
        self.address.clear();
        self.topics.clear();
        self.data.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for LogEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for LogEntry {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ReceiptErrorWithOption {
    // message fields
    pub error: ReceiptError,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ReceiptErrorWithOption {
    fn default() -> &'a ReceiptErrorWithOption {
        <ReceiptErrorWithOption as ::protobuf::Message>::default_instance()
    }
}

impl ReceiptErrorWithOption {
    pub fn new() -> ReceiptErrorWithOption {
        ::std::default::Default::default()
    }

    // .ReceiptError error = 1;


    pub fn get_error(&self) -> ReceiptError {
        self.error
    }
    pub fn clear_error(&mut self) {
        self.error = ReceiptError::NotEnoughBaseQuota;
    }

    // Param is passed by value, moved
    pub fn set_error(&mut self, v: ReceiptError) {
        self.error = v;
    }
}

impl ::protobuf::Message for ReceiptErrorWithOption {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.error, 1, &mut self.unknown_fields)?
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if self.error != ReceiptError::NotEnoughBaseQuota {
            my_size += ::protobuf::rt::enum_size(1, self.error);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if self.error != ReceiptError::NotEnoughBaseQuota {
            os.write_enum(1, self.error.value())?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ReceiptErrorWithOption {
        ReceiptErrorWithOption::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<ReceiptError>>(
                    "error",
                    |m: &ReceiptErrorWithOption| { &m.error },
                    |m: &mut ReceiptErrorWithOption| { &mut m.error },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ReceiptErrorWithOption>(
                    "ReceiptErrorWithOption",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ReceiptErrorWithOption {
        static mut instance: ::protobuf::lazy::Lazy<ReceiptErrorWithOption> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ReceiptErrorWithOption,
        };
        unsafe {
            instance.get(ReceiptErrorWithOption::new)
        }
    }
}

impl ::protobuf::Clear for ReceiptErrorWithOption {
    fn clear(&mut self) {
        self.error = ReceiptError::NotEnoughBaseQuota;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ReceiptErrorWithOption {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ReceiptErrorWithOption {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct StateRoot {
    // message fields
    pub state_root: ::std::vec::Vec<u8>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a StateRoot {
    fn default() -> &'a StateRoot {
        <StateRoot as ::protobuf::Message>::default_instance()
    }
}

impl StateRoot {
    pub fn new() -> StateRoot {
        ::std::default::Default::default()
    }

    // bytes state_root = 1;


    pub fn get_state_root(&self) -> &[u8] {
        &self.state_root
    }
    pub fn clear_state_root(&mut self) {
        self.state_root.clear();
    }

    // Param is passed by value, moved
    pub fn set_state_root(&mut self, v: ::std::vec::Vec<u8>) {
        self.state_root = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_state_root(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.state_root
    }

    // Take field
    pub fn take_state_root(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.state_root, ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for StateRoot {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.state_root)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.state_root.is_empty() {
            my_size += ::protobuf::rt::bytes_size(1, &self.state_root);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.state_root.is_empty() {
            os.write_bytes(1, &self.state_root)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> StateRoot {
        StateRoot::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "state_root",
                    |m: &StateRoot| { &m.state_root },
                    |m: &mut StateRoot| { &mut m.state_root },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<StateRoot>(
                    "StateRoot",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static StateRoot {
        static mut instance: ::protobuf::lazy::Lazy<StateRoot> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const StateRoot,
        };
        unsafe {
            instance.get(StateRoot::new)
        }
    }
}

impl ::protobuf::Clear for StateRoot {
    fn clear(&mut self) {
        self.state_root.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for StateRoot {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for StateRoot {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct VcCommitment {
    // message fields
    pub vc_commitment: ::std::vec::Vec<u8>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a VcCommitment {
    fn default() -> &'a VcCommitment {
        <VcCommitment as ::protobuf::Message>::default_instance()
    }
}

impl VcCommitment {
    pub fn new() -> VcCommitment {
        ::std::default::Default::default()
    }

    // bytes vc_commitment = 1;


    pub fn get_vc_commitment(&self) -> &[u8] {
        &self.vc_commitment
    }
    pub fn clear_vc_commitment(&mut self) {
        self.vc_commitment.clear();
    }

    // Param is passed by value, moved
    pub fn set_vc_commitment(&mut self, v: ::std::vec::Vec<u8>) {
        self.vc_commitment = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_vc_commitment(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.vc_commitment
    }

    // Take field
    pub fn take_vc_commitment(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.vc_commitment, ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for VcCommitment {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.vc_commitment)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.vc_commitment.is_empty() {
            my_size += ::protobuf::rt::bytes_size(1, &self.vc_commitment);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if !self.vc_commitment.is_empty() {
            os.write_bytes(1, &self.vc_commitment)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> VcCommitment {
        VcCommitment::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "vc_commitment",
                    |m: &VcCommitment| { &m.vc_commitment },
                    |m: &mut VcCommitment| { &mut m.vc_commitment },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<VcCommitment>(
                    "VcCommitment",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static VcCommitment {
        static mut instance: ::protobuf::lazy::Lazy<VcCommitment> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const VcCommitment,
        };
        unsafe {
            instance.get(VcCommitment::new)
        }
    }
}

impl ::protobuf::Clear for VcCommitment {
    fn clear(&mut self) {
        self.vc_commitment.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for VcCommitment {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for VcCommitment {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct Receipt {
    // message fields
    pub state_root: ::protobuf::SingularPtrField<StateRoot>,
    pub quota_used: ::std::string::String,
    pub log_bloom: ::std::vec::Vec<u8>,
    pub logs: ::protobuf::RepeatedField<LogEntry>,
    pub error: ::protobuf::SingularPtrField<ReceiptErrorWithOption>,
    pub account_nonce: u64,
    pub transaction_hash: ::std::vec::Vec<u8>,
    pub vc_commitment: ::protobuf::SingularPtrField<VcCommitment>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a Receipt {
    fn default() -> &'a Receipt {
        <Receipt as ::protobuf::Message>::default_instance()
    }
}

impl Receipt {
    pub fn new() -> Receipt {
        ::std::default::Default::default()
    }

    // .StateRoot state_root = 1;


    pub fn get_state_root(&self) -> &StateRoot {
        self.state_root.as_ref().unwrap_or_else(|| StateRoot::default_instance())
    }
    pub fn clear_state_root(&mut self) {
        self.state_root.clear();
    }

    pub fn has_state_root(&self) -> bool {
        self.state_root.is_some()
    }

    // Param is passed by value, moved
    pub fn set_state_root(&mut self, v: StateRoot) {
        self.state_root = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_state_root(&mut self) -> &mut StateRoot {
        if self.state_root.is_none() {
            self.state_root.set_default();
        }
        self.state_root.as_mut().unwrap()
    }

    // Take field
    pub fn take_state_root(&mut self) -> StateRoot {
        self.state_root.take().unwrap_or_else(|| StateRoot::new())
    }

    // string quota_used = 2;


    pub fn get_quota_used(&self) -> &str {
        &self.quota_used
    }
    pub fn clear_quota_used(&mut self) {
        self.quota_used.clear();
    }

    // Param is passed by value, moved
    pub fn set_quota_used(&mut self, v: ::std::string::String) {
        self.quota_used = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_quota_used(&mut self) -> &mut ::std::string::String {
        &mut self.quota_used
    }

    // Take field
    pub fn take_quota_used(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.quota_used, ::std::string::String::new())
    }

    // bytes log_bloom = 3;


    pub fn get_log_bloom(&self) -> &[u8] {
        &self.log_bloom
    }
    pub fn clear_log_bloom(&mut self) {
        self.log_bloom.clear();
    }

    // Param is passed by value, moved
    pub fn set_log_bloom(&mut self, v: ::std::vec::Vec<u8>) {
        self.log_bloom = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_log_bloom(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.log_bloom
    }

    // Take field
    pub fn take_log_bloom(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.log_bloom, ::std::vec::Vec::new())
    }

    // repeated .LogEntry logs = 4;


    pub fn get_logs(&self) -> &[LogEntry] {
        &self.logs
    }
    pub fn clear_logs(&mut self) {
        self.logs.clear();
    }

    // Param is passed by value, moved
    pub fn set_logs(&mut self, v: ::protobuf::RepeatedField<LogEntry>) {
        self.logs = v;
    }

    // Mutable pointer to the field.
    pub fn mut_logs(&mut self) -> &mut ::protobuf::RepeatedField<LogEntry> {
        &mut self.logs
    }

    // Take field
    pub fn take_logs(&mut self) -> ::protobuf::RepeatedField<LogEntry> {
        ::std::mem::replace(&mut self.logs, ::protobuf::RepeatedField::new())
    }

    // .ReceiptErrorWithOption error = 5;


    pub fn get_error(&self) -> &ReceiptErrorWithOption {
        self.error.as_ref().unwrap_or_else(|| ReceiptErrorWithOption::default_instance())
    }
    pub fn clear_error(&mut self) {
        self.error.clear();
    }

    pub fn has_error(&self) -> bool {
        self.error.is_some()
    }

    // Param is passed by value, moved
    pub fn set_error(&mut self, v: ReceiptErrorWithOption) {
        self.error = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_error(&mut self) -> &mut ReceiptErrorWithOption {
        if self.error.is_none() {
            self.error.set_default();
        }
        self.error.as_mut().unwrap()
    }

    // Take field
    pub fn take_error(&mut self) -> ReceiptErrorWithOption {
        self.error.take().unwrap_or_else(|| ReceiptErrorWithOption::new())
    }

    // uint64 account_nonce = 6;


    pub fn get_account_nonce(&self) -> u64 {
        self.account_nonce
    }
    pub fn clear_account_nonce(&mut self) {
        self.account_nonce = 0;
    }

    // Param is passed by value, moved
    pub fn set_account_nonce(&mut self, v: u64) {
        self.account_nonce = v;
    }

    // bytes transaction_hash = 7;


    pub fn get_transaction_hash(&self) -> &[u8] {
        &self.transaction_hash
    }
    pub fn clear_transaction_hash(&mut self) {
        self.transaction_hash.clear();
    }

    // Param is passed by value, moved
    pub fn set_transaction_hash(&mut self, v: ::std::vec::Vec<u8>) {
        self.transaction_hash = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_transaction_hash(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.transaction_hash
    }

    // Take field
    pub fn take_transaction_hash(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.transaction_hash, ::std::vec::Vec::new())
    }

    // .VcCommitment vc_commitment = 8;


    pub fn get_vc_commitment(&self) -> &VcCommitment {
        self.vc_commitment.as_ref().unwrap_or_else(|| VcCommitment::default_instance())
    }
    pub fn clear_vc_commitment(&mut self) {
        self.vc_commitment.clear();
    }

    pub fn has_vc_commitment(&self) -> bool {
        self.vc_commitment.is_some()
    }

    // Param is passed by value, moved
    pub fn set_vc_commitment(&mut self, v: VcCommitment) {
        self.vc_commitment = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_vc_commitment(&mut self) -> &mut VcCommitment {
        if self.vc_commitment.is_none() {
            self.vc_commitment.set_default();
        }
        self.vc_commitment.as_mut().unwrap()
    }

    // Take field
    pub fn take_vc_commitment(&mut self) -> VcCommitment {
        self.vc_commitment.take().unwrap_or_else(|| VcCommitment::new())
    }
}

impl ::protobuf::Message for Receipt {
    fn is_initialized(&self) -> bool {
        for v in &self.state_root {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.logs {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.error {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.vc_commitment {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.state_root)?;
                },
                2 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.quota_used)?;
                },
                3 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.log_bloom)?;
                },
                4 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.logs)?;
                },
                5 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.error)?;
                },
                6 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.account_nonce = tmp;
                },
                7 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.transaction_hash)?;
                },
                8 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.vc_commitment)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.state_root.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if !self.quota_used.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.quota_used);
        }
        if !self.log_bloom.is_empty() {
            my_size += ::protobuf::rt::bytes_size(3, &self.log_bloom);
        }
        for value in &self.logs {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(ref v) = self.error.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if self.account_nonce != 0 {
            my_size += ::protobuf::rt::value_size(6, self.account_nonce, ::protobuf::wire_format::WireTypeVarint);
        }
        if !self.transaction_hash.is_empty() {
            my_size += ::protobuf::rt::bytes_size(7, &self.transaction_hash);
        }
        if let Some(ref v) = self.vc_commitment.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.state_root.as_ref() {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if !self.quota_used.is_empty() {
            os.write_string(2, &self.quota_used)?;
        }
        if !self.log_bloom.is_empty() {
            os.write_bytes(3, &self.log_bloom)?;
        }
        for v in &self.logs {
            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(ref v) = self.error.as_ref() {
            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if self.account_nonce != 0 {
            os.write_uint64(6, self.account_nonce)?;
        }
        if !self.transaction_hash.is_empty() {
            os.write_bytes(7, &self.transaction_hash)?;
        }
        if let Some(ref v) = self.vc_commitment.as_ref() {
            os.write_tag(8, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> Receipt {
        Receipt::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<StateRoot>>(
                    "state_root",
                    |m: &Receipt| { &m.state_root },
                    |m: &mut Receipt| { &mut m.state_root },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                    "quota_used",
                    |m: &Receipt| { &m.quota_used },
                    |m: &mut Receipt| { &mut m.quota_used },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "log_bloom",
                    |m: &Receipt| { &m.log_bloom },
                    |m: &mut Receipt| { &mut m.log_bloom },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<LogEntry>>(
                    "logs",
                    |m: &Receipt| { &m.logs },
                    |m: &mut Receipt| { &mut m.logs },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ReceiptErrorWithOption>>(
                    "error",
                    |m: &Receipt| { &m.error },
                    |m: &mut Receipt| { &mut m.error },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "account_nonce",
                    |m: &Receipt| { &m.account_nonce },
                    |m: &mut Receipt| { &mut m.account_nonce },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "transaction_hash",
                    |m: &Receipt| { &m.transaction_hash },
                    |m: &mut Receipt| { &mut m.transaction_hash },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<VcCommitment>>(
                    "vc_commitment",
                    |m: &Receipt| { &m.vc_commitment },
                    |m: &mut Receipt| { &mut m.vc_commitment },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<Receipt>(
                    "Receipt",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static Receipt {
        static mut instance: ::protobuf::lazy::Lazy<Receipt> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const Receipt,
        };
        unsafe {
            instance.get(Receipt::new)
        }
    }
}

impl ::protobuf::Clear for Receipt {
    fn clear(&mut self) {
        self.state_root.clear();
        self.quota_used.clear();
        self.log_bloom.clear();
        self.logs.clear();
        self.error.clear();
        self.account_nonce = 0;
        self.transaction_hash.clear();
        self.vc_commitment.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for Receipt {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for Receipt {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ReceiptWithOption {
    // message fields
    pub receipt: ::protobuf::SingularPtrField<Receipt>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ReceiptWithOption {
    fn default() -> &'a ReceiptWithOption {
        <ReceiptWithOption as ::protobuf::Message>::default_instance()
    }
}

impl ReceiptWithOption {
    pub fn new() -> ReceiptWithOption {
        ::std::default::Default::default()
    }

    // .Receipt receipt = 1;


    pub fn get_receipt(&self) -> &Receipt {
        self.receipt.as_ref().unwrap_or_else(|| Receipt::default_instance())
    }
    pub fn clear_receipt(&mut self) {
        self.receipt.clear();
    }

    pub fn has_receipt(&self) -> bool {
        self.receipt.is_some()
    }

    // Param is passed by value, moved
    pub fn set_receipt(&mut self, v: Receipt) {
        self.receipt = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_receipt(&mut self) -> &mut Receipt {
        if self.receipt.is_none() {
            self.receipt.set_default();
        }
        self.receipt.as_mut().unwrap()
    }

    // Take field
    pub fn take_receipt(&mut self) -> Receipt {
        self.receipt.take().unwrap_or_else(|| Receipt::new())
    }
}

impl ::protobuf::Message for ReceiptWithOption {
    fn is_initialized(&self) -> bool {
        for v in &self.receipt {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.receipt)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.receipt.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.receipt.as_ref() {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ReceiptWithOption {
        ReceiptWithOption::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Receipt>>(
                    "receipt",
                    |m: &ReceiptWithOption| { &m.receipt },
                    |m: &mut ReceiptWithOption| { &mut m.receipt },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ReceiptWithOption>(
                    "ReceiptWithOption",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ReceiptWithOption {
        static mut instance: ::protobuf::lazy::Lazy<ReceiptWithOption> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ReceiptWithOption,
        };
        unsafe {
            instance.get(ReceiptWithOption::new)
        }
    }
}

impl ::protobuf::Clear for ReceiptWithOption {
    fn clear(&mut self) {
        self.receipt.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ReceiptWithOption {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ReceiptWithOption {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ExecutedInfo {
    // message fields
    pub header: ::protobuf::SingularPtrField<ExecutedHeader>,
    pub receipts: ::protobuf::RepeatedField<ReceiptWithOption>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ExecutedInfo {
    fn default() -> &'a ExecutedInfo {
        <ExecutedInfo as ::protobuf::Message>::default_instance()
    }
}

impl ExecutedInfo {
    pub fn new() -> ExecutedInfo {
        ::std::default::Default::default()
    }

    // .ExecutedHeader header = 1;


    pub fn get_header(&self) -> &ExecutedHeader {
        self.header.as_ref().unwrap_or_else(|| ExecutedHeader::default_instance())
    }
    pub fn clear_header(&mut self) {
        self.header.clear();
    }

    pub fn has_header(&self) -> bool {
        self.header.is_some()
    }

    // Param is passed by value, moved
    pub fn set_header(&mut self, v: ExecutedHeader) {
        self.header = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_header(&mut self) -> &mut ExecutedHeader {
        if self.header.is_none() {
            self.header.set_default();
        }
        self.header.as_mut().unwrap()
    }

    // Take field
    pub fn take_header(&mut self) -> ExecutedHeader {
        self.header.take().unwrap_or_else(|| ExecutedHeader::new())
    }

    // repeated .ReceiptWithOption receipts = 3;


    pub fn get_receipts(&self) -> &[ReceiptWithOption] {
        &self.receipts
    }
    pub fn clear_receipts(&mut self) {
        self.receipts.clear();
    }

    // Param is passed by value, moved
    pub fn set_receipts(&mut self, v: ::protobuf::RepeatedField<ReceiptWithOption>) {
        self.receipts = v;
    }

    // Mutable pointer to the field.
    pub fn mut_receipts(&mut self) -> &mut ::protobuf::RepeatedField<ReceiptWithOption> {
        &mut self.receipts
    }

    // Take field
    pub fn take_receipts(&mut self) -> ::protobuf::RepeatedField<ReceiptWithOption> {
        ::std::mem::replace(&mut self.receipts, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for ExecutedInfo {
    fn is_initialized(&self) -> bool {
        for v in &self.header {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.receipts {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.header)?;
                },
                3 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.receipts)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.header.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        for value in &self.receipts {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.header.as_ref() {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        for v in &self.receipts {
            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ExecutedInfo {
        ExecutedInfo::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ExecutedHeader>>(
                    "header",
                    |m: &ExecutedInfo| { &m.header },
                    |m: &mut ExecutedInfo| { &mut m.header },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ReceiptWithOption>>(
                    "receipts",
                    |m: &ExecutedInfo| { &m.receipts },
                    |m: &mut ExecutedInfo| { &mut m.receipts },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ExecutedInfo>(
                    "ExecutedInfo",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ExecutedInfo {
        static mut instance: ::protobuf::lazy::Lazy<ExecutedInfo> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ExecutedInfo,
        };
        unsafe {
            instance.get(ExecutedInfo::new)
        }
    }
}

impl ::protobuf::Clear for ExecutedInfo {
    fn clear(&mut self) {
        self.header.clear();
        self.receipts.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ExecutedInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ExecutedInfo {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ConsensusConfig {
    // message fields
    pub block_quota_limit: u64,
    pub account_quota_limit: ::protobuf::SingularPtrField<super::blockchain::AccountGasLimit>,
    pub nodes: ::protobuf::RepeatedField<::std::vec::Vec<u8>>,
    pub block_interval: u64,
    pub check_quota: bool,
    pub admin_address: ::std::vec::Vec<u8>,
    pub version: u32,
    pub validators: ::protobuf::RepeatedField<::std::vec::Vec<u8>>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ConsensusConfig {
    fn default() -> &'a ConsensusConfig {
        <ConsensusConfig as ::protobuf::Message>::default_instance()
    }
}

impl ConsensusConfig {
    pub fn new() -> ConsensusConfig {
        ::std::default::Default::default()
    }

    // uint64 block_quota_limit = 1;


    pub fn get_block_quota_limit(&self) -> u64 {
        self.block_quota_limit
    }
    pub fn clear_block_quota_limit(&mut self) {
        self.block_quota_limit = 0;
    }

    // Param is passed by value, moved
    pub fn set_block_quota_limit(&mut self, v: u64) {
        self.block_quota_limit = v;
    }

    // .AccountGasLimit account_quota_limit = 2;


    pub fn get_account_quota_limit(&self) -> &super::blockchain::AccountGasLimit {
        self.account_quota_limit.as_ref().unwrap_or_else(|| super::blockchain::AccountGasLimit::default_instance())
    }
    pub fn clear_account_quota_limit(&mut self) {
        self.account_quota_limit.clear();
    }

    pub fn has_account_quota_limit(&self) -> bool {
        self.account_quota_limit.is_some()
    }

    // Param is passed by value, moved
    pub fn set_account_quota_limit(&mut self, v: super::blockchain::AccountGasLimit) {
        self.account_quota_limit = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_account_quota_limit(&mut self) -> &mut super::blockchain::AccountGasLimit {
        if self.account_quota_limit.is_none() {
            self.account_quota_limit.set_default();
        }
        self.account_quota_limit.as_mut().unwrap()
    }

    // Take field
    pub fn take_account_quota_limit(&mut self) -> super::blockchain::AccountGasLimit {
        self.account_quota_limit.take().unwrap_or_else(|| super::blockchain::AccountGasLimit::new())
    }

    // repeated bytes nodes = 3;


    pub fn get_nodes(&self) -> &[::std::vec::Vec<u8>] {
        &self.nodes
    }
    pub fn clear_nodes(&mut self) {
        self.nodes.clear();
    }

    // Param is passed by value, moved
    pub fn set_nodes(&mut self, v: ::protobuf::RepeatedField<::std::vec::Vec<u8>>) {
        self.nodes = v;
    }

    // Mutable pointer to the field.
    pub fn mut_nodes(&mut self) -> &mut ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        &mut self.nodes
    }

    // Take field
    pub fn take_nodes(&mut self) -> ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        ::std::mem::replace(&mut self.nodes, ::protobuf::RepeatedField::new())
    }

    // uint64 block_interval = 4;


    pub fn get_block_interval(&self) -> u64 {
        self.block_interval
    }
    pub fn clear_block_interval(&mut self) {
        self.block_interval = 0;
    }

    // Param is passed by value, moved
    pub fn set_block_interval(&mut self, v: u64) {
        self.block_interval = v;
    }

    // bool check_quota = 5;


    pub fn get_check_quota(&self) -> bool {
        self.check_quota
    }
    pub fn clear_check_quota(&mut self) {
        self.check_quota = false;
    }

    // Param is passed by value, moved
    pub fn set_check_quota(&mut self, v: bool) {
        self.check_quota = v;
    }

    // bytes admin_address = 6;


    pub fn get_admin_address(&self) -> &[u8] {
        &self.admin_address
    }
    pub fn clear_admin_address(&mut self) {
        self.admin_address.clear();
    }

    // Param is passed by value, moved
    pub fn set_admin_address(&mut self, v: ::std::vec::Vec<u8>) {
        self.admin_address = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_admin_address(&mut self) -> &mut ::std::vec::Vec<u8> {
        &mut self.admin_address
    }

    // Take field
    pub fn take_admin_address(&mut self) -> ::std::vec::Vec<u8> {
        ::std::mem::replace(&mut self.admin_address, ::std::vec::Vec::new())
    }

    // uint32 version = 7;


    pub fn get_version(&self) -> u32 {
        self.version
    }
    pub fn clear_version(&mut self) {
        self.version = 0;
    }

    // Param is passed by value, moved
    pub fn set_version(&mut self, v: u32) {
        self.version = v;
    }

    // repeated bytes validators = 8;


    pub fn get_validators(&self) -> &[::std::vec::Vec<u8>] {
        &self.validators
    }
    pub fn clear_validators(&mut self) {
        self.validators.clear();
    }

    // Param is passed by value, moved
    pub fn set_validators(&mut self, v: ::protobuf::RepeatedField<::std::vec::Vec<u8>>) {
        self.validators = v;
    }

    // Mutable pointer to the field.
    pub fn mut_validators(&mut self) -> &mut ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        &mut self.validators
    }

    // Take field
    pub fn take_validators(&mut self) -> ::protobuf::RepeatedField<::std::vec::Vec<u8>> {
        ::std::mem::replace(&mut self.validators, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for ConsensusConfig {
    fn is_initialized(&self) -> bool {
        for v in &self.account_quota_limit {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.block_quota_limit = tmp;
                },
                2 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.account_quota_limit)?;
                },
                3 => {
                    ::protobuf::rt::read_repeated_bytes_into(wire_type, is, &mut self.nodes)?;
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.block_interval = tmp;
                },
                5 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.check_quota = tmp;
                },
                6 => {
                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.admin_address)?;
                },
                7 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.version = tmp;
                },
                8 => {
                    ::protobuf::rt::read_repeated_bytes_into(wire_type, is, &mut self.validators)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if self.block_quota_limit != 0 {
            my_size += ::protobuf::rt::value_size(1, self.block_quota_limit, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.account_quota_limit.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        for value in &self.nodes {
            my_size += ::protobuf::rt::bytes_size(3, &value);
        };
        if self.block_interval != 0 {
            my_size += ::protobuf::rt::value_size(4, self.block_interval, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.check_quota != false {
            my_size += 2;
        }
        if !self.admin_address.is_empty() {
            my_size += ::protobuf::rt::bytes_size(6, &self.admin_address);
        }
        if self.version != 0 {
            my_size += ::protobuf::rt::value_size(7, self.version, ::protobuf::wire_format::WireTypeVarint);
        }
        for value in &self.validators {
            my_size += ::protobuf::rt::bytes_size(8, &value);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if self.block_quota_limit != 0 {
            os.write_uint64(1, self.block_quota_limit)?;
        }
        if let Some(ref v) = self.account_quota_limit.as_ref() {
            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        for v in &self.nodes {
            os.write_bytes(3, &v)?;
        };
        if self.block_interval != 0 {
            os.write_uint64(4, self.block_interval)?;
        }
        if self.check_quota != false {
            os.write_bool(5, self.check_quota)?;
        }
        if !self.admin_address.is_empty() {
            os.write_bytes(6, &self.admin_address)?;
        }
        if self.version != 0 {
            os.write_uint32(7, self.version)?;
        }
        for v in &self.validators {
            os.write_bytes(8, &v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ConsensusConfig {
        ConsensusConfig::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "block_quota_limit",
                    |m: &ConsensusConfig| { &m.block_quota_limit },
                    |m: &mut ConsensusConfig| { &mut m.block_quota_limit },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::blockchain::AccountGasLimit>>(
                    "account_quota_limit",
                    |m: &ConsensusConfig| { &m.account_quota_limit },
                    |m: &mut ConsensusConfig| { &mut m.account_quota_limit },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "nodes",
                    |m: &ConsensusConfig| { &m.nodes },
                    |m: &mut ConsensusConfig| { &mut m.nodes },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                    "block_interval",
                    |m: &ConsensusConfig| { &m.block_interval },
                    |m: &mut ConsensusConfig| { &mut m.block_interval },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                    "check_quota",
                    |m: &ConsensusConfig| { &m.check_quota },
                    |m: &mut ConsensusConfig| { &mut m.check_quota },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "admin_address",
                    |m: &ConsensusConfig| { &m.admin_address },
                    |m: &mut ConsensusConfig| { &mut m.admin_address },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                    "version",
                    |m: &ConsensusConfig| { &m.version },
                    |m: &mut ConsensusConfig| { &mut m.version },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                    "validators",
                    |m: &ConsensusConfig| { &m.validators },
                    |m: &mut ConsensusConfig| { &mut m.validators },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ConsensusConfig>(
                    "ConsensusConfig",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ConsensusConfig {
        static mut instance: ::protobuf::lazy::Lazy<ConsensusConfig> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ConsensusConfig,
        };
        unsafe {
            instance.get(ConsensusConfig::new)
        }
    }
}

impl ::protobuf::Clear for ConsensusConfig {
    fn clear(&mut self) {
        self.block_quota_limit = 0;
        self.account_quota_limit.clear();
        self.nodes.clear();
        self.block_interval = 0;
        self.check_quota = false;
        self.admin_address.clear();
        self.version = 0;
        self.validators.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ConsensusConfig {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ConsensusConfig {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ExecutedResult {
    // message fields
    pub executed_info: ::protobuf::SingularPtrField<ExecutedInfo>,
    pub config: ::protobuf::SingularPtrField<ConsensusConfig>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ExecutedResult {
    fn default() -> &'a ExecutedResult {
        <ExecutedResult as ::protobuf::Message>::default_instance()
    }
}

impl ExecutedResult {
    pub fn new() -> ExecutedResult {
        ::std::default::Default::default()
    }

    // .ExecutedInfo executed_info = 1;


    pub fn get_executed_info(&self) -> &ExecutedInfo {
        self.executed_info.as_ref().unwrap_or_else(|| ExecutedInfo::default_instance())
    }
    pub fn clear_executed_info(&mut self) {
        self.executed_info.clear();
    }

    pub fn has_executed_info(&self) -> bool {
        self.executed_info.is_some()
    }

    // Param is passed by value, moved
    pub fn set_executed_info(&mut self, v: ExecutedInfo) {
        self.executed_info = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_executed_info(&mut self) -> &mut ExecutedInfo {
        if self.executed_info.is_none() {
            self.executed_info.set_default();
        }
        self.executed_info.as_mut().unwrap()
    }

    // Take field
    pub fn take_executed_info(&mut self) -> ExecutedInfo {
        self.executed_info.take().unwrap_or_else(|| ExecutedInfo::new())
    }

    // .ConsensusConfig config = 2;


    pub fn get_config(&self) -> &ConsensusConfig {
        self.config.as_ref().unwrap_or_else(|| ConsensusConfig::default_instance())
    }
    pub fn clear_config(&mut self) {
        self.config.clear();
    }

    pub fn has_config(&self) -> bool {
        self.config.is_some()
    }

    // Param is passed by value, moved
    pub fn set_config(&mut self, v: ConsensusConfig) {
        self.config = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_config(&mut self) -> &mut ConsensusConfig {
        if self.config.is_none() {
            self.config.set_default();
        }
        self.config.as_mut().unwrap()
    }

    // Take field
    pub fn take_config(&mut self) -> ConsensusConfig {
        self.config.take().unwrap_or_else(|| ConsensusConfig::new())
    }
}

impl ::protobuf::Message for ExecutedResult {
    fn is_initialized(&self) -> bool {
        for v in &self.executed_info {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.config {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.executed_info)?;
                },
                2 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.config)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.executed_info.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.config.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.executed_info.as_ref() {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.config.as_ref() {
            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ExecutedResult {
        ExecutedResult::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ExecutedInfo>>(
                    "executed_info",
                    |m: &ExecutedResult| { &m.executed_info },
                    |m: &mut ExecutedResult| { &mut m.executed_info },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ConsensusConfig>>(
                    "config",
                    |m: &ExecutedResult| { &m.config },
                    |m: &mut ExecutedResult| { &mut m.config },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ExecutedResult>(
                    "ExecutedResult",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ExecutedResult {
        static mut instance: ::protobuf::lazy::Lazy<ExecutedResult> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ExecutedResult,
        };
        unsafe {
            instance.get(ExecutedResult::new)
        }
    }
}

impl ::protobuf::Clear for ExecutedResult {
    fn clear(&mut self) {
        self.executed_info.clear();
        self.config.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ExecutedResult {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ExecutedResult {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum ReceiptError {
    NotEnoughBaseQuota = 0,
    BlockQuotaLimitReached = 1,
    AccountQuotaLimitReached = 2,
    InvalidTransactionNonce = 3,
    NotEnoughCash = 4,
    NoTransactionPermission = 5,
    NoContractPermission = 6,
    NoCallPermission = 7,
    ExecutionInternal = 8,
    TransactionMalformed = 9,
    OutOfQuota = 10,
    BadJumpDestination = 11,
    BadInstruction = 12,
    StackUnderflow = 13,
    OutOfStack = 14,
    Internal = 15,
    MutableCallInStaticContext = 16,
    OutOfBounds = 17,
    Reverted = 18,
}

impl ::protobuf::ProtobufEnum for ReceiptError {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<ReceiptError> {
        match value {
            0 => ::std::option::Option::Some(ReceiptError::NotEnoughBaseQuota),
            1 => ::std::option::Option::Some(ReceiptError::BlockQuotaLimitReached),
            2 => ::std::option::Option::Some(ReceiptError::AccountQuotaLimitReached),
            3 => ::std::option::Option::Some(ReceiptError::InvalidTransactionNonce),
            4 => ::std::option::Option::Some(ReceiptError::NotEnoughCash),
            5 => ::std::option::Option::Some(ReceiptError::NoTransactionPermission),
            6 => ::std::option::Option::Some(ReceiptError::NoContractPermission),
            7 => ::std::option::Option::Some(ReceiptError::NoCallPermission),
            8 => ::std::option::Option::Some(ReceiptError::ExecutionInternal),
            9 => ::std::option::Option::Some(ReceiptError::TransactionMalformed),
            10 => ::std::option::Option::Some(ReceiptError::OutOfQuota),
            11 => ::std::option::Option::Some(ReceiptError::BadJumpDestination),
            12 => ::std::option::Option::Some(ReceiptError::BadInstruction),
            13 => ::std::option::Option::Some(ReceiptError::StackUnderflow),
            14 => ::std::option::Option::Some(ReceiptError::OutOfStack),
            15 => ::std::option::Option::Some(ReceiptError::Internal),
            16 => ::std::option::Option::Some(ReceiptError::MutableCallInStaticContext),
            17 => ::std::option::Option::Some(ReceiptError::OutOfBounds),
            18 => ::std::option::Option::Some(ReceiptError::Reverted),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [ReceiptError] = &[
            ReceiptError::NotEnoughBaseQuota,
            ReceiptError::BlockQuotaLimitReached,
            ReceiptError::AccountQuotaLimitReached,
            ReceiptError::InvalidTransactionNonce,
            ReceiptError::NotEnoughCash,
            ReceiptError::NoTransactionPermission,
            ReceiptError::NoContractPermission,
            ReceiptError::NoCallPermission,
            ReceiptError::ExecutionInternal,
            ReceiptError::TransactionMalformed,
            ReceiptError::OutOfQuota,
            ReceiptError::BadJumpDestination,
            ReceiptError::BadInstruction,
            ReceiptError::StackUnderflow,
            ReceiptError::OutOfStack,
            ReceiptError::Internal,
            ReceiptError::MutableCallInStaticContext,
            ReceiptError::OutOfBounds,
            ReceiptError::Reverted,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::EnumDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                ::protobuf::reflect::EnumDescriptor::new("ReceiptError", file_descriptor_proto())
            })
        }
    }
}

impl ::std::marker::Copy for ReceiptError {
}

impl ::std::default::Default for ReceiptError {
    fn default() -> Self {
        ReceiptError::NotEnoughBaseQuota
    }
}

impl ::protobuf::reflect::ProtobufValue for ReceiptError {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Enum(self.descriptor())
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x0eexecutor.proto\x1a\x10blockchain.proto\"\xf1\x02\n\x0eExecutedHead\
    er\x12\x1a\n\x08prevhash\x18\x01\x20\x01(\x0cR\x08prevhash\x12\x1c\n\tti\
    mestamp\x18\x02\x20\x01(\x04R\ttimestamp\x12\x16\n\x06height\x18\x03\x20\
    \x01(\x04R\x06height\x12\x1d\n\nstate_root\x18\x04\x20\x01(\x0cR\tstateR\
    oot\x12+\n\x11transactions_root\x18\x05\x20\x01(\x0cR\x10transactionsRoo\
    t\x12#\n\rreceipts_root\x18\x06\x20\x01(\x0cR\x0creceiptsRoot\x12\x1b\n\
    \tlog_bloom\x18\x07\x20\x01(\x0cR\x08logBloom\x12\x1d\n\nquota_used\x18\
    \x08\x20\x01(\x04R\tquotaUsed\x12\x1f\n\x0bquota_limit\x18\t\x20\x01(\
    \x04R\nquotaLimit\x12\x1a\n\x08proposer\x18\n\x20\x01(\x0cR\x08proposer\
    \x12#\n\rvc_commitment\x18\x0b\x20\x01(\x0cR\x0cvcCommitment\"P\n\x08Log\
    Entry\x12\x18\n\x07address\x18\x01\x20\x01(\x0cR\x07address\x12\x16\n\
    \x06topics\x18\x02\x20\x03(\x0cR\x06topics\x12\x12\n\x04data\x18\x03\x20\
    \x01(\x0cR\x04data\"=\n\x16ReceiptErrorWithOption\x12#\n\x05error\x18\
    \x01\x20\x01(\x0e2\r.ReceiptErrorR\x05error\"*\n\tStateRoot\x12\x1d\n\ns\
    tate_root\x18\x01\x20\x01(\x0cR\tstateRoot\"3\n\x0cVcCommitment\x12#\n\r\
    vc_commitment\x18\x01\x20\x01(\x0cR\x0cvcCommitment\"\xc2\x02\n\x07Recei\
    pt\x12)\n\nstate_root\x18\x01\x20\x01(\x0b2\n.StateRootR\tstateRoot\x12\
    \x1d\n\nquota_used\x18\x02\x20\x01(\tR\tquotaUsed\x12\x1b\n\tlog_bloom\
    \x18\x03\x20\x01(\x0cR\x08logBloom\x12\x1d\n\x04logs\x18\x04\x20\x03(\
    \x0b2\t.LogEntryR\x04logs\x12-\n\x05error\x18\x05\x20\x01(\x0b2\x17.Rece\
    iptErrorWithOptionR\x05error\x12#\n\raccount_nonce\x18\x06\x20\x01(\x04R\
    \x0caccountNonce\x12)\n\x10transaction_hash\x18\x07\x20\x01(\x0cR\x0ftra\
    nsactionHash\x122\n\rvc_commitment\x18\x08\x20\x01(\x0b2\r.VcCommitmentR\
    \x0cvcCommitment\"7\n\x11ReceiptWithOption\x12\"\n\x07receipt\x18\x01\
    \x20\x01(\x0b2\x08.ReceiptR\x07receipt\"g\n\x0cExecutedInfo\x12'\n\x06he\
    ader\x18\x01\x20\x01(\x0b2\x0f.ExecutedHeaderR\x06header\x12.\n\x08recei\
    pts\x18\x03\x20\x03(\x0b2\x12.ReceiptWithOptionR\x08receipts\"\xbc\x02\n\
    \x0fConsensusConfig\x12*\n\x11block_quota_limit\x18\x01\x20\x01(\x04R\
    \x0fblockQuotaLimit\x12@\n\x13account_quota_limit\x18\x02\x20\x01(\x0b2\
    \x10.AccountGasLimitR\x11accountQuotaLimit\x12\x14\n\x05nodes\x18\x03\
    \x20\x03(\x0cR\x05nodes\x12%\n\x0eblock_interval\x18\x04\x20\x01(\x04R\r\
    blockInterval\x12\x1f\n\x0bcheck_quota\x18\x05\x20\x01(\x08R\ncheckQuota\
    \x12#\n\radmin_address\x18\x06\x20\x01(\x0cR\x0cadminAddress\x12\x18\n\
    \x07version\x18\x07\x20\x01(\rR\x07version\x12\x1e\n\nvalidators\x18\x08\
    \x20\x03(\x0cR\nvalidators\"n\n\x0eExecutedResult\x122\n\rexecuted_info\
    \x18\x01\x20\x01(\x0b2\r.ExecutedInfoR\x0cexecutedInfo\x12(\n\x06config\
    \x18\x02\x20\x01(\x0b2\x10.ConsensusConfigR\x06config*\xbb\x03\n\x0cRece\
    iptError\x12\x16\n\x12NotEnoughBaseQuota\x10\0\x12\x1a\n\x16BlockQuotaLi\
    mitReached\x10\x01\x12\x1c\n\x18AccountQuotaLimitReached\x10\x02\x12\x1b\
    \n\x17InvalidTransactionNonce\x10\x03\x12\x11\n\rNotEnoughCash\x10\x04\
    \x12\x1b\n\x17NoTransactionPermission\x10\x05\x12\x18\n\x14NoContractPer\
    mission\x10\x06\x12\x14\n\x10NoCallPermission\x10\x07\x12\x15\n\x11Execu\
    tionInternal\x10\x08\x12\x18\n\x14TransactionMalformed\x10\t\x12\x0e\n\n\
    OutOfQuota\x10\n\x12\x16\n\x12BadJumpDestination\x10\x0b\x12\x12\n\x0eBa\
    dInstruction\x10\x0c\x12\x12\n\x0eStackUnderflow\x10\r\x12\x0e\n\nOutOfS\
    tack\x10\x0e\x12\x0c\n\x08Internal\x10\x0f\x12\x1e\n\x1aMutableCallInSta\
    ticContext\x10\x10\x12\x0f\n\x0bOutOfBounds\x10\x11\x12\x0c\n\x08Reverte\
    d\x10\x12J\xbc\x19\n\x06\x12\x04\0\0\\\x01\n\x08\n\x01\x0c\x12\x03\0\0\
    \x12\n\t\n\x02\x03\0\x12\x03\x02\0\x1a\n\n\n\x02\x04\0\x12\x04\x04\0\x10\
    \x01\n\n\n\x03\x04\0\x01\x12\x03\x04\x08\x16\n\x0b\n\x04\x04\0\x02\0\x12\
    \x03\x05\x04\x17\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x05\x04\t\n\x0c\n\
    \x05\x04\0\x02\0\x01\x12\x03\x05\n\x12\n\x0c\n\x05\x04\0\x02\0\x03\x12\
    \x03\x05\x15\x16\n\x0b\n\x04\x04\0\x02\x01\x12\x03\x06\x04\x19\n\x0c\n\
    \x05\x04\0\x02\x01\x05\x12\x03\x06\x04\n\n\x0c\n\x05\x04\0\x02\x01\x01\
    \x12\x03\x06\x0b\x14\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x06\x17\x18\n\
    \x0b\n\x04\x04\0\x02\x02\x12\x03\x07\x04\x16\n\x0c\n\x05\x04\0\x02\x02\
    \x05\x12\x03\x07\x04\n\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x07\x0b\x11\
    \n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x07\x14\x15\n\x0b\n\x04\x04\0\x02\
    \x03\x12\x03\x08\x04\x19\n\x0c\n\x05\x04\0\x02\x03\x05\x12\x03\x08\x04\t\
    \n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03\x08\n\x14\n\x0c\n\x05\x04\0\x02\
    \x03\x03\x12\x03\x08\x17\x18\n\x0b\n\x04\x04\0\x02\x04\x12\x03\t\x04\x20\
    \n\x0c\n\x05\x04\0\x02\x04\x05\x12\x03\t\x04\t\n\x0c\n\x05\x04\0\x02\x04\
    \x01\x12\x03\t\n\x1b\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03\t\x1e\x1f\n\
    \x0b\n\x04\x04\0\x02\x05\x12\x03\n\x04\x1c\n\x0c\n\x05\x04\0\x02\x05\x05\
    \x12\x03\n\x04\t\n\x0c\n\x05\x04\0\x02\x05\x01\x12\x03\n\n\x17\n\x0c\n\
    \x05\x04\0\x02\x05\x03\x12\x03\n\x1a\x1b\n\x0b\n\x04\x04\0\x02\x06\x12\
    \x03\x0b\x04\x18\n\x0c\n\x05\x04\0\x02\x06\x05\x12\x03\x0b\x04\t\n\x0c\n\
    \x05\x04\0\x02\x06\x01\x12\x03\x0b\n\x13\n\x0c\n\x05\x04\0\x02\x06\x03\
    \x12\x03\x0b\x16\x17\n\x0b\n\x04\x04\0\x02\x07\x12\x03\x0c\x04\x1a\n\x0c\
    \n\x05\x04\0\x02\x07\x05\x12\x03\x0c\x04\n\n\x0c\n\x05\x04\0\x02\x07\x01\
    \x12\x03\x0c\x0b\x15\n\x0c\n\x05\x04\0\x02\x07\x03\x12\x03\x0c\x18\x19\n\
    \x0b\n\x04\x04\0\x02\x08\x12\x03\r\x04\x1b\n\x0c\n\x05\x04\0\x02\x08\x05\
    \x12\x03\r\x04\n\n\x0c\n\x05\x04\0\x02\x08\x01\x12\x03\r\x0b\x16\n\x0c\n\
    \x05\x04\0\x02\x08\x03\x12\x03\r\x19\x1a\n\x0b\n\x04\x04\0\x02\t\x12\x03\
    \x0e\x04\x18\n\x0c\n\x05\x04\0\x02\t\x05\x12\x03\x0e\x04\t\n\x0c\n\x05\
    \x04\0\x02\t\x01\x12\x03\x0e\n\x12\n\x0c\n\x05\x04\0\x02\t\x03\x12\x03\
    \x0e\x15\x17\n\x0b\n\x04\x04\0\x02\n\x12\x03\x0f\x04\x1d\n\x0c\n\x05\x04\
    \0\x02\n\x05\x12\x03\x0f\x04\t\n\x0c\n\x05\x04\0\x02\n\x01\x12\x03\x0f\n\
    \x17\n\x0c\n\x05\x04\0\x02\n\x03\x12\x03\x0f\x1a\x1c\n\n\n\x02\x05\0\x12\
    \x04\x12\0(\x01\n\n\n\x03\x05\0\x01\x12\x03\x12\x05\x11\n\x1c\n\x04\x05\
    \0\x02\0\x12\x03\x14\x04\x1b\x1a\x0fExecutionError\n\n\x0c\n\x05\x05\0\
    \x02\0\x01\x12\x03\x14\x04\x16\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x14\
    \x19\x1a\n\x0b\n\x04\x05\0\x02\x01\x12\x03\x15\x04\x1f\n\x0c\n\x05\x05\0\
    \x02\x01\x01\x12\x03\x15\x04\x1a\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\
    \x15\x1d\x1e\n\x0b\n\x04\x05\0\x02\x02\x12\x03\x16\x04!\n\x0c\n\x05\x05\
    \0\x02\x02\x01\x12\x03\x16\x04\x1c\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\
    \x16\x1f\x20\n\x0b\n\x04\x05\0\x02\x03\x12\x03\x17\x04\x20\n\x0c\n\x05\
    \x05\0\x02\x03\x01\x12\x03\x17\x04\x1b\n\x0c\n\x05\x05\0\x02\x03\x02\x12\
    \x03\x17\x1e\x1f\n\x0b\n\x04\x05\0\x02\x04\x12\x03\x18\x04\x16\n\x0c\n\
    \x05\x05\0\x02\x04\x01\x12\x03\x18\x04\x11\n\x0c\n\x05\x05\0\x02\x04\x02\
    \x12\x03\x18\x14\x15\n\x0b\n\x04\x05\0\x02\x05\x12\x03\x19\x04\x20\n\x0c\
    \n\x05\x05\0\x02\x05\x01\x12\x03\x19\x04\x1b\n\x0c\n\x05\x05\0\x02\x05\
    \x02\x12\x03\x19\x1e\x1f\n\x0b\n\x04\x05\0\x02\x06\x12\x03\x1a\x04\x1d\n\
    \x0c\n\x05\x05\0\x02\x06\x01\x12\x03\x1a\x04\x18\n\x0c\n\x05\x05\0\x02\
    \x06\x02\x12\x03\x1a\x1b\x1c\n\x0b\n\x04\x05\0\x02\x07\x12\x03\x1b\x04\
    \x19\n\x0c\n\x05\x05\0\x02\x07\x01\x12\x03\x1b\x04\x14\n\x0c\n\x05\x05\0\
    \x02\x07\x02\x12\x03\x1b\x17\x18\n\x0b\n\x04\x05\0\x02\x08\x12\x03\x1c\
    \x04\x1a\n\x0c\n\x05\x05\0\x02\x08\x01\x12\x03\x1c\x04\x15\n\x0c\n\x05\
    \x05\0\x02\x08\x02\x12\x03\x1c\x18\x19\n\x0b\n\x04\x05\0\x02\t\x12\x03\
    \x1d\x04\x1d\n\x0c\n\x05\x05\0\x02\t\x01\x12\x03\x1d\x04\x18\n\x0c\n\x05\
    \x05\0\x02\t\x02\x12\x03\x1d\x1b\x1c\n\x16\n\x04\x05\0\x02\n\x12\x03\x1f\
    \x04\x14\x1a\tEvmError\n\n\x0c\n\x05\x05\0\x02\n\x01\x12\x03\x1f\x04\x0e\
    \n\x0c\n\x05\x05\0\x02\n\x02\x12\x03\x1f\x11\x13\n\x0b\n\x04\x05\0\x02\
    \x0b\x12\x03\x20\x04\x1c\n\x0c\n\x05\x05\0\x02\x0b\x01\x12\x03\x20\x04\
    \x16\n\x0c\n\x05\x05\0\x02\x0b\x02\x12\x03\x20\x19\x1b\n\x0b\n\x04\x05\0\
    \x02\x0c\x12\x03!\x04\x18\n\x0c\n\x05\x05\0\x02\x0c\x01\x12\x03!\x04\x12\
    \n\x0c\n\x05\x05\0\x02\x0c\x02\x12\x03!\x15\x17\n\x0b\n\x04\x05\0\x02\r\
    \x12\x03\"\x04\x18\n\x0c\n\x05\x05\0\x02\r\x01\x12\x03\"\x04\x12\n\x0c\n\
    \x05\x05\0\x02\r\x02\x12\x03\"\x15\x17\n\x0b\n\x04\x05\0\x02\x0e\x12\x03\
    #\x04\x14\n\x0c\n\x05\x05\0\x02\x0e\x01\x12\x03#\x04\x0e\n\x0c\n\x05\x05\
    \0\x02\x0e\x02\x12\x03#\x11\x13\n\x0b\n\x04\x05\0\x02\x0f\x12\x03$\x04\
    \x12\n\x0c\n\x05\x05\0\x02\x0f\x01\x12\x03$\x04\x0c\n\x0c\n\x05\x05\0\
    \x02\x0f\x02\x12\x03$\x0f\x11\n\x0b\n\x04\x05\0\x02\x10\x12\x03%\x04$\n\
    \x0c\n\x05\x05\0\x02\x10\x01\x12\x03%\x04\x1e\n\x0c\n\x05\x05\0\x02\x10\
    \x02\x12\x03%!#\n\x0b\n\x04\x05\0\x02\x11\x12\x03&\x04\x15\n\x0c\n\x05\
    \x05\0\x02\x11\x01\x12\x03&\x04\x0f\n\x0c\n\x05\x05\0\x02\x11\x02\x12\
    \x03&\x12\x14\n\x0b\n\x04\x05\0\x02\x12\x12\x03'\x04\x12\n\x0c\n\x05\x05\
    \0\x02\x12\x01\x12\x03'\x04\x0c\n\x0c\n\x05\x05\0\x02\x12\x02\x12\x03'\
    \x0f\x11\n\n\n\x02\x04\x01\x12\x04*\0.\x01\n\n\n\x03\x04\x01\x01\x12\x03\
    *\x08\x10\n\x0b\n\x04\x04\x01\x02\0\x12\x03+\x04\x16\n\x0c\n\x05\x04\x01\
    \x02\0\x05\x12\x03+\x04\t\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03+\n\x11\n\
    \x0c\n\x05\x04\x01\x02\0\x03\x12\x03+\x14\x15\n\x0b\n\x04\x04\x01\x02\
    \x01\x12\x03,\x04\x1e\n\x0c\n\x05\x04\x01\x02\x01\x04\x12\x03,\x04\x0c\n\
    \x0c\n\x05\x04\x01\x02\x01\x05\x12\x03,\r\x12\n\x0c\n\x05\x04\x01\x02\
    \x01\x01\x12\x03,\x13\x19\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03,\x1c\
    \x1d\n\x0b\n\x04\x04\x01\x02\x02\x12\x03-\x04\x13\n\x0c\n\x05\x04\x01\
    \x02\x02\x05\x12\x03-\x04\t\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03-\n\
    \x0e\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x03-\x11\x12\n\n\n\x02\x04\x02\
    \x12\x040\02\x01\n\n\n\x03\x04\x02\x01\x12\x030\x08\x1e\n\x0b\n\x04\x04\
    \x02\x02\0\x12\x031\x04\x1b\n\x0c\n\x05\x04\x02\x02\0\x06\x12\x031\x04\
    \x10\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x031\x11\x16\n\x0c\n\x05\x04\x02\
    \x02\0\x03\x12\x031\x19\x1a\n\n\n\x02\x04\x03\x12\x044\06\x01\n\n\n\x03\
    \x04\x03\x01\x12\x034\x08\x11\n\x0b\n\x04\x04\x03\x02\0\x12\x035\x04\x19\
    \n\x0c\n\x05\x04\x03\x02\0\x05\x12\x035\x04\t\n\x0c\n\x05\x04\x03\x02\0\
    \x01\x12\x035\n\x14\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x035\x17\x18\n\n\n\
    \x02\x04\x04\x12\x047\09\x01\n\n\n\x03\x04\x04\x01\x12\x037\x08\x14\n\
    \x0b\n\x04\x04\x04\x02\0\x12\x038\x04\x1c\n\x0c\n\x05\x04\x04\x02\0\x05\
    \x12\x038\x04\t\n\x0c\n\x05\x04\x04\x02\0\x01\x12\x038\n\x17\n\x0c\n\x05\
    \x04\x04\x02\0\x03\x12\x038\x1a\x1b\n\n\n\x02\x04\x05\x12\x04:\0C\x01\n\
    \n\n\x03\x04\x05\x01\x12\x03:\x08\x0f\n\x0b\n\x04\x04\x05\x02\0\x12\x03;\
    \x04\x1d\n\x0c\n\x05\x04\x05\x02\0\x06\x12\x03;\x04\r\n\x0c\n\x05\x04\
    \x05\x02\0\x01\x12\x03;\x0e\x18\n\x0c\n\x05\x04\x05\x02\0\x03\x12\x03;\
    \x1b\x1c\n\x0b\n\x04\x04\x05\x02\x01\x12\x03<\x04\x1a\n\x0c\n\x05\x04\
    \x05\x02\x01\x05\x12\x03<\x04\n\n\x0c\n\x05\x04\x05\x02\x01\x01\x12\x03<\
    \x0b\x15\n\x0c\n\x05\x04\x05\x02\x01\x03\x12\x03<\x18\x19\n\x0b\n\x04\
    \x04\x05\x02\x02\x12\x03=\x04\x18\n\x0c\n\x05\x04\x05\x02\x02\x05\x12\
    \x03=\x04\t\n\x0c\n\x05\x04\x05\x02\x02\x01\x12\x03=\n\x13\n\x0c\n\x05\
    \x04\x05\x02\x02\x03\x12\x03=\x16\x17\n\x0b\n\x04\x04\x05\x02\x03\x12\
    \x03>\x04\x1f\n\x0c\n\x05\x04\x05\x02\x03\x04\x12\x03>\x04\x0c\n\x0c\n\
    \x05\x04\x05\x02\x03\x06\x12\x03>\r\x15\n\x0c\n\x05\x04\x05\x02\x03\x01\
    \x12\x03>\x16\x1a\n\x0c\n\x05\x04\x05\x02\x03\x03\x12\x03>\x1d\x1e\n\x0b\
    \n\x04\x04\x05\x02\x04\x12\x03?\x04%\n\x0c\n\x05\x04\x05\x02\x04\x06\x12\
    \x03?\x04\x1a\n\x0c\n\x05\x04\x05\x02\x04\x01\x12\x03?\x1b\x20\n\x0c\n\
    \x05\x04\x05\x02\x04\x03\x12\x03?#$\n\x0b\n\x04\x04\x05\x02\x05\x12\x03@\
    \x04\x1d\n\x0c\n\x05\x04\x05\x02\x05\x05\x12\x03@\x04\n\n\x0c\n\x05\x04\
    \x05\x02\x05\x01\x12\x03@\x0b\x18\n\x0c\n\x05\x04\x05\x02\x05\x03\x12\
    \x03@\x1b\x1c\n\x0b\n\x04\x04\x05\x02\x06\x12\x03A\x04\x1f\n\x0c\n\x05\
    \x04\x05\x02\x06\x05\x12\x03A\x04\t\n\x0c\n\x05\x04\x05\x02\x06\x01\x12\
    \x03A\n\x1a\n\x0c\n\x05\x04\x05\x02\x06\x03\x12\x03A\x1d\x1e\n\x0b\n\x04\
    \x04\x05\x02\x07\x12\x03B\x04#\n\x0c\n\x05\x04\x05\x02\x07\x06\x12\x03B\
    \x04\x10\n\x0c\n\x05\x04\x05\x02\x07\x01\x12\x03B\x11\x1e\n\x0c\n\x05\
    \x04\x05\x02\x07\x03\x12\x03B!\"\n\n\n\x02\x04\x06\x12\x04E\0G\x01\n\n\n\
    \x03\x04\x06\x01\x12\x03E\x08\x19\n\x0b\n\x04\x04\x06\x02\0\x12\x03F\x04\
    \x18\n\x0c\n\x05\x04\x06\x02\0\x06\x12\x03F\x04\x0b\n\x0c\n\x05\x04\x06\
    \x02\0\x01\x12\x03F\x0c\x13\n\x0c\n\x05\x04\x06\x02\0\x03\x12\x03F\x16\
    \x17\n\n\n\x02\x04\x07\x12\x04I\0L\x01\n\n\n\x03\x04\x07\x01\x12\x03I\
    \x08\x14\n\x0b\n\x04\x04\x07\x02\0\x12\x03J\x04\x1e\n\x0c\n\x05\x04\x07\
    \x02\0\x06\x12\x03J\x04\x12\n\x0c\n\x05\x04\x07\x02\0\x01\x12\x03J\x13\
    \x19\n\x0c\n\x05\x04\x07\x02\0\x03\x12\x03J\x1c\x1d\n\x0b\n\x04\x04\x07\
    \x02\x01\x12\x03K\x04,\n\x0c\n\x05\x04\x07\x02\x01\x04\x12\x03K\x04\x0c\
    \n\x0c\n\x05\x04\x07\x02\x01\x06\x12\x03K\r\x1e\n\x0c\n\x05\x04\x07\x02\
    \x01\x01\x12\x03K\x1f'\n\x0c\n\x05\x04\x07\x02\x01\x03\x12\x03K*+\n\n\n\
    \x02\x04\x08\x12\x04N\0W\x01\n\n\n\x03\x04\x08\x01\x12\x03N\x08\x17\n\
    \x0b\n\x04\x04\x08\x02\0\x12\x03O\x04!\n\x0c\n\x05\x04\x08\x02\0\x05\x12\
    \x03O\x04\n\n\x0c\n\x05\x04\x08\x02\0\x01\x12\x03O\x0b\x1c\n\x0c\n\x05\
    \x04\x08\x02\0\x03\x12\x03O\x1f\x20\n\x0b\n\x04\x04\x08\x02\x01\x12\x03P\
    \x04,\n\x0c\n\x05\x04\x08\x02\x01\x06\x12\x03P\x04\x13\n\x0c\n\x05\x04\
    \x08\x02\x01\x01\x12\x03P\x14'\n\x0c\n\x05\x04\x08\x02\x01\x03\x12\x03P*\
    +\n\x0b\n\x04\x04\x08\x02\x02\x12\x03Q\x04\x1d\n\x0c\n\x05\x04\x08\x02\
    \x02\x04\x12\x03Q\x04\x0c\n\x0c\n\x05\x04\x08\x02\x02\x05\x12\x03Q\r\x12\
    \n\x0c\n\x05\x04\x08\x02\x02\x01\x12\x03Q\x13\x18\n\x0c\n\x05\x04\x08\
    \x02\x02\x03\x12\x03Q\x1b\x1c\n\x0b\n\x04\x04\x08\x02\x03\x12\x03R\x04\
    \x1e\n\x0c\n\x05\x04\x08\x02\x03\x05\x12\x03R\x04\n\n\x0c\n\x05\x04\x08\
    \x02\x03\x01\x12\x03R\x0b\x19\n\x0c\n\x05\x04\x08\x02\x03\x03\x12\x03R\
    \x1c\x1d\n\x0b\n\x04\x04\x08\x02\x04\x12\x03S\x04\x19\n\x0c\n\x05\x04\
    \x08\x02\x04\x05\x12\x03S\x04\x08\n\x0c\n\x05\x04\x08\x02\x04\x01\x12\
    \x03S\t\x14\n\x0c\n\x05\x04\x08\x02\x04\x03\x12\x03S\x17\x18\n\x0b\n\x04\
    \x04\x08\x02\x05\x12\x03T\x04\x1c\n\x0c\n\x05\x04\x08\x02\x05\x05\x12\
    \x03T\x04\t\n\x0c\n\x05\x04\x08\x02\x05\x01\x12\x03T\n\x17\n\x0c\n\x05\
    \x04\x08\x02\x05\x03\x12\x03T\x1a\x1b\n\x0b\n\x04\x04\x08\x02\x06\x12\
    \x03U\x04\x17\n\x0c\n\x05\x04\x08\x02\x06\x05\x12\x03U\x04\n\n\x0c\n\x05\
    \x04\x08\x02\x06\x01\x12\x03U\x0b\x12\n\x0c\n\x05\x04\x08\x02\x06\x03\
    \x12\x03U\x15\x16\n\x0b\n\x04\x04\x08\x02\x07\x12\x03V\x04\"\n\x0c\n\x05\
    \x04\x08\x02\x07\x04\x12\x03V\x04\x0c\n\x0c\n\x05\x04\x08\x02\x07\x05\
    \x12\x03V\r\x12\n\x0c\n\x05\x04\x08\x02\x07\x01\x12\x03V\x13\x1d\n\x0c\n\
    \x05\x04\x08\x02\x07\x03\x12\x03V\x20!\n\n\n\x02\x04\t\x12\x04Y\0\\\x01\
    \n\n\n\x03\x04\t\x01\x12\x03Y\x08\x16\n\x0b\n\x04\x04\t\x02\0\x12\x03Z\
    \x04#\n\x0c\n\x05\x04\t\x02\0\x06\x12\x03Z\x04\x10\n\x0c\n\x05\x04\t\x02\
    \0\x01\x12\x03Z\x11\x1e\n\x0c\n\x05\x04\t\x02\0\x03\x12\x03Z!\"\n\x0b\n\
    \x04\x04\t\x02\x01\x12\x03[\x04\x1f\n\x0c\n\x05\x04\t\x02\x01\x06\x12\
    \x03[\x04\x13\n\x0c\n\x05\x04\t\x02\x01\x01\x12\x03[\x14\x1a\n\x0c\n\x05\
    \x04\t\x02\x01\x03\x12\x03[\x1d\x1eb\x06proto3\
";

static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
    lock: ::protobuf::lazy::ONCE_INIT,
    ptr: 0 as *const ::protobuf::descriptor::FileDescriptorProto,
};

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    unsafe {
        file_descriptor_proto_lazy.get(|| {
            parse_descriptor_proto()
        })
    }
}
