diff --git a/.github/workflows/buf.yaml b/.github/workflows/buf.yaml index 8813aab2a..74cccc7c2 100644 --- a/.github/workflows/buf.yaml +++ b/.github/workflows/buf.yaml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set up buf - uses: bufbuild/buf-setup-action@a47c93e0b1648769eb9a2e1f98e7b4e3e13089f0 # v1.50.0 + uses: bufbuild/buf-setup-action@a47c93e0b1648d5651a065437926377d060baa99 # v1.50.0 - name: Lint protos run: buf lint diff --git a/deploy/local/docker-compose/vector-http-kafka.yaml b/deploy/local/docker-compose/vector-http-kafka.yaml index d69bcac32..a530b790f 100644 --- a/deploy/local/docker-compose/vector-http-kafka.yaml +++ b/deploy/local/docker-compose/vector-http-kafka.yaml @@ -52,6 +52,7 @@ transforms: eth_v2_beacon_block_v2: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_V2" eth_v2_beacon_block_voluntary_exit: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_VOLUNTARY_EXIT" eth_v2_beacon_block_withdrawal: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_WITHDRAWAL" + eth_v2_beacon_block_access_list: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" eth_v2_beacon_block: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK" mempool_transaction_v2: .event.name == "MEMPOOL_TRANSACTION_V2" mempool_transaction: .event.name == "MEMPOOL_TRANSACTION" @@ -763,6 +764,22 @@ sinks: enabled: true encoding: codec: json + beacon_api_eth_v2_beacon_block_access_list_kafka: + type: kafka + buffer: + max_events: 500000 + batch: + timeout_secs: 0.5 + inputs: + - xatu_server_events_router.eth_v2_beacon_block_access_list + bootstrap_servers: "${KAFKA_BROKERS}" + key_field: "event.id" + topic: beacon-api-eth-v2-beacon-block-access-list + compression: snappy + healthcheck: + enabled: true + encoding: + codec: json beacon_api_eth_v1_beacon_blob_sidecar_kafka: type: kafka buffer: diff --git a/deploy/local/docker-compose/vector-kafka-clickhouse.yaml b/deploy/local/docker-compose/vector-kafka-clickhouse.yaml index 046bc0d8b..22031ec17 100644 --- a/deploy/local/docker-compose/vector-kafka-clickhouse.yaml +++ b/deploy/local/docker-compose/vector-kafka-clickhouse.yaml @@ -424,6 +424,7 @@ transforms: canonical_beacon_block_voluntary_exit: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_VOLUNTARY_EXIT" canonical_beacon_validators: .event.name == "BEACON_API_ETH_V1_BEACON_VALIDATORS" canonical_beacon_block_withdrawal: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_WITHDRAWAL" + canonical_beacon_block_access_list: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" canonical_beacon_block: .event.name == "BEACON_API_ETH_V2_BEACON_BLOCK_V2" && .meta.client.additional_data.finalized_when_requested == true canonical_beacon_proposer_duty: .event.name == "BEACON_API_ETH_V1_PROPOSER_DUTY" && .meta.client.additional_data.state_id == "finalized" canonical_beacon_committee: .event.name == "BEACON_API_ETH_V1_BEACON_COMMITTEE" && .meta.client.additional_data.state_id == "finalized" @@ -480,6 +481,7 @@ transforms: - xatu_server_events_router.canonical_beacon_block_proposer_slashing - xatu_server_events_router.canonical_beacon_block_voluntary_exit - xatu_server_events_router.canonical_beacon_block_withdrawal + - xatu_server_events_router.canonical_beacon_block_access_list - xatu_server_events_router.canonical_beacon_proposer_duty - xatu_server_events_router.canonical_beacon_committee - xatu_server_events_router.eth_v1_beacon_committee @@ -1207,6 +1209,7 @@ transforms: .execution_payload_base_fee_per_gas = .data.message.body.execution_payload.base_fee_per_gas .execution_payload_blob_gas_used = .data.message.body.execution_payload.blob_gas_used .execution_payload_excess_blob_gas = .data.message.body.execution_payload.excess_blob_gas + .execution_payload_slot_number = .data.message.body.execution_payload.slot_number .execution_payload_gas_limit = .data.message.body.execution_payload.gas_limit .execution_payload_gas_used = .data.message.body.execution_payload.gas_used .execution_payload_state_root = .data.message.body.execution_payload.state_root @@ -1278,6 +1281,7 @@ transforms: .execution_payload_base_fee_per_gas = .data.message.body.execution_payload.base_fee_per_gas .execution_payload_blob_gas_used = .data.message.body.execution_payload.blob_gas_used .execution_payload_excess_blob_gas = .data.message.body.execution_payload.excess_blob_gas + .execution_payload_slot_number = .data.message.body.execution_payload.slot_number .execution_payload_gas_limit = .data.message.body.execution_payload.gas_limit .execution_payload_gas_used = .data.message.body.execution_payload.gas_used .execution_payload_state_root = .data.message.body.execution_payload.state_root @@ -1557,6 +1561,41 @@ transforms: del(.event) del(.meta) del(.data) + canonical_beacon_block_access_list_formatted: + type: remap + inputs: + - xatu_server_events_router.canonical_beacon_block_access_list + source: |- + .slot = .meta.client.additional_data.block.slot.number + slot_start_date_time, err = parse_timestamp(.meta.client.additional_data.block.slot.start_date_time, format: "%+"); + if err == null { + .slot_start_date_time = to_unix_timestamp(slot_start_date_time) + } else { + .error = err + .error_description = "failed to parse slot start date time" + log(., level: "error", rate_limit_secs: 60) + } + .epoch = .meta.client.additional_data.block.epoch.number + epoch_start_date_time, err = parse_timestamp(.meta.client.additional_data.block.epoch.start_date_time, format: "%+"); + if err == null { + .epoch_start_date_time = to_unix_timestamp(epoch_start_date_time) + } else { + .error = err + .error_description = "failed to parse epoch start date time" + log(., level: "error", rate_limit_secs: 60) + } + .block_root = .meta.client.additional_data.block.root + .block_number = .meta.client.additional_data.blockNumber + .block_hash = .meta.client.additional_data.blockHash + .address = .data.address + .change_type = .data.change_type + .block_access_index = .data.block_access_index + .storage_key = .data.storage_key + .new_value = .data.new_value + .updated_date_time = to_unix_timestamp(now()) + del(.event) + del(.meta) + del(.data) canonical_beacon_blob_sidecar_formatted: type: remap inputs: @@ -2313,6 +2352,7 @@ transforms: .execution_payload_base_fee_per_gas = .data.message.body.execution_payload.base_fee_per_gas .execution_payload_blob_gas_used = .data.message.body.execution_payload.blob_gas_used .execution_payload_excess_blob_gas = .data.message.body.execution_payload.excess_blob_gas + .execution_payload_slot_number = .data.message.body.execution_payload.slot_number .execution_payload_gas_limit = .data.message.body.execution_payload.gas_limit .execution_payload_gas_used = .data.message.body.execution_payload.gas_used .execution_payload_transactions_count = .meta.client.additional_data.transactions_count @@ -3508,6 +3548,26 @@ sinks: healthcheck: enabled: true skip_unknown_fields: false + canonical_beacon_block_access_list_clickhouse: + type: clickhouse + inputs: + - canonical_beacon_block_access_list_formatted + database: default + endpoint: "${CLICKHOUSE_ENDPOINT}" + table: canonical_beacon_block_access_list + auth: + strategy: basic + user: "${CLICKHOUSE_USER}" + password: "${CLICKHOUSE_PASSWORD}" + batch: + max_bytes: 52428800 + max_events: 200000 + timeout_secs: 1 + buffer: + max_events: 200000 + healthcheck: + enabled: true + skip_unknown_fields: false canonical_beacon_blob_sidecar_clickhouse: type: clickhouse inputs: diff --git a/deploy/local/docker-compose/xatu-server.yaml b/deploy/local/docker-compose/xatu-server.yaml index 076cbe150..f42243b7d 100644 --- a/deploy/local/docker-compose/xatu-server.yaml +++ b/deploy/local/docker-compose/xatu-server.yaml @@ -197,6 +197,7 @@ services: - BEACON_API_ETH_V2_BEACON_BLOCK_VOLUNTARY_EXIT - BEACON_API_ETH_V2_BEACON_BLOCK_DEPOSIT - BEACON_API_ETH_V2_BEACON_BLOCK_WITHDRAWAL + - BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST - BEACON_API_ETH_V2_BEACON_BLOCK_ELABORATED_ATTESTATION - BEACON_API_ETH_V2_BEACON_BLOCK - BEACON_API_ETH_V2_BEACON_BLOCK_V2 diff --git a/deploy/migrations/clickhouse/106_gloas_bals_support.down.sql b/deploy/migrations/clickhouse/106_gloas_bals_support.down.sql new file mode 100644 index 000000000..4e45db6fd --- /dev/null +++ b/deploy/migrations/clickhouse/106_gloas_bals_support.down.sql @@ -0,0 +1,19 @@ +-- Drop canonical_beacon_block_access_list tables +DROP TABLE IF EXISTS default.canonical_beacon_block_access_list ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.canonical_beacon_block_access_list_local ON CLUSTER '{cluster}'; + +-- Remove columns from canonical_beacon_block +ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS execution_payload_block_access_list_root, + DROP COLUMN IF EXISTS execution_payload_slot_number; + +ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS execution_payload_block_access_list_root, + DROP COLUMN IF EXISTS execution_payload_slot_number; + +-- Remove columns from beacon_api_eth_v2_beacon_block +ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS execution_payload_slot_number; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS execution_payload_slot_number; diff --git a/deploy/migrations/clickhouse/106_gloas_bals_support.up.sql b/deploy/migrations/clickhouse/106_gloas_bals_support.up.sql new file mode 100644 index 000000000..30801b68b --- /dev/null +++ b/deploy/migrations/clickhouse/106_gloas_bals_support.up.sql @@ -0,0 +1,63 @@ +-- Add execution_payload_slot_number to beacon_api_eth_v2_beacon_block +ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64) + CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64) + CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas; + +-- Add execution_payload_slot_number and execution_payload_block_access_list_root to canonical_beacon_block +ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64) + CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas, + ADD COLUMN IF NOT EXISTS execution_payload_block_access_list_root Nullable(FixedString(66)) + CODEC(ZSTD(1)) AFTER execution_payload_slot_number; + +ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64) + CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas, + ADD COLUMN IF NOT EXISTS execution_payload_block_access_list_root Nullable(FixedString(66)) + CODEC(ZSTD(1)) AFTER execution_payload_slot_number; + +-- Create canonical_beacon_block_access_list table +CREATE TABLE IF NOT EXISTS default.canonical_beacon_block_access_list_local ON CLUSTER '{cluster}' ( + updated_date_time DateTime CODEC(DoubleDelta, ZSTD(1)), + slot UInt32 CODEC(DoubleDelta, ZSTD(1)), + slot_start_date_time DateTime CODEC(DoubleDelta, ZSTD(1)), + epoch UInt32 CODEC(DoubleDelta, ZSTD(1)), + epoch_start_date_time DateTime CODEC(DoubleDelta, ZSTD(1)), + block_root FixedString(66) CODEC(ZSTD(1)), + block_number UInt64 CODEC(DoubleDelta, ZSTD(1)), + block_hash FixedString(66) CODEC(ZSTD(1)), + address FixedString(42) CODEC(ZSTD(1)), + change_type LowCardinality(String) CODEC(ZSTD(1)), + block_access_index UInt16 CODEC(DoubleDelta, ZSTD(1)), + storage_key FixedString(66) CODEC(ZSTD(1)), + new_value Nullable(String) CODEC(ZSTD(1)), + meta_client_name LowCardinality(String) CODEC(ZSTD(1)), + meta_client_id String CODEC(ZSTD(1)), + meta_client_version LowCardinality(String) CODEC(ZSTD(1)), + meta_client_implementation LowCardinality(String) CODEC(ZSTD(1)), + meta_client_os LowCardinality(String) CODEC(ZSTD(1)), + meta_client_ip Nullable(IPv6) CODEC(ZSTD(1)), + meta_client_geo_city LowCardinality(String) CODEC(ZSTD(1)), + meta_client_geo_country LowCardinality(String) CODEC(ZSTD(1)), + meta_client_geo_country_code LowCardinality(String) CODEC(ZSTD(1)), + meta_client_geo_continent_code LowCardinality(String) CODEC(ZSTD(1)), + meta_client_geo_longitude Nullable(Float64) CODEC(ZSTD(1)), + meta_client_geo_latitude Nullable(Float64) CODEC(ZSTD(1)), + meta_client_geo_autonomous_system_number Nullable(UInt32) CODEC(ZSTD(1)), + meta_client_geo_autonomous_system_organization Nullable(String) CODEC(ZSTD(1)), + meta_network_id Int32 CODEC(DoubleDelta, ZSTD(1)), + meta_network_name LowCardinality(String) CODEC(ZSTD(1)), + meta_consensus_version LowCardinality(String) CODEC(ZSTD(1)), + meta_consensus_implementation LowCardinality(String) CODEC(ZSTD(1)), + meta_labels Map(String, String) CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree(updated_date_time) +PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, block_hash, address, change_type, storage_key, block_access_index); + +CREATE TABLE IF NOT EXISTS default.canonical_beacon_block_access_list ON CLUSTER '{cluster}' + AS default.canonical_beacon_block_access_list_local + ENGINE = Distributed('{cluster}', default, canonical_beacon_block_access_list_local, rand()); diff --git a/deploy/migrations/clickhouse/107_gloas_epbs_support.down.sql b/deploy/migrations/clickhouse/107_gloas_epbs_support.down.sql new file mode 100644 index 000000000..e84b0fef7 --- /dev/null +++ b/deploy/migrations/clickhouse/107_gloas_epbs_support.down.sql @@ -0,0 +1,74 @@ +-- Reverse EIP-7732 ePBS support + +-- Drop new tables +DROP TABLE IF EXISTS default.canonical_beacon_block_payload_attestation ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.canonical_beacon_block_payload_attestation_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.canonical_beacon_block_execution_payload_bid ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.canonical_beacon_block_execution_payload_bid_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_payload_attestation ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_payload_attestation_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_bid ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_bid_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_proposer_preferences ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_proposer_preferences_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_envelope ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_envelope_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_bid ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_bid_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.libp2p_gossipsub_payload_attestation_message ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.libp2p_gossipsub_payload_attestation_message_local ON CLUSTER '{cluster}'; + +DROP TABLE IF EXISTS default.libp2p_gossipsub_proposer_preferences ON CLUSTER '{cluster}'; +DROP TABLE IF EXISTS default.libp2p_gossipsub_proposer_preferences_local ON CLUSTER '{cluster}'; + +-- Remove ePBS columns from beacon block tables +ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS payload_present, + DROP COLUMN IF EXISTS execution_payment, + DROP COLUMN IF EXISTS bid_value, + DROP COLUMN IF EXISTS builder_index; + +ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS payload_present, + DROP COLUMN IF EXISTS execution_payment, + DROP COLUMN IF EXISTS bid_value, + DROP COLUMN IF EXISTS builder_index; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS payload_present, + DROP COLUMN IF EXISTS execution_payment, + DROP COLUMN IF EXISTS bid_value, + DROP COLUMN IF EXISTS builder_index; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS payload_present, + DROP COLUMN IF EXISTS execution_payment, + DROP COLUMN IF EXISTS bid_value, + DROP COLUMN IF EXISTS builder_index; + +-- Remove Gloas columns from DataColumnSidecar tables +ALTER TABLE default.beacon_api_eth_v1_events_data_column_sidecar ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS sidecar_beacon_block_root, + DROP COLUMN IF EXISTS sidecar_slot; + +ALTER TABLE default.beacon_api_eth_v1_events_data_column_sidecar_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS sidecar_beacon_block_root, + DROP COLUMN IF EXISTS sidecar_slot; + +ALTER TABLE default.libp2p_gossipsub_data_column_sidecar ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS sidecar_beacon_block_root, + DROP COLUMN IF EXISTS sidecar_slot; + +ALTER TABLE default.libp2p_gossipsub_data_column_sidecar_local ON CLUSTER '{cluster}' + DROP COLUMN IF EXISTS sidecar_beacon_block_root, + DROP COLUMN IF EXISTS sidecar_slot; diff --git a/deploy/migrations/clickhouse/107_gloas_epbs_support.up.sql b/deploy/migrations/clickhouse/107_gloas_epbs_support.up.sql new file mode 100644 index 000000000..c134b2137 --- /dev/null +++ b/deploy/migrations/clickhouse/107_gloas_epbs_support.up.sql @@ -0,0 +1,592 @@ +-- EIP-7732 ePBS support: new tables + column additions +-- 10 new tables: 2 cannon, 4 sentry SSE, 4 libp2p gossip. +-- Plus column additions to existing tables. + +--------------------------------------------------------------------- +-- 1. CANNON: canonical_beacon_block_payload_attestation +-- Aggregated PTC attestations from block body (max 4/block) +--------------------------------------------------------------------- +CREATE TABLE default.canonical_beacon_block_payload_attestation_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number of the block containing this payload attestation' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `block_root` FixedString(66) COMMENT 'Root of the block containing this attestation' CODEC(ZSTD(1)), + `block_version` LowCardinality(String) COMMENT 'Block version (e.g. gloas)', + `position` UInt32 COMMENT 'Position of the payload attestation in the block body (0-3)' CODEC(DoubleDelta, ZSTD(1)), + `beacon_block_root` FixedString(66) COMMENT 'The block root being attested to by the PTC' CODEC(ZSTD(1)), + `payload_present` Bool COMMENT 'Whether the PTC attests payload was present' CODEC(ZSTD(1)), + `blob_data_available` Bool COMMENT 'Whether the PTC attests blob data was available' CODEC(ZSTD(1)), + `aggregation_bits` String COMMENT 'Bitvector of PTC members (512 bits) as hex' CODEC(ZSTD(1)), + `attesting_validator_count` UInt32 COMMENT 'Number of PTC validators in this aggregation' CODEC(DoubleDelta, ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, block_root, position) +COMMENT 'Aggregated PTC payload attestations from canonical beacon blocks (max 4 per block).'; + +CREATE TABLE default.canonical_beacon_block_payload_attestation ON CLUSTER '{cluster}' + AS default.canonical_beacon_block_payload_attestation_local + ENGINE = Distributed('{cluster}', default, canonical_beacon_block_payload_attestation_local, rand()); + +--------------------------------------------------------------------- +-- 2. CANNON: canonical_beacon_block_execution_payload_bid +-- Winning builder bid from each block (1 per block) +--------------------------------------------------------------------- +CREATE TABLE default.canonical_beacon_block_execution_payload_bid_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number of the block containing this bid' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `block_root` FixedString(66) COMMENT 'Root of the block containing this bid' CODEC(ZSTD(1)), + `block_version` LowCardinality(String) COMMENT 'Block version (e.g. gloas)', + `builder_index` UInt64 COMMENT 'Index of the builder in the builder registry' CODEC(ZSTD(1)), + `block_hash` FixedString(66) COMMENT 'Execution block hash committed to in the bid' CODEC(ZSTD(1)), + `parent_block_hash` FixedString(66) COMMENT 'Parent execution block hash' CODEC(ZSTD(1)), + `parent_block_root` FixedString(66) COMMENT 'Parent beacon block root' CODEC(ZSTD(1)), + `value` UInt64 COMMENT 'Bid value in Gwei' CODEC(ZSTD(1)), + `execution_payment` UInt64 COMMENT 'Execution payment in Gwei' CODEC(ZSTD(1)), + `fee_recipient` FixedString(42) COMMENT 'Fee recipient address' CODEC(ZSTD(1)), + `gas_limit` UInt64 COMMENT 'Gas limit for the execution payload' CODEC(DoubleDelta, ZSTD(1)), + `prev_randao` FixedString(66) COMMENT 'Previous RANDAO value' CODEC(ZSTD(1)), + `blob_kzg_commitment_count` UInt32 COMMENT 'Number of blob KZG commitments' CODEC(DoubleDelta, ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, block_root) +COMMENT 'Winning execution payload bid from canonical beacon blocks (1 per block).'; + +CREATE TABLE default.canonical_beacon_block_execution_payload_bid ON CLUSTER '{cluster}' + AS default.canonical_beacon_block_execution_payload_bid_local + ENGINE = Distributed('{cluster}', default, canonical_beacon_block_execution_payload_bid_local, rand()); + +--------------------------------------------------------------------- +-- 3. SENTRY SSE: beacon_api_eth_v1_events_execution_payload +-- Payload envelope arrival from beacon API SSE +--------------------------------------------------------------------- +CREATE TABLE default.beacon_api_eth_v1_events_execution_payload_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'When the sentry received the event from a beacon node' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number from the event payload' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Difference between event_date_time and slot_start_date_time in ms' CODEC(ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `block_root` FixedString(66) COMMENT 'Beacon block root the envelope references' CODEC(ZSTD(1)), + `builder_index` UInt64 COMMENT 'Index of the builder that produced the payload' CODEC(ZSTD(1)), + `block_hash` FixedString(66) COMMENT 'Execution block hash' CODEC(ZSTD(1)), + `state_root` FixedString(66) COMMENT 'Execution state root' CODEC(ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, block_root) +COMMENT 'Execution payload envelope arrivals from beacon API SSE (execution_payload_available event).'; + +CREATE TABLE default.beacon_api_eth_v1_events_execution_payload ON CLUSTER '{cluster}' + AS default.beacon_api_eth_v1_events_execution_payload_local + ENGINE = Distributed('{cluster}', default, beacon_api_eth_v1_events_execution_payload_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, block_root)); + +--------------------------------------------------------------------- +-- 3b. SENTRY SSE: beacon_api_eth_v1_events_payload_attestation +-- Individual PTC attestation from beacon API SSE (~512/slot) +--------------------------------------------------------------------- +CREATE TABLE default.beacon_api_eth_v1_events_payload_attestation_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'When the sentry received the event from a beacon node' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number from the event payload' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Difference between event_date_time and slot_start_date_time in ms' CODEC(ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `validator_index` UInt32 COMMENT 'Index of the PTC validator' CODEC(ZSTD(1)), + `beacon_block_root` FixedString(66) COMMENT 'Block root being attested to' CODEC(ZSTD(1)), + `payload_present` Bool COMMENT 'Whether the validator attests payload was present' CODEC(ZSTD(1)), + `blob_data_available` Bool COMMENT 'Whether the validator attests blob data was available' CODEC(ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, beacon_block_root, validator_index) +COMMENT 'Individual PTC payload attestation messages from beacon API SSE (payload_attestation_message event, ~512 per slot).'; + +CREATE TABLE default.beacon_api_eth_v1_events_payload_attestation ON CLUSTER '{cluster}' + AS default.beacon_api_eth_v1_events_payload_attestation_local + ENGINE = Distributed('{cluster}', default, beacon_api_eth_v1_events_payload_attestation_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, beacon_block_root, validator_index)); + +--------------------------------------------------------------------- +-- 3c. SENTRY SSE: beacon_api_eth_v1_events_execution_payload_bid +-- Builder bid from beacon API SSE +--------------------------------------------------------------------- +CREATE TABLE default.beacon_api_eth_v1_events_execution_payload_bid_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'When the sentry received the event from a beacon node' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number from the event payload' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Difference between event_date_time and slot_start_date_time in ms' CODEC(ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `builder_index` UInt64 COMMENT 'Index of the builder' CODEC(ZSTD(1)), + `block_hash` FixedString(66) COMMENT 'Execution block hash committed to in the bid' CODEC(ZSTD(1)), + `parent_block_hash` FixedString(66) COMMENT 'Parent execution block hash' CODEC(ZSTD(1)), + `parent_block_root` FixedString(66) COMMENT 'Parent beacon block root' CODEC(ZSTD(1)), + `value` UInt64 COMMENT 'Bid value in Gwei' CODEC(ZSTD(1)), + `execution_payment` UInt64 COMMENT 'Execution payment in Gwei' CODEC(ZSTD(1)), + `fee_recipient` FixedString(42) COMMENT 'Fee recipient address' CODEC(ZSTD(1)), + `gas_limit` UInt64 COMMENT 'Gas limit' CODEC(DoubleDelta, ZSTD(1)), + `blob_kzg_commitment_count` UInt32 COMMENT 'Number of blob KZG commitments' CODEC(DoubleDelta, ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, block_hash) +COMMENT 'Builder bids from beacon API SSE (execution_payload_bid event).'; + +CREATE TABLE default.beacon_api_eth_v1_events_execution_payload_bid ON CLUSTER '{cluster}' + AS default.beacon_api_eth_v1_events_execution_payload_bid_local + ENGINE = Distributed('{cluster}', default, beacon_api_eth_v1_events_execution_payload_bid_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, block_hash)); + +--------------------------------------------------------------------- +-- 3d. SENTRY SSE: beacon_api_eth_v1_events_proposer_preferences +-- Proposer preferences from beacon API SSE +--------------------------------------------------------------------- +CREATE TABLE default.beacon_api_eth_v1_events_proposer_preferences_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'When the sentry received the event from a beacon node' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Proposal slot' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'The wall clock time when the slot started' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Difference between event_date_time and slot_start_date_time in ms' CODEC(ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'The wall clock time when the epoch started' CODEC(DoubleDelta, ZSTD(1)), + `validator_index` UInt32 COMMENT 'Index of the proposing validator' CODEC(ZSTD(1)), + `fee_recipient` FixedString(42) COMMENT 'Preferred fee recipient address' CODEC(ZSTD(1)), + `gas_limit` UInt64 COMMENT 'Preferred gas limit' CODEC(DoubleDelta, ZSTD(1)), + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name', + `meta_consensus_version` LowCardinality(String) COMMENT 'Consensus client version', + `meta_consensus_version_major` LowCardinality(String) COMMENT 'Consensus client major version', + `meta_consensus_version_minor` LowCardinality(String) COMMENT 'Consensus client minor version', + `meta_consensus_version_patch` LowCardinality(String) COMMENT 'Consensus client patch version', + `meta_consensus_implementation` LowCardinality(String) COMMENT 'Consensus client implementation', + `meta_labels` Map(String, String) COMMENT 'Labels associated with the event' CODEC(ZSTD(1)) +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toStartOfMonth(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, validator_index) +COMMENT 'Proposer preferences from beacon API SSE (proposer_preferences event).'; + +CREATE TABLE default.beacon_api_eth_v1_events_proposer_preferences ON CLUSTER '{cluster}' + AS default.beacon_api_eth_v1_events_proposer_preferences_local + ENGINE = Distributed('{cluster}', default, beacon_api_eth_v1_events_proposer_preferences_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, validator_index)); + +--------------------------------------------------------------------- +-- 4. LIBP2P: libp2p_gossipsub_execution_payload_envelope +--------------------------------------------------------------------- +CREATE TABLE default.libp2p_gossipsub_execution_payload_envelope_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `version` UInt32 DEFAULT 4294967295 - propagation_slot_start_diff COMMENT 'Version for dedup: prefer lowest propagation time' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'Timestamp of the event with millisecond precision' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'Start date and time of the slot' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'Start date and time of the epoch' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot` UInt32 COMMENT 'Wall clock slot when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot_start_date_time` DateTime COMMENT 'Start time of the wall clock slot' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch` UInt32 COMMENT 'Wall clock epoch when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch_start_date_time` DateTime COMMENT 'Start time of the wall clock epoch' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Propagation delay from slot start in ms' CODEC(ZSTD(1)), + `block_root` FixedString(66) COMMENT 'Beacon block root the envelope references' CODEC(ZSTD(1)), + `builder_index` UInt64 COMMENT 'Index of the builder that produced the payload' CODEC(ZSTD(1)), + `block_hash` FixedString(66) COMMENT 'Execution block hash' CODEC(ZSTD(1)), + `peer_id_unique_key` Int64 COMMENT 'Unique key for the peer identifier', + `message_id` String COMMENT 'Identifier of the gossip message' CODEC(ZSTD(1)), + `message_size` UInt32 COMMENT 'Size of the message in bytes' CODEC(ZSTD(1)), + `topic_layer` LowCardinality(String) COMMENT 'Layer of the gossipsub topic', + `topic_fork_digest_value` LowCardinality(String) COMMENT 'Fork digest value of the topic', + `topic_name` LowCardinality(String) COMMENT 'Name of the topic', + `topic_encoding` LowCardinality(String) COMMENT 'Encoding used for the topic', + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name' +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toYYYYMM(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id) +COMMENT 'Execution payload envelope gossip propagation from libp2p.'; + +CREATE TABLE default.libp2p_gossipsub_execution_payload_envelope ON CLUSTER '{cluster}' + AS default.libp2p_gossipsub_execution_payload_envelope_local + ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_execution_payload_envelope_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id)); + +--------------------------------------------------------------------- +-- 5. LIBP2P: libp2p_gossipsub_execution_payload_bid +--------------------------------------------------------------------- +CREATE TABLE default.libp2p_gossipsub_execution_payload_bid_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `version` UInt32 DEFAULT 4294967295 - propagation_slot_start_diff COMMENT 'Version for dedup: prefer lowest propagation time' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'Timestamp of the event with millisecond precision' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'Start date and time of the slot' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'Start date and time of the epoch' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot` UInt32 COMMENT 'Wall clock slot when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot_start_date_time` DateTime COMMENT 'Start time of the wall clock slot' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch` UInt32 COMMENT 'Wall clock epoch when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch_start_date_time` DateTime COMMENT 'Start time of the wall clock epoch' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Propagation delay from slot start in ms' CODEC(ZSTD(1)), + `builder_index` UInt64 COMMENT 'Index of the builder' CODEC(ZSTD(1)), + `block_hash` FixedString(66) COMMENT 'Execution block hash committed to in the bid' CODEC(ZSTD(1)), + `parent_block_hash` FixedString(66) COMMENT 'Parent execution block hash' CODEC(ZSTD(1)), + `value` UInt64 COMMENT 'Bid value in Gwei' CODEC(ZSTD(1)), + `execution_payment` UInt64 COMMENT 'Execution payment in Gwei' CODEC(ZSTD(1)), + `fee_recipient` FixedString(42) COMMENT 'Fee recipient address' CODEC(ZSTD(1)), + `gas_limit` UInt64 COMMENT 'Gas limit' CODEC(DoubleDelta, ZSTD(1)), + `blob_kzg_commitment_count` UInt32 COMMENT 'Number of blob KZG commitments' CODEC(DoubleDelta, ZSTD(1)), + `peer_id_unique_key` Int64 COMMENT 'Unique key for the peer identifier', + `message_id` String COMMENT 'Identifier of the gossip message' CODEC(ZSTD(1)), + `message_size` UInt32 COMMENT 'Size of the message in bytes' CODEC(ZSTD(1)), + `topic_layer` LowCardinality(String) COMMENT 'Layer of the gossipsub topic', + `topic_fork_digest_value` LowCardinality(String) COMMENT 'Fork digest value of the topic', + `topic_name` LowCardinality(String) COMMENT 'Name of the topic', + `topic_encoding` LowCardinality(String) COMMENT 'Encoding used for the topic', + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name' +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toYYYYMM(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id) +COMMENT 'Builder bid gossip propagation from libp2p.'; + +CREATE TABLE default.libp2p_gossipsub_execution_payload_bid ON CLUSTER '{cluster}' + AS default.libp2p_gossipsub_execution_payload_bid_local + ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_execution_payload_bid_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id)); + +--------------------------------------------------------------------- +-- 6. LIBP2P: libp2p_gossipsub_payload_attestation_message +-- ~512 per slot, high volume +--------------------------------------------------------------------- +CREATE TABLE default.libp2p_gossipsub_payload_attestation_message_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `version` UInt32 DEFAULT 4294967295 - propagation_slot_start_diff COMMENT 'Version for dedup: prefer lowest propagation time' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'Timestamp of the event with millisecond precision' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Slot number' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'Start date and time of the slot' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'Start date and time of the epoch' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot` UInt32 COMMENT 'Wall clock slot when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot_start_date_time` DateTime COMMENT 'Start time of the wall clock slot' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch` UInt32 COMMENT 'Wall clock epoch when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch_start_date_time` DateTime COMMENT 'Start time of the wall clock epoch' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Propagation delay from slot start in ms' CODEC(ZSTD(1)), + `validator_index` UInt32 COMMENT 'Index of the PTC validator' CODEC(ZSTD(1)), + `beacon_block_root` FixedString(66) COMMENT 'Block root being attested to' CODEC(ZSTD(1)), + `payload_present` Bool COMMENT 'Whether the validator attests payload was present' CODEC(ZSTD(1)), + `blob_data_available` Bool COMMENT 'Whether the validator attests blob data was available' CODEC(ZSTD(1)), + `peer_id_unique_key` Int64 COMMENT 'Unique key for the peer identifier', + `message_id` String COMMENT 'Identifier of the gossip message' CODEC(ZSTD(1)), + `message_size` UInt32 COMMENT 'Size of the message in bytes' CODEC(ZSTD(1)), + `topic_layer` LowCardinality(String) COMMENT 'Layer of the gossipsub topic', + `topic_fork_digest_value` LowCardinality(String) COMMENT 'Fork digest value of the topic', + `topic_name` LowCardinality(String) COMMENT 'Name of the topic', + `topic_encoding` LowCardinality(String) COMMENT 'Encoding used for the topic', + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name' +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toYYYYMM(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id) +COMMENT 'Individual PTC payload attestation messages from libp2p gossip (~512 per slot).'; + +CREATE TABLE default.libp2p_gossipsub_payload_attestation_message ON CLUSTER '{cluster}' + AS default.libp2p_gossipsub_payload_attestation_message_local + ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_payload_attestation_message_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id)); + +--------------------------------------------------------------------- +-- 7. LIBP2P: libp2p_gossipsub_proposer_preferences +--------------------------------------------------------------------- +CREATE TABLE default.libp2p_gossipsub_proposer_preferences_local ON CLUSTER '{cluster}' ( + `updated_date_time` DateTime COMMENT 'Timestamp when the record was last updated' CODEC(DoubleDelta, ZSTD(1)), + `version` UInt32 DEFAULT 4294967295 - propagation_slot_start_diff COMMENT 'Version for dedup: prefer lowest propagation time' CODEC(DoubleDelta, ZSTD(1)), + `event_date_time` DateTime64(3) COMMENT 'Timestamp of the event with millisecond precision' CODEC(DoubleDelta, ZSTD(1)), + `slot` UInt32 COMMENT 'Proposal slot' CODEC(DoubleDelta, ZSTD(1)), + `slot_start_date_time` DateTime COMMENT 'Start date and time of the slot' CODEC(DoubleDelta, ZSTD(1)), + `epoch` UInt32 COMMENT 'Epoch number' CODEC(DoubleDelta, ZSTD(1)), + `epoch_start_date_time` DateTime COMMENT 'Start date and time of the epoch' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot` UInt32 COMMENT 'Wall clock slot when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_slot_start_date_time` DateTime COMMENT 'Start time of the wall clock slot' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch` UInt32 COMMENT 'Wall clock epoch when the event was received' CODEC(DoubleDelta, ZSTD(1)), + `wallclock_epoch_start_date_time` DateTime COMMENT 'Start time of the wall clock epoch' CODEC(DoubleDelta, ZSTD(1)), + `propagation_slot_start_diff` UInt32 COMMENT 'Propagation delay from slot start in ms' CODEC(ZSTD(1)), + `validator_index` UInt32 COMMENT 'Index of the proposing validator' CODEC(ZSTD(1)), + `fee_recipient` FixedString(42) COMMENT 'Preferred fee recipient address' CODEC(ZSTD(1)), + `gas_limit` UInt64 COMMENT 'Preferred gas limit' CODEC(DoubleDelta, ZSTD(1)), + `peer_id_unique_key` Int64 COMMENT 'Unique key for the peer identifier', + `message_id` String COMMENT 'Identifier of the gossip message' CODEC(ZSTD(1)), + `message_size` UInt32 COMMENT 'Size of the message in bytes' CODEC(ZSTD(1)), + `topic_layer` LowCardinality(String) COMMENT 'Layer of the gossipsub topic', + `topic_fork_digest_value` LowCardinality(String) COMMENT 'Fork digest value of the topic', + `topic_name` LowCardinality(String) COMMENT 'Name of the topic', + `topic_encoding` LowCardinality(String) COMMENT 'Encoding used for the topic', + `meta_client_name` LowCardinality(String) COMMENT 'Name of the client that generated the event', + `meta_client_id` String COMMENT 'Unique Session ID of the client' CODEC(ZSTD(1)), + `meta_client_version` LowCardinality(String) COMMENT 'Version of the client', + `meta_client_implementation` LowCardinality(String) COMMENT 'Implementation of the client', + `meta_client_os` LowCardinality(String) COMMENT 'Operating system of the client', + `meta_client_ip` Nullable(IPv6) COMMENT 'IP address of the client' CODEC(ZSTD(1)), + `meta_client_geo_city` LowCardinality(String) COMMENT 'City of the client' CODEC(ZSTD(1)), + `meta_client_geo_country` LowCardinality(String) COMMENT 'Country of the client' CODEC(ZSTD(1)), + `meta_client_geo_country_code` LowCardinality(String) COMMENT 'Country code of the client' CODEC(ZSTD(1)), + `meta_client_geo_continent_code` LowCardinality(String) COMMENT 'Continent code of the client' CODEC(ZSTD(1)), + `meta_client_geo_longitude` Nullable(Float64) COMMENT 'Longitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_latitude` Nullable(Float64) COMMENT 'Latitude of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_number` Nullable(UInt32) COMMENT 'ASN of the client' CODEC(ZSTD(1)), + `meta_client_geo_autonomous_system_organization` Nullable(String) COMMENT 'AS organization of the client' CODEC(ZSTD(1)), + `meta_network_id` Int32 COMMENT 'Ethereum network ID' CODEC(DoubleDelta, ZSTD(1)), + `meta_network_name` LowCardinality(String) COMMENT 'Ethereum network name' +) ENGINE = ReplicatedReplacingMergeTree( + '/clickhouse/{installation}/{cluster}/{database}/tables/{table}/{shard}', + '{replica}', + updated_date_time +) PARTITION BY toYYYYMM(slot_start_date_time) +ORDER BY (slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id) +COMMENT 'Proposer preferences gossip propagation from libp2p.'; + +CREATE TABLE default.libp2p_gossipsub_proposer_preferences ON CLUSTER '{cluster}' + AS default.libp2p_gossipsub_proposer_preferences_local + ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_proposer_preferences_local, + cityHash64(slot_start_date_time, meta_network_name, meta_client_name, peer_id_unique_key, message_id)); + +--------------------------------------------------------------------- +-- 8. ALTER: Add ePBS columns to beacon block tables +--------------------------------------------------------------------- +ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `builder_index` Nullable(UInt64) COMMENT 'Builder index from the bid (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payload_block_access_list_root, + ADD COLUMN IF NOT EXISTS `bid_value` Nullable(UInt64) COMMENT 'Bid value in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER builder_index, + ADD COLUMN IF NOT EXISTS `execution_payment` Nullable(UInt64) COMMENT 'Execution payment in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER bid_value, + ADD COLUMN IF NOT EXISTS `payload_present` Nullable(Bool) COMMENT 'Whether execution payload was delivered (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payment; + +ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `builder_index` Nullable(UInt64) COMMENT 'Builder index from the bid (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payload_block_access_list_root, + ADD COLUMN IF NOT EXISTS `bid_value` Nullable(UInt64) COMMENT 'Bid value in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER builder_index, + ADD COLUMN IF NOT EXISTS `execution_payment` Nullable(UInt64) COMMENT 'Execution payment in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER bid_value, + ADD COLUMN IF NOT EXISTS `payload_present` Nullable(Bool) COMMENT 'Whether execution payload was delivered (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payment; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `builder_index` Nullable(UInt64) COMMENT 'Builder index from the bid (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payload_slot_number, + ADD COLUMN IF NOT EXISTS `bid_value` Nullable(UInt64) COMMENT 'Bid value in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER builder_index, + ADD COLUMN IF NOT EXISTS `execution_payment` Nullable(UInt64) COMMENT 'Execution payment in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER bid_value, + ADD COLUMN IF NOT EXISTS `payload_present` Nullable(Bool) COMMENT 'Whether execution payload was delivered (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payment; + +ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `builder_index` Nullable(UInt64) COMMENT 'Builder index from the bid (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payload_slot_number, + ADD COLUMN IF NOT EXISTS `bid_value` Nullable(UInt64) COMMENT 'Bid value in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER builder_index, + ADD COLUMN IF NOT EXISTS `execution_payment` Nullable(UInt64) COMMENT 'Execution payment in Gwei (Gloas+)' CODEC(ZSTD(1)) AFTER bid_value, + ADD COLUMN IF NOT EXISTS `payload_present` Nullable(Bool) COMMENT 'Whether execution payload was delivered (Gloas+)' CODEC(ZSTD(1)) AFTER execution_payment; + +--------------------------------------------------------------------- +-- 9. ALTER: Add Gloas columns to DataColumnSidecar tables (additive, NULL for Fulu) +--------------------------------------------------------------------- +ALTER TABLE default.beacon_api_eth_v1_events_data_column_sidecar_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `sidecar_slot` Nullable(UInt32) COMMENT 'Slot from sidecar container (Gloas+, replaces signed_block_header)' CODEC(DoubleDelta, ZSTD(1)), + ADD COLUMN IF NOT EXISTS `sidecar_beacon_block_root` Nullable(FixedString(66)) COMMENT 'Beacon block root from sidecar container (Gloas+, replaces signed_block_header)' CODEC(ZSTD(1)); + +ALTER TABLE default.beacon_api_eth_v1_events_data_column_sidecar ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `sidecar_slot` Nullable(UInt32) COMMENT 'Slot from sidecar container (Gloas+, replaces signed_block_header)' CODEC(DoubleDelta, ZSTD(1)), + ADD COLUMN IF NOT EXISTS `sidecar_beacon_block_root` Nullable(FixedString(66)) COMMENT 'Beacon block root from sidecar container (Gloas+, replaces signed_block_header)' CODEC(ZSTD(1)); + +ALTER TABLE default.libp2p_gossipsub_data_column_sidecar_local ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `sidecar_slot` Nullable(UInt32) COMMENT 'Slot from sidecar container (Gloas+, replaces signed_block_header)' CODEC(DoubleDelta, ZSTD(1)), + ADD COLUMN IF NOT EXISTS `sidecar_beacon_block_root` Nullable(FixedString(66)) COMMENT 'Beacon block root from sidecar container (Gloas+, replaces signed_block_header)' CODEC(ZSTD(1)); + +ALTER TABLE default.libp2p_gossipsub_data_column_sidecar ON CLUSTER '{cluster}' + ADD COLUMN IF NOT EXISTS `sidecar_slot` Nullable(UInt32) COMMENT 'Slot from sidecar container (Gloas+, replaces signed_block_header)' CODEC(DoubleDelta, ZSTD(1)), + ADD COLUMN IF NOT EXISTS `sidecar_beacon_block_root` Nullable(FixedString(66)) COMMENT 'Beacon block root from sidecar container (Gloas+, replaces signed_block_header)' CODEC(ZSTD(1)); diff --git a/docker-compose.yml b/docker-compose.yml index f71bd53f0..3cdb0228c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -292,6 +292,7 @@ services: "beacon-api-eth-v2-beacon-block-proposer-slashing" "beacon-api-eth-v2-beacon-block-voluntary-exit" "beacon-api-eth-v2-beacon-block-withdrawal" + "beacon-api-eth-v2-beacon-block-access-list" "beacon-api-eth-v2-beacon-block-elaborated-attestation" "beacon-p2p-attestation" "mempool-transaction" diff --git a/go.mod b/go.mod index 91b15c063..eec848ad6 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,9 @@ go 1.25.7 // Match tysm's tablewriter version requirement replace github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.5 +// Use pk910's BALs branch for Gloas/EIP-7928 support (PR #7) +replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b + require ( github.com/ClickHouse/ch-go v0.71.0 github.com/IBM/sarama v1.46.2 @@ -17,9 +20,9 @@ require ( github.com/cenkalti/backoff/v5 v5.0.3 github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 github.com/creasty/defaults v1.8.0 - github.com/ethereum/go-ethereum v1.17.0 - github.com/ethpandaops/beacon v0.65.0 - github.com/ethpandaops/ethcore v0.0.0-20260225041126-afac0c250cdf + github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 + github.com/ethpandaops/beacon v0.67.1-0.20260325033338-72e601905364 + github.com/ethpandaops/ethcore v0.0.0-20260325033335-3648959229f1 github.com/ethpandaops/ethwallclock v0.4.0 github.com/ferranbt/fastssz v1.0.0 github.com/go-co-op/gocron/v2 v2.16.6 @@ -95,7 +98,7 @@ require ( github.com/containerd/platforms v1.0.0-rc.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect - github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.8.0 // indirect @@ -113,7 +116,7 @@ require ( github.com/eapache/queue v1.1.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect github.com/emicklei/dot v1.9.0 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.6 // indirect github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -265,7 +268,7 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe // indirect + github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect github.com/tilinna/z85 v1.0.0 // indirect diff --git a/go.sum b/go.sum index 230b4ffce..64162b184 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,6 @@ github.com/alicebob/miniredis/v2 v2.33.0 h1:uvTF0EDeu9RLnUEG27Db5I68ESoIxTiXbNUi github.com/alicebob/miniredis/v2 v2.33.0/go.mod h1:MhP4a3EU7aENRi9aO+tHfTBZicLqQevyi/DJpoj6mi0= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/attestantio/go-eth2-client v0.27.1 h1:g7bm+gG/p+gfzYdEuxuAepVWYb8EO+2KojV5/Lo2BxM= -github.com/attestantio/go-eth2-client v0.27.1/go.mod h1:fvULSL9WtNskkOB4i+Yyr6BKpNHXvmpGZj9969fCrfY= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/bazelbuild/rules_go v0.23.2 h1:Wxu7JjqnF78cKZbsBsARLSXx/jlGaSLCnUV3mTlyHvM= @@ -116,8 +114,8 @@ github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHf github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= -github.com/crate-crypto/go-eth-kzg v1.4.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc= +github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -171,16 +169,16 @@ github.com/emicklei/dot v1.9.0 h1:FyaJNctdMfaEIbTQ1FkKZ1UCZyJJSkyvkrXOVoNZPKU= github.com/emicklei/dot v1.9.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/emicklei/proto v1.14.2 h1:wJPxPy2Xifja9cEMrcA/g08art5+7CGJNFNk35iXC1I= github.com/emicklei/proto v1.14.2/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/ethereum/c-kzg-4844/v2 v2.1.5 h1:aVtoLK5xwJ6c5RiqO8g8ptJ5KU+2Hdquf6G3aXiHh5s= -github.com/ethereum/c-kzg-4844/v2 v2.1.5/go.mod h1:u59hRTTah4Co6i9fDWtiCjTrblJv0UwsqZKCc0GfgUs= +github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn27fRjSls= +github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= -github.com/ethereum/go-ethereum v1.17.0 h1:2D+1Fe23CwZ5tQoAS5DfwKFNI1HGcTwi65/kRlAVxes= -github.com/ethereum/go-ethereum v1.17.0/go.mod h1:2W3msvdosS/MCWytpqTcqgFiRYbTH59FxDJzqah120o= -github.com/ethpandaops/beacon v0.65.0 h1:ssnab73uiuzhmhtU56q9D3ecVrEYv5n+tuqrXRK4YAg= -github.com/ethpandaops/beacon v0.65.0/go.mod h1:lgzrJjQVV77wZ+PJymsY3bQbAK4jrtP8n3WOwMf1Pcs= -github.com/ethpandaops/ethcore v0.0.0-20260225041126-afac0c250cdf h1:8tgE9iUsf9TyruUT3MXVjUlMy5aEc+fuzraRyPlUbBU= -github.com/ethpandaops/ethcore v0.0.0-20260225041126-afac0c250cdf/go.mod h1:NblaW7ZBfBA85g9SsJyiDzeecTgvxMnFZTWUAj40vg8= +github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDemf+tvCIUtKt9EUtkfXbU/llIl41ML8+vZ8Mo= +github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= +github.com/ethpandaops/beacon v0.67.1-0.20260325033338-72e601905364 h1:Ogveqfj7DpZaqIrudz0zyilyM5Awu74E7IFcMIXnm0g= +github.com/ethpandaops/beacon v0.67.1-0.20260325033338-72e601905364/go.mod h1:HONwT8CSZmQMdHxIU8/Hlu5CHtLbAv7xqkYjeSLwyXI= +github.com/ethpandaops/ethcore v0.0.0-20260325033335-3648959229f1 h1:D9lprZ4qret+qJfQOTw2BM6otokTMb9FskW6qF1H1AA= +github.com/ethpandaops/ethcore v0.0.0-20260325033335-3648959229f1/go.mod h1:wNl2LzVorol8zVpAHUDxjKZKBX3hM5Einaf1Mn8OxLg= github.com/ethpandaops/ethereum-package-go v0.8.1 h1:VN5l8UXveyw7gp0Glj8BRzS/D5RKyvhLeaoi/C5Jy5M= github.com/ethpandaops/ethereum-package-go v0.8.1/go.mod h1:LQThCwlCeeNBTdXOFV+xSwudoced53x+o/Orya3Y+oo= github.com/ethpandaops/ethwallclock v0.4.0 h1:+sgnhf4pk6hLPukP076VxkiLloE4L0Yk1yat+ZyHh1g= @@ -635,6 +633,8 @@ github.com/pion/webrtc/v4 v4.1.2 h1:mpuUo/EJ1zMNKGE79fAdYNFZBX790KE7kQQpLMjjR54= github.com/pion/webrtc/v4 v4.1.2/go.mod h1:xsCXiNAmMEjIdFxAYU0MbB3RwRieJsegSB2JZsGN+8U= github.com/pk910/dynamic-ssz v0.0.6 h1:Tu97LSc2TtCyqRfoSbhG9XuR/FbA7CkKeAnlkgUydFY= github.com/pk910/dynamic-ssz v0.0.6/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c= +github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b h1:jfPN1Fg6yQzGdwRf1WEGbelmC+ciqVZw96LmFa8u7tI= +github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b/go.mod h1:1MBvz1DVe6jZduHJDJuJ/1S4LzYmDmvx+r5alo4pyrM= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -748,8 +748,8 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= -github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe h1:nbdqkIGOGfUAD54q1s2YBcBz/WcsxCO9HUQ4aGV5hUw= -github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= +github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU= diff --git a/pkg/cannon/cannon.go b/pkg/cannon/cannon.go index de5fac801..498799f90 100644 --- a/pkg/cannon/cannon.go +++ b/pkg/cannon/cannon.go @@ -680,6 +680,25 @@ func (c *Cannon) startBeaconBlockProcessor(ctx context.Context) error { c.beacon, clientMeta, ), + v2.NewBlockAccessListDeriver( + c.log, + &c.Config.Derivers.BlockAccessListConfig, + iterator.NewBackfillingCheckpoint( + c.log, + networkName, + networkID, + xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST, + c.coordinatorClient, + wallclock, + &backfillingCheckpointIteratorMetrics, + c.beacon, + finalizedCheckpoint, + 3, + &c.Config.Derivers.BlockAccessListConfig.Iterator, + ), + c.beacon, + clientMeta, + ), } c.eventDerivers = eventDerivers diff --git a/pkg/cannon/deriver/beacon/eth/v2/beacon_block.go b/pkg/cannon/deriver/beacon/eth/v2/beacon_block.go index 801c18032..915c0c98a 100644 --- a/pkg/cannon/deriver/beacon/eth/v2/beacon_block.go +++ b/pkg/cannon/deriver/beacon/eth/v2/beacon_block.go @@ -404,6 +404,8 @@ func getBlockMessage(block *spec.VersionedSignedBeaconBlock) (ssz.Marshaler, err return block.Electra.Message, nil case spec.DataVersionFulu: return block.Fulu.Message, nil + case spec.DataVersionGloas: + return block.Gloas.Message, nil default: return nil, fmt.Errorf("unsupported block version: %s", block.Version) } diff --git a/pkg/cannon/deriver/beacon/eth/v2/beacon_block_sync_aggregate.go b/pkg/cannon/deriver/beacon/eth/v2/beacon_block_sync_aggregate.go index fca3e8d95..c69e79b73 100644 --- a/pkg/cannon/deriver/beacon/eth/v2/beacon_block_sync_aggregate.go +++ b/pkg/cannon/deriver/beacon/eth/v2/beacon_block_sync_aggregate.go @@ -370,6 +370,14 @@ func (b *BeaconBlockSyncAggregateDeriver) getSyncAggregate( sa := block.Fulu.Message.Body.SyncAggregate bits = sa.SyncCommitteeBits[:] signature = sa.SyncCommitteeSignature[:] + case spec.DataVersionGloas: + if block.Gloas == nil || block.Gloas.Message == nil || block.Gloas.Message.Body == nil { + return nil, nil //nolint:nilnil // nil indicates no sync aggregate available + } + + sa := block.Gloas.Message.Body.SyncAggregate + bits = sa.SyncCommitteeBits[:] + signature = sa.SyncCommitteeSignature[:] default: return nil, fmt.Errorf("unsupported block version: %s", block.Version) } diff --git a/pkg/cannon/deriver/beacon/eth/v2/block_access_list.go b/pkg/cannon/deriver/beacon/eth/v2/block_access_list.go new file mode 100644 index 000000000..bdd075491 --- /dev/null +++ b/pkg/cannon/deriver/beacon/eth/v2/block_access_list.go @@ -0,0 +1,462 @@ +package v2 + +import ( + "context" + "fmt" + "time" + + "github.com/attestantio/go-eth2-client/spec" + "github.com/attestantio/go-eth2-client/spec/phase0" + backoff "github.com/cenkalti/backoff/v5" + "github.com/ethpandaops/xatu/pkg/cannon/ethereum" + "github.com/ethpandaops/xatu/pkg/cannon/iterator" + "github.com/ethpandaops/xatu/pkg/observability" + xatuethv1 "github.com/ethpandaops/xatu/pkg/proto/eth/v1" + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/google/uuid" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" +) + +const ( + BlockAccessListDeriverName = xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST +) + +// BlockAccessListDeriverConfig holds the configuration for the BAL deriver. +type BlockAccessListDeriverConfig struct { + Enabled bool `yaml:"enabled" default:"true"` + Iterator iterator.BackfillingCheckpointConfig `yaml:"iterator"` +} + +// BlockAccessListDeriver extracts block access list data from Gloas beacon blocks. +// BAL (Block Access List) is introduced in EIP-7928 and only exists from the +// Gloas fork onwards. The BAL data is embedded in the ExecutionPayload as the +// BlockAccessList field. +type BlockAccessListDeriver struct { + log logrus.FieldLogger + cfg *BlockAccessListDeriverConfig + iterator *iterator.BackfillingCheckpoint + onEventsCallbacks []func(ctx context.Context, events []*xatu.DecoratedEvent) error + beacon *ethereum.BeaconNode + clientMeta *xatu.ClientMeta +} + +// NewBlockAccessListDeriver creates a new BlockAccessListDeriver. +func NewBlockAccessListDeriver( + log logrus.FieldLogger, + config *BlockAccessListDeriverConfig, + iter *iterator.BackfillingCheckpoint, + beacon *ethereum.BeaconNode, + clientMeta *xatu.ClientMeta, +) *BlockAccessListDeriver { + return &BlockAccessListDeriver{ + log: log.WithFields(logrus.Fields{ + "module": "cannon/event/beacon/eth/v2/block_access_list", + "type": BlockAccessListDeriverName.String(), + }), + cfg: config, + iterator: iter, + beacon: beacon, + clientMeta: clientMeta, + } +} + +// CannonType returns the cannon type for this deriver. +func (b *BlockAccessListDeriver) CannonType() xatu.CannonType { + return BlockAccessListDeriverName +} + +// Name returns the human-readable name for this deriver. +func (b *BlockAccessListDeriver) Name() string { + return BlockAccessListDeriverName.String() +} + +// ActivationFork returns the fork at which this deriver activates. +func (b *BlockAccessListDeriver) ActivationFork() spec.DataVersion { + return spec.DataVersionGloas +} + +// OnEventsDerived registers a callback for when events are derived. +func (b *BlockAccessListDeriver) OnEventsDerived( + ctx context.Context, + fn func(ctx context.Context, events []*xatu.DecoratedEvent) error, +) { + b.onEventsCallbacks = append(b.onEventsCallbacks, fn) +} + +// Start begins the deriver's main processing loop. +func (b *BlockAccessListDeriver) Start(ctx context.Context) error { + if !b.cfg.Enabled { + b.log.Info("Block access list deriver disabled") + + return nil + } + + b.log.Info("Block access list deriver enabled") + + if err := b.iterator.Start(ctx, b.ActivationFork()); err != nil { + return errors.Wrap(err, "failed to start iterator") + } + + // Start our main loop + b.run(ctx) + + return nil +} + +// Stop gracefully stops the deriver. +func (b *BlockAccessListDeriver) Stop(ctx context.Context) error { + return nil +} + +func (b *BlockAccessListDeriver) run(rctx context.Context) { + bo := backoff.NewExponentialBackOff() + bo.MaxInterval = 3 * time.Minute + + for { + select { + case <-rctx.Done(): + return + default: + operation := func() (string, error) { + ctx, span := observability.Tracer().Start(rctx, + fmt.Sprintf("Derive %s", b.Name()), + trace.WithAttributes( + attribute.String("network", + string(b.beacon.Metadata().Network.Name))), + ) + defer span.End() + + time.Sleep(100 * time.Millisecond) + + if err := b.beacon.Synced(ctx); err != nil { + return "", err + } + + // Get the next position + position, err := b.iterator.Next(ctx) + if err != nil { + return "", err + } + + // Process the epoch + events, err := b.processEpoch(ctx, position.Next) + if err != nil { + b.log.WithError(err).Error("Failed to process epoch") + + return "", err + } + + // Look ahead + b.lookAhead(ctx, position.LookAheads) + + for _, fn := range b.onEventsCallbacks { + if errr := fn(ctx, events); errr != nil { + return "", errors.Wrapf(errr, "failed to send events") + } + } + + // Update our location + if err := b.iterator.UpdateLocation(ctx, position.Next, + position.Direction); err != nil { + return "", err + } + + bo.Reset() + + return "", nil + } + + retryOpts := []backoff.RetryOption{ + backoff.WithBackOff(bo), + backoff.WithNotify(func(err error, timer time.Duration) { + b.log.WithError(err).WithField("next_attempt", timer). + Warn("Failed to process") + }), + } + if _, err := backoff.Retry(rctx, operation, retryOpts...); err != nil { + b.log.WithError(err).Warn("Failed to process") + } + } + } +} + +func (b *BlockAccessListDeriver) processEpoch( + ctx context.Context, + epoch phase0.Epoch, +) ([]*xatu.DecoratedEvent, error) { + ctx, span := observability.Tracer().Start(ctx, + "BlockAccessListDeriver.processEpoch", + //nolint:gosec // epoch value will never overflow int64 + trace.WithAttributes(attribute.Int64("epoch", int64(epoch))), + ) + defer span.End() + + sp, err := b.beacon.Node().Spec() + if err != nil { + return nil, errors.Wrap(err, "failed to obtain spec") + } + + allEvents := make([]*xatu.DecoratedEvent, 0, sp.SlotsPerEpoch) + + for i := uint64(0); i <= uint64(sp.SlotsPerEpoch-1); i++ { + slot := phase0.Slot(i + uint64(epoch)*uint64(sp.SlotsPerEpoch)) + + events, err := b.processSlot(ctx, slot) + if err != nil { + return nil, errors.Wrapf(err, "failed to process slot %d", slot) + } + + allEvents = append(allEvents, events...) + } + + return allEvents, nil +} + +func (b *BlockAccessListDeriver) processSlot( + ctx context.Context, + slot phase0.Slot, +) ([]*xatu.DecoratedEvent, error) { + ctx, span := observability.Tracer().Start(ctx, + "BlockAccessListDeriver.processSlot", + //nolint:gosec // slot value will never overflow int64 + trace.WithAttributes(attribute.Int64("slot", int64(slot))), + ) + defer span.End() + + // Get the block + block, err := b.beacon.GetBeaconBlock(ctx, xatuethv1.SlotAsString(slot)) + if err != nil { + return nil, errors.Wrapf(err, + "failed to get beacon block for slot %d", slot) + } + + if block == nil { + return []*xatu.DecoratedEvent{}, nil + } + + // BAL only exists from Gloas onwards. Pre-Gloas blocks have no BAL data. + if block.Version < spec.DataVersionGloas { + return []*xatu.DecoratedEvent{}, nil + } + + // TODO(epbs): Under EIP-7732, ExecutionPayload and BAL data move to the + // ExecutionPayloadEnvelope. Source from envelope once go-eth2-client adds ePBS support. + if block.Gloas == nil || block.Gloas.Message == nil || + block.Gloas.Message.Body == nil || + block.Gloas.Message.Body.ExecutionPayload == nil { + return []*xatu.DecoratedEvent{}, nil + } + + blockIdentifier, err := GetBlockIdentifier( + block, b.beacon.Metadata().Wallclock(), + ) + if err != nil { + return nil, errors.Wrapf(err, + "failed to get block identifier for slot %d", slot) + } + + execPayload := block.Gloas.Message.Body.ExecutionPayload + execBlockNumber := execPayload.BlockNumber + execBlockHash := fmt.Sprintf("%#x", execPayload.BlockHash) + + // Decode the BAL from the ExecutionPayload + rawBAL := execPayload.BlockAccessList + b.log.WithField("slot", slot).WithField("raw_bal_len", len(rawBAL)).Debug("Processing BAL data") + + bal := xatuethv1.NewBlockAccessListFromGloas(rawBAL) + + b.log.WithField("slot", slot).WithField("entries", len(bal.GetEntries())).Debug("Decoded BAL entries") + + if bal == nil || len(bal.GetEntries()) == 0 { + return []*xatu.DecoratedEvent{}, nil + } + + events := make([]*xatu.DecoratedEvent, 0) + + // Iterate over entries and their changes, creating one event per change + for _, entry := range bal.GetEntries() { + address := entry.GetAddress() + + for _, sc := range entry.GetStorageChanges() { + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "storage", + BlockAccessIndex: sc.GetBlockAccessIndex(), + StorageKey: sc.GetKey(), + NewValue: sc.GetNewValue(), + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create storage change event") + } + + events = append(events, event) + } + + for _, bc := range entry.GetBalanceChanges() { + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "balance", + BlockAccessIndex: bc.GetBlockAccessIndex(), + NewValue: bc.GetPostBalance(), + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create balance change event") + } + + events = append(events, event) + } + + for _, nc := range entry.GetNonceChanges() { + var newValue *wrapperspb.StringValue + if nc.GetNewNonce() != nil { + newValue = &wrapperspb.StringValue{ + Value: fmt.Sprintf("%d", nc.GetNewNonce().GetValue()), + } + } + + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "nonce", + BlockAccessIndex: nc.GetBlockAccessIndex(), + NewValue: newValue, + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create nonce change event") + } + + events = append(events, event) + } + + for _, cc := range entry.GetCodeChanges() { + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "code", + BlockAccessIndex: cc.GetBlockAccessIndex(), + NewValue: cc.GetNewCode(), + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create code change event") + } + + events = append(events, event) + } + + for _, readKey := range entry.GetStorageReads() { + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "storage_read", + StorageKey: readKey.GetKey(), + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create storage read event") + } + + events = append(events, event) + } + + // Emit a "touched" event for accounts with no state changes and no storage + // reads. These are accounts accessed via BALANCE, EXTCODESIZE, calls, etc. + // that had no state interactions. Valuable for parallel execution analysis. + if len(entry.GetStorageChanges()) == 0 && + len(entry.GetStorageReads()) == 0 && + len(entry.GetBalanceChanges()) == 0 && + len(entry.GetNonceChanges()) == 0 && + len(entry.GetCodeChanges()) == 0 { + change := &xatuethv1.BlockAccessListChange{ + Address: address, + ChangeType: "touched", + } + + event, err := b.createEvent(ctx, change, blockIdentifier, execBlockNumber, execBlockHash) + if err != nil { + return nil, errors.Wrap(err, "failed to create touched account event") + } + + events = append(events, event) + } + } + + return events, nil +} + +func (b *BlockAccessListDeriver) createEvent( + ctx context.Context, + change *xatuethv1.BlockAccessListChange, + blockIdentifier *xatu.BlockIdentifier, + execBlockNumber uint64, + execBlockHash string, +) (*xatu.DecoratedEvent, error) { + metadata, ok := proto.Clone(b.clientMeta).(*xatu.ClientMeta) + if !ok { + return nil, errors.New("failed to clone client metadata") + } + + decoratedEvent := &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST, + DateTime: timestamppb.New(time.Now()), + Id: uuid.New().String(), + }, + Meta: &xatu.Meta{ + Client: metadata, + }, + Data: &xatu.DecoratedEvent_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: change, + }, + } + + decoratedEvent.Meta.Client.AdditionalData = &xatu.ClientMeta_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: &xatu.ClientMeta_AdditionalEthV2BeaconBlockAccessListData{ + Block: blockIdentifier, + BlockNumber: &wrapperspb.UInt64Value{Value: execBlockNumber}, + BlockHash: execBlockHash, + }, + } + + return decoratedEvent, nil +} + +// lookAhead attempts to pre-load any blocks that might be required for +// the epochs that are coming up. +func (b *BlockAccessListDeriver) lookAhead( + ctx context.Context, + epochs []phase0.Epoch, +) { + _, span := observability.Tracer().Start(ctx, + "BlockAccessListDeriver.lookAhead", + ) + defer span.End() + + sp, err := b.beacon.Node().Spec() + if err != nil { + b.log.WithError(err).Warn("Failed to look ahead at epoch") + + return + } + + for _, epoch := range epochs { + for i := uint64(0); i <= uint64(sp.SlotsPerEpoch-1); i++ { + slot := phase0.Slot(i + uint64(epoch)*uint64(sp.SlotsPerEpoch)) + + // Add the block to the preload queue so it's available when + // we need it + b.beacon.LazyLoadBeaconBlock(xatuethv1.SlotAsString(slot)) + } + } +} diff --git a/pkg/cannon/deriver/beacon/eth/v2/execution_transaction.go b/pkg/cannon/deriver/beacon/eth/v2/execution_transaction.go index c5f404b0c..aa6c9e1dc 100644 --- a/pkg/cannon/deriver/beacon/eth/v2/execution_transaction.go +++ b/pkg/cannon/deriver/beacon/eth/v2/execution_transaction.go @@ -444,6 +444,11 @@ func GetGasPrice(block *spec.VersionedSignedBeaconBlock, transaction *types.Tran case spec.DataVersionFulu: executionPayload := block.Fulu.Message.Body.ExecutionPayload baseFee.SetBytes(executionPayload.BaseFeePerGas.Bytes()) + case spec.DataVersionGloas: + // TODO(epbs): Under EIP-7732, ExecutionPayload moves to the envelope. + // Source from ExecutionPayloadEnvelope once go-eth2-client adds ePBS support. + executionPayload := block.Gloas.Message.Body.ExecutionPayload + baseFee.SetBytes(executionPayload.BaseFeePerGas.Bytes()) default: return nil, fmt.Errorf("unknown block version: %d", block.Version) } diff --git a/pkg/cannon/deriver/config.go b/pkg/cannon/deriver/config.go index c1fec7b78..5777d7f6a 100644 --- a/pkg/cannon/deriver/config.go +++ b/pkg/cannon/deriver/config.go @@ -21,6 +21,7 @@ type Config struct { BeaconCommitteeConfig v1.BeaconCommitteeDeriverConfig `yaml:"beaconCommittee"` BeaconSyncCommitteeConfig v1.BeaconSyncCommitteeDeriverConfig `yaml:"beaconSyncCommittee"` BeaconBlockSyncAggregateConfig v2.BeaconBlockSyncAggregateDeriverConfig `yaml:"beaconBlockSyncAggregate"` + BlockAccessListConfig v2.BlockAccessListDeriverConfig `yaml:"blockAccessList"` } func (c *Config) Validate() error { diff --git a/pkg/cannon/iterator/backfilling_checkpoint_iterator.go b/pkg/cannon/iterator/backfilling_checkpoint_iterator.go index b60c18059..ec55fe1d0 100644 --- a/pkg/cannon/iterator/backfilling_checkpoint_iterator.go +++ b/pkg/cannon/iterator/backfilling_checkpoint_iterator.go @@ -429,6 +429,13 @@ func (c *BackfillingCheckpoint) GetMarker(location *xatu.CannonLocation) (*xatu. marker = location.GetEthV1BeaconSyncCommittee().GetBackfillingCheckpointMarker() case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE: marker = location.GetEthV2BeaconBlockSyncAggregate().GetBackfillingCheckpointMarker() + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST: + marker = location.GetEthV2BeaconBlockAccessList().GetBackfillingCheckpointMarker() + // TODO(epbs): Wire up cannon derivers once go-eth2-client adds ePBS support. + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION: + marker = location.GetEthV2BeaconBlockPayloadAttestation().GetBackfillingCheckpointMarker() + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID: + marker = location.GetEthV2BeaconBlockExecutionPayloadBid().GetBackfillingCheckpointMarker() default: return nil, errors.Errorf("unknown cannon type %s", location.Type) } @@ -564,6 +571,25 @@ func (c *BackfillingCheckpoint) createLocationFromEpochNumber(finalized, backfil BackfillingCheckpointMarker: marker, }, } + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST: + location.Data = &xatu.CannonLocation_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: &xatu.CannonLocationEthV2BeaconBlockAccessList{ + BackfillingCheckpointMarker: marker, + }, + } + // TODO(epbs): Wire up cannon derivers once go-eth2-client adds ePBS support. + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION: + location.Data = &xatu.CannonLocation_EthV2BeaconBlockPayloadAttestation{ + EthV2BeaconBlockPayloadAttestation: &xatu.CannonLocationEthV2BeaconBlockPayloadAttestation{ + BackfillingCheckpointMarker: marker, + }, + } + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID: + location.Data = &xatu.CannonLocation_EthV2BeaconBlockExecutionPayloadBid{ + EthV2BeaconBlockExecutionPayloadBid: &xatu.CannonLocationEthV2BeaconBlockExecutionPayloadBid{ + BackfillingCheckpointMarker: marker, + }, + } default: return location, errors.Errorf("unknown cannon type %s", location.Type) } diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.gen.go index 66d0b46d6..c017a0311 100644 --- a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.gen.go +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.gen.go @@ -45,6 +45,8 @@ type beaconApiEthV1EventsDataColumnSidecarBatch struct { MetaConsensusVersionPatch proto.ColStr MetaConsensusImplementation proto.ColStr MetaLabels *proto.ColMap[string, string] + SidecarSlot *proto.ColNullable[uint32] + SidecarBeaconBlockRoot *proto.ColNullable[[]byte] rows int } @@ -58,6 +60,8 @@ func newbeaconApiEthV1EventsDataColumnSidecarBatch() *beaconApiEthV1EventsDataCo MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + SidecarSlot: new(proto.ColUInt32).Nullable(), + SidecarBeaconBlockRoot: route.NewNullableFixedStr(66), } } @@ -154,6 +158,8 @@ func (b *beaconApiEthV1EventsDataColumnSidecarBatch) Input() proto.Input { {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, {Name: "meta_labels", Data: b.MetaLabels}, + {Name: "sidecar_slot", Data: b.SidecarSlot}, + {Name: "sidecar_beacon_block_root", Data: b.SidecarBeaconBlockRoot}, } } @@ -190,6 +196,8 @@ func (b *beaconApiEthV1EventsDataColumnSidecarBatch) Reset() { b.MetaConsensusVersionPatch.Reset() b.MetaConsensusImplementation.Reset() b.MetaLabels.Reset() + b.SidecarSlot.Reset() + b.SidecarBeaconBlockRoot.Reset() b.rows = 0 } @@ -198,7 +206,7 @@ func (b *beaconApiEthV1EventsDataColumnSidecarBatch) Snapshot() []map[string]any out := make([]map[string]any, n) for i := 0; i < n; i++ { - row := make(map[string]any, 32) + row := make(map[string]any, 34) row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() row["slot"] = b.Slot.Row(i) @@ -251,6 +259,16 @@ func (b *beaconApiEthV1EventsDataColumnSidecarBatch) Snapshot() []map[string]any row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) row["meta_labels"] = b.MetaLabels.Row(i) + if v := b.SidecarSlot.Row(i); v.Set { + row["sidecar_slot"] = v.Value + } else { + row["sidecar_slot"] = nil + } + if v := b.SidecarBeaconBlockRoot.Row(i); v.Set { + row["sidecar_beacon_block_root"] = string(v.Value) + } else { + row["sidecar_beacon_block_root"] = nil + } out[i] = row } diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.go index 3fd7cf009..e6459c0c0 100644 --- a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.go +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_data_column_sidecar.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + "github.com/ClickHouse/ch-go/proto" "github.com/ethpandaops/xatu/pkg/consumoor/route" "github.com/ethpandaops/xatu/pkg/proto/xatu" ) @@ -104,6 +105,10 @@ func (b *beaconApiEthV1EventsDataColumnSidecarBatch) appendPayload(event *xatu.D } else { b.KzgCommitmentsCount.Append(0) } + + // TODO(epbs): populate with real sidecar slot/block root once available. + b.SidecarSlot.Append(proto.Nullable[uint32]{}) + b.SidecarBeaconBlockRoot.Append(proto.Nullable[[]byte]{}) } func (b *beaconApiEthV1EventsDataColumnSidecarBatch) appendAdditionalData( diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.gen.go new file mode 100644 index 000000000..3dfa6efc8 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.gen.go @@ -0,0 +1,264 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package beacon + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const beaconApiEthV1EventsExecutionPayloadTableName route.TableName = "beacon_api_eth_v1_events_execution_payload" + +type beaconApiEthV1EventsExecutionPayloadBatch struct { + UpdatedDateTime proto.ColDateTime + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + BlockRoot route.SafeColFixedStr + BuilderIndex proto.ColUInt64 + BlockHash route.SafeColFixedStr + StateRoot route.SafeColFixedStr + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newbeaconApiEthV1EventsExecutionPayloadBatch() *beaconApiEthV1EventsExecutionPayloadBatch { + return &beaconApiEthV1EventsExecutionPayloadBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + StateRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) Rows() int { + return b.rows +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "block_root", Data: &b.BlockRoot}, + {Name: "builder_index", Data: &b.BuilderIndex}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "state_root", Data: &b.StateRoot}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) Reset() { + b.UpdatedDateTime.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.BlockRoot.Reset() + b.BuilderIndex.Reset() + b.BlockHash.Reset() + b.StateRoot.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 33) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["block_root"] = string(b.BlockRoot.Row(i)) + row["builder_index"] = b.BuilderIndex.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["state_root"] = string(b.StateRoot.Row(i)) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.go new file mode 100644 index 000000000..cde84b374 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload.go @@ -0,0 +1,119 @@ +package beacon + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var beaconApiEthV1EventsExecutionPayloadEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD, +} + +func init() { + r, err := route.NewStaticRoute( + beaconApiEthV1EventsExecutionPayloadTableName, + beaconApiEthV1EventsExecutionPayloadEventNames, + func() route.ColumnarBatch { return newbeaconApiEthV1EventsExecutionPayloadBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV1EventsExecutionPayload() == nil { + return fmt.Errorf("nil eth_v1_events_execution_payload payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) appendPayload(event *xatu.DecoratedEvent) { + envelope := event.GetEthV1EventsExecutionPayload() + + msg := envelope.GetMessage() + + b.BlockRoot.Append([]byte(msg.GetBeaconBlockRoot())) + + if builderIndex := msg.GetBuilderIndex(); builderIndex != nil { + b.BuilderIndex.Append(builderIndex.GetValue()) + } else { + b.BuilderIndex.Append(0) + } + + if payload := msg.GetPayload(); payload != nil { + b.BlockHash.Append([]byte(payload.GetBlockHash())) + b.StateRoot.Append([]byte(payload.GetStateRoot())) + } else { + b.BlockHash.Append(nil) + b.StateRoot.Append(nil) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + if event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + + return + } + + client := event.GetMeta().GetClient() + additionalV2 := client.GetEthV1EventsExecutionPayload() + additional := extractBeaconSlotEpochPropagation(additionalV2) + + if additionalV2 != nil { + if slot := additionalV2.GetSlot(); slot != nil { + if num := slot.GetNumber(); num != nil { + b.Slot.Append(uint32(num.GetValue())) //nolint:gosec // slot fits uint32 + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + + b.SlotStartDateTime.Append(time.Unix(additional.SlotStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(uint32(additional.PropagationSlotStartDiff)) //nolint:gosec // propagation diff fits uint32 + b.Epoch.Append(uint32(additional.Epoch)) //nolint:gosec // epoch fits uint32 + b.EpochStartDateTime.Append(time.Unix(additional.EpochStartDateTime, 0)) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.gen.go new file mode 100644 index 000000000..56d58708d --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.gen.go @@ -0,0 +1,285 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package beacon + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const beaconApiEthV1EventsExecutionPayloadBidTableName route.TableName = "beacon_api_eth_v1_events_execution_payload_bid" + +type beaconApiEthV1EventsExecutionPayloadBidBatch struct { + UpdatedDateTime proto.ColDateTime + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + BuilderIndex proto.ColUInt64 + BlockHash route.SafeColFixedStr + ParentBlockHash route.SafeColFixedStr + ParentBlockRoot route.SafeColFixedStr + Value proto.ColUInt64 + ExecutionPayment proto.ColUInt64 + FeeRecipient route.SafeColFixedStr + GasLimit proto.ColUInt64 + BlobKzgCommitmentCount proto.ColUInt32 + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newbeaconApiEthV1EventsExecutionPayloadBidBatch() *beaconApiEthV1EventsExecutionPayloadBidBatch { + return &beaconApiEthV1EventsExecutionPayloadBidBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ParentBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ParentBlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + FeeRecipient: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) Rows() int { + return b.rows +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "builder_index", Data: &b.BuilderIndex}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "parent_block_hash", Data: &b.ParentBlockHash}, + {Name: "parent_block_root", Data: &b.ParentBlockRoot}, + {Name: "value", Data: &b.Value}, + {Name: "execution_payment", Data: &b.ExecutionPayment}, + {Name: "fee_recipient", Data: &b.FeeRecipient}, + {Name: "gas_limit", Data: &b.GasLimit}, + {Name: "blob_kzg_commitment_count", Data: &b.BlobKzgCommitmentCount}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) Reset() { + b.UpdatedDateTime.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.BuilderIndex.Reset() + b.BlockHash.Reset() + b.ParentBlockHash.Reset() + b.ParentBlockRoot.Reset() + b.Value.Reset() + b.ExecutionPayment.Reset() + b.FeeRecipient.Reset() + b.GasLimit.Reset() + b.BlobKzgCommitmentCount.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 38) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["builder_index"] = b.BuilderIndex.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["parent_block_hash"] = string(b.ParentBlockHash.Row(i)) + row["parent_block_root"] = string(b.ParentBlockRoot.Row(i)) + row["value"] = b.Value.Row(i) + row["execution_payment"] = b.ExecutionPayment.Row(i) + row["fee_recipient"] = string(b.FeeRecipient.Row(i)) + row["gas_limit"] = b.GasLimit.Row(i) + row["blob_kzg_commitment_count"] = b.BlobKzgCommitmentCount.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.go new file mode 100644 index 000000000..290c0ae95 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid.go @@ -0,0 +1,135 @@ +package beacon + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var beaconApiEthV1EventsExecutionPayloadBidEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID, +} + +func init() { + r, err := route.NewStaticRoute( + beaconApiEthV1EventsExecutionPayloadBidTableName, + beaconApiEthV1EventsExecutionPayloadBidEventNames, + func() route.ColumnarBatch { return newbeaconApiEthV1EventsExecutionPayloadBidBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV1EventsExecutionPayloadBid() == nil { + return fmt.Errorf("nil eth_v1_events_execution_payload_bid payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) appendPayload(event *xatu.DecoratedEvent) { + signed := event.GetEthV1EventsExecutionPayloadBid() + bid := signed.GetMessage() + + if builderIndex := bid.GetBuilderIndex(); builderIndex != nil { + b.BuilderIndex.Append(builderIndex.GetValue()) + } else { + b.BuilderIndex.Append(0) + } + + b.BlockHash.Append([]byte(bid.GetBlockHash())) + b.ParentBlockHash.Append([]byte(bid.GetParentBlockHash())) + b.ParentBlockRoot.Append([]byte(bid.GetParentBlockRoot())) + + if value := bid.GetValue(); value != nil { + b.Value.Append(value.GetValue()) + } else { + b.Value.Append(0) + } + + if executionPayment := bid.GetExecutionPayment(); executionPayment != nil { + b.ExecutionPayment.Append(executionPayment.GetValue()) + } else { + b.ExecutionPayment.Append(0) + } + + b.FeeRecipient.Append([]byte(bid.GetFeeRecipient())) + + if gasLimit := bid.GetGasLimit(); gasLimit != nil { + b.GasLimit.Append(gasLimit.GetValue()) + } else { + b.GasLimit.Append(0) + } + + //nolint:gosec // G115: length of blob kzg commitments fits uint32 + b.BlobKzgCommitmentCount.Append(uint32(len(bid.GetBlobKzgCommitments()))) +} + +func (b *beaconApiEthV1EventsExecutionPayloadBidBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + if event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + + return + } + + client := event.GetMeta().GetClient() + additionalV2 := client.GetEthV1EventsExecutionPayloadBid() + additional := extractBeaconSlotEpochPropagation(additionalV2) + + if additionalV2 != nil { + if slot := additionalV2.GetSlot(); slot != nil { + if num := slot.GetNumber(); num != nil { + b.Slot.Append(uint32(num.GetValue())) //nolint:gosec // slot fits uint32 + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + + b.SlotStartDateTime.Append(time.Unix(additional.SlotStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(uint32(additional.PropagationSlotStartDiff)) //nolint:gosec // propagation diff fits uint32 + b.Epoch.Append(uint32(additional.Epoch)) //nolint:gosec // epoch fits uint32 + b.EpochStartDateTime.Append(time.Unix(additional.EpochStartDateTime, 0)) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid_test.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid_test.go new file mode 100644 index 000000000..43e649f95 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_bid_test.go @@ -0,0 +1,27 @@ +package beacon + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_beacon_api_eth_v1_events_execution_payload_bid(t *testing.T) { + if len(beaconApiEthV1EventsExecutionPayloadBidEventNames) == 0 { + t.Skip("no event names registered for beacon_api_eth_v1_events_execution_payload_bid") + } + + testfixture.AssertSnapshot(t, newbeaconApiEthV1EventsExecutionPayloadBidBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: beaconApiEthV1EventsExecutionPayloadBidEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_test.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_test.go new file mode 100644 index 000000000..4a2161e47 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_execution_payload_test.go @@ -0,0 +1,27 @@ +package beacon + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_beacon_api_eth_v1_events_execution_payload(t *testing.T) { + if len(beaconApiEthV1EventsExecutionPayloadEventNames) == 0 { + t.Skip("no event names registered for beacon_api_eth_v1_events_execution_payload") + } + + testfixture.AssertSnapshot(t, newbeaconApiEthV1EventsExecutionPayloadBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: beaconApiEthV1EventsExecutionPayloadEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.gen.go new file mode 100644 index 000000000..0bec4644f --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.gen.go @@ -0,0 +1,262 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package beacon + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const beaconApiEthV1EventsPayloadAttestationTableName route.TableName = "beacon_api_eth_v1_events_payload_attestation" + +type beaconApiEthV1EventsPayloadAttestationBatch struct { + UpdatedDateTime proto.ColDateTime + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + ValidatorIndex proto.ColUInt32 + BeaconBlockRoot route.SafeColFixedStr + PayloadPresent proto.ColBool + BlobDataAvailable proto.ColBool + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newbeaconApiEthV1EventsPayloadAttestationBatch() *beaconApiEthV1EventsPayloadAttestationBatch { + return &beaconApiEthV1EventsPayloadAttestationBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BeaconBlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) Rows() int { + return b.rows +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "validator_index", Data: &b.ValidatorIndex}, + {Name: "beacon_block_root", Data: &b.BeaconBlockRoot}, + {Name: "payload_present", Data: &b.PayloadPresent}, + {Name: "blob_data_available", Data: &b.BlobDataAvailable}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) Reset() { + b.UpdatedDateTime.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.ValidatorIndex.Reset() + b.BeaconBlockRoot.Reset() + b.PayloadPresent.Reset() + b.BlobDataAvailable.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 33) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["validator_index"] = b.ValidatorIndex.Row(i) + row["beacon_block_root"] = string(b.BeaconBlockRoot.Row(i)) + row["payload_present"] = b.PayloadPresent.Row(i) + row["blob_data_available"] = b.BlobDataAvailable.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.go new file mode 100644 index 000000000..522b13d45 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation.go @@ -0,0 +1,119 @@ +package beacon + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var beaconApiEthV1EventsPayloadAttestationEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION, +} + +func init() { + r, err := route.NewStaticRoute( + beaconApiEthV1EventsPayloadAttestationTableName, + beaconApiEthV1EventsPayloadAttestationEventNames, + func() route.ColumnarBatch { return newbeaconApiEthV1EventsPayloadAttestationBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV1EventsPayloadAttestation() == nil { + return fmt.Errorf("nil eth_v1_events_payload_attestation payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +//nolint:gosec // G115: proto uint64 values are bounded by ClickHouse column schema +func (b *beaconApiEthV1EventsPayloadAttestationBatch) appendPayload(event *xatu.DecoratedEvent) { + msg := event.GetEthV1EventsPayloadAttestation() + + if validatorIndex := msg.GetValidatorIndex(); validatorIndex != nil { + b.ValidatorIndex.Append(uint32(validatorIndex.GetValue())) + } else { + b.ValidatorIndex.Append(0) + } + + data := msg.GetData() + if data != nil { + b.BeaconBlockRoot.Append([]byte(data.GetBeaconBlockRoot())) + b.PayloadPresent.Append(data.GetPayloadPresent()) + b.BlobDataAvailable.Append(data.GetBlobDataAvailable()) + } else { + b.BeaconBlockRoot.Append(nil) + b.PayloadPresent.Append(false) + b.BlobDataAvailable.Append(false) + } +} + +func (b *beaconApiEthV1EventsPayloadAttestationBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + if event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + + return + } + + client := event.GetMeta().GetClient() + additionalV2 := client.GetEthV1EventsPayloadAttestation() + additional := extractBeaconSlotEpochPropagation(additionalV2) + + if additionalV2 != nil { + if slot := additionalV2.GetSlot(); slot != nil { + if num := slot.GetNumber(); num != nil { + b.Slot.Append(uint32(num.GetValue())) //nolint:gosec // slot fits uint32 + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + + b.SlotStartDateTime.Append(time.Unix(additional.SlotStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(uint32(additional.PropagationSlotStartDiff)) //nolint:gosec // propagation diff fits uint32 + b.Epoch.Append(uint32(additional.Epoch)) //nolint:gosec // epoch fits uint32 + b.EpochStartDateTime.Append(time.Unix(additional.EpochStartDateTime, 0)) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation_test.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation_test.go new file mode 100644 index 000000000..42fa48694 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_payload_attestation_test.go @@ -0,0 +1,27 @@ +package beacon + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_beacon_api_eth_v1_events_payload_attestation(t *testing.T) { + if len(beaconApiEthV1EventsPayloadAttestationEventNames) == 0 { + t.Skip("no event names registered for beacon_api_eth_v1_events_payload_attestation") + } + + testfixture.AssertSnapshot(t, newbeaconApiEthV1EventsPayloadAttestationBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: beaconApiEthV1EventsPayloadAttestationEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.gen.go new file mode 100644 index 000000000..2d4d90e1d --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.gen.go @@ -0,0 +1,258 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package beacon + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const beaconApiEthV1EventsProposerPreferencesTableName route.TableName = "beacon_api_eth_v1_events_proposer_preferences" + +type beaconApiEthV1EventsProposerPreferencesBatch struct { + UpdatedDateTime proto.ColDateTime + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + ValidatorIndex proto.ColUInt32 + FeeRecipient route.SafeColFixedStr + GasLimit proto.ColUInt64 + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newbeaconApiEthV1EventsProposerPreferencesBatch() *beaconApiEthV1EventsProposerPreferencesBatch { + return &beaconApiEthV1EventsProposerPreferencesBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + FeeRecipient: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) Rows() int { + return b.rows +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "validator_index", Data: &b.ValidatorIndex}, + {Name: "fee_recipient", Data: &b.FeeRecipient}, + {Name: "gas_limit", Data: &b.GasLimit}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) Reset() { + b.UpdatedDateTime.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.ValidatorIndex.Reset() + b.FeeRecipient.Reset() + b.GasLimit.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 32) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["validator_index"] = b.ValidatorIndex.Row(i) + row["fee_recipient"] = string(b.FeeRecipient.Row(i)) + row["gas_limit"] = b.GasLimit.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.go new file mode 100644 index 000000000..a2f518506 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences.go @@ -0,0 +1,117 @@ +package beacon + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var beaconApiEthV1EventsProposerPreferencesEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES, +} + +func init() { + r, err := route.NewStaticRoute( + beaconApiEthV1EventsProposerPreferencesTableName, + beaconApiEthV1EventsProposerPreferencesEventNames, + func() route.ColumnarBatch { return newbeaconApiEthV1EventsProposerPreferencesBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV1EventsProposerPreferences() == nil { + return fmt.Errorf("nil eth_v1_events_proposer_preferences payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +//nolint:gosec // G115: proto uint64 values are bounded by ClickHouse column schema +func (b *beaconApiEthV1EventsProposerPreferencesBatch) appendPayload(event *xatu.DecoratedEvent) { + signed := event.GetEthV1EventsProposerPreferences() + prefs := signed.GetMessage() + + if validatorIndex := prefs.GetValidatorIndex(); validatorIndex != nil { + b.ValidatorIndex.Append(uint32(validatorIndex.GetValue())) + } else { + b.ValidatorIndex.Append(0) + } + + b.FeeRecipient.Append([]byte(prefs.GetFeeRecipient())) + + if gasLimit := prefs.GetGasLimit(); gasLimit != nil { + b.GasLimit.Append(gasLimit.GetValue()) + } else { + b.GasLimit.Append(0) + } +} + +func (b *beaconApiEthV1EventsProposerPreferencesBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + if event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + + return + } + + client := event.GetMeta().GetClient() + additionalV2 := client.GetEthV1EventsProposerPreferences() + additional := extractBeaconSlotEpochPropagation(additionalV2) + + if additionalV2 != nil { + if slot := additionalV2.GetSlot(); slot != nil { + if num := slot.GetNumber(); num != nil { + b.Slot.Append(uint32(num.GetValue())) //nolint:gosec // slot fits uint32 + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + } else { + b.Slot.Append(0) + } + + b.SlotStartDateTime.Append(time.Unix(additional.SlotStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(uint32(additional.PropagationSlotStartDiff)) //nolint:gosec // propagation diff fits uint32 + b.Epoch.Append(uint32(additional.Epoch)) //nolint:gosec // epoch fits uint32 + b.EpochStartDateTime.Append(time.Unix(additional.EpochStartDateTime, 0)) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences_test.go b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences_test.go new file mode 100644 index 000000000..9444c84a8 --- /dev/null +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v1_events_proposer_preferences_test.go @@ -0,0 +1,27 @@ +package beacon + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_beacon_api_eth_v1_events_proposer_preferences(t *testing.T) { + if len(beaconApiEthV1EventsProposerPreferencesEventNames) == 0 { + t.Skip("no event names registered for beacon_api_eth_v1_events_proposer_preferences") + } + + testfixture.AssertSnapshot(t, newbeaconApiEthV1EventsProposerPreferencesBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: beaconApiEthV1EventsProposerPreferencesEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.gen.go b/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.gen.go index 14e8ffede..71f1d552f 100644 --- a/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.gen.go +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.gen.go @@ -34,6 +34,11 @@ type beaconApiEthV2BeaconBlockBatch struct { ExecutionPayloadBaseFeePerGas *proto.ColNullable[proto.UInt128] ExecutionPayloadBlobGasUsed *proto.ColNullable[uint64] ExecutionPayloadExcessBlobGas *proto.ColNullable[uint64] + ExecutionPayloadSlotNumber *proto.ColNullable[uint64] + BuilderIndex *proto.ColNullable[uint64] + BidValue *proto.ColNullable[uint64] + ExecutionPayment *proto.ColNullable[uint64] + PayloadPresent *proto.ColNullable[bool] ExecutionPayloadGasLimit *proto.ColNullable[uint64] ExecutionPayloadGasUsed *proto.ColNullable[uint64] ExecutionPayloadStateRoot route.SafeColFixedStr @@ -68,31 +73,36 @@ type beaconApiEthV2BeaconBlockBatch struct { func newbeaconApiEthV2BeaconBlockBatch() *beaconApiEthV2BeaconBlockBatch { return &beaconApiEthV2BeaconBlockBatch{ - EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), - BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - BlockTotalBytes: new(proto.ColUInt32).Nullable(), - BlockTotalBytesCompressed: new(proto.ColUInt32).Nullable(), - ParentRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - StateRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - Eth1DataBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - Eth1DataDepositRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - ExecutionPayloadBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - ExecutionPayloadBaseFeePerGas: new(proto.ColUInt128).Nullable(), - ExecutionPayloadBlobGasUsed: new(proto.ColUInt64).Nullable(), - ExecutionPayloadExcessBlobGas: new(proto.ColUInt64).Nullable(), - ExecutionPayloadGasLimit: new(proto.ColUInt64).Nullable(), - ExecutionPayloadGasUsed: new(proto.ColUInt64).Nullable(), - ExecutionPayloadStateRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - ExecutionPayloadParentHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), - ExecutionPayloadTransactionsCount: new(proto.ColUInt32).Nullable(), - ExecutionPayloadTransactionsTotalBytes: new(proto.ColUInt32).Nullable(), + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BlockTotalBytes: new(proto.ColUInt32).Nullable(), + BlockTotalBytesCompressed: new(proto.ColUInt32).Nullable(), + ParentRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + StateRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + Eth1DataBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + Eth1DataDepositRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ExecutionPayloadBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ExecutionPayloadBaseFeePerGas: new(proto.ColUInt128).Nullable(), + ExecutionPayloadBlobGasUsed: new(proto.ColUInt64).Nullable(), + ExecutionPayloadExcessBlobGas: new(proto.ColUInt64).Nullable(), + ExecutionPayloadSlotNumber: new(proto.ColUInt64).Nullable(), + BuilderIndex: new(proto.ColUInt64).Nullable(), + BidValue: new(proto.ColUInt64).Nullable(), + ExecutionPayment: new(proto.ColUInt64).Nullable(), + PayloadPresent: new(proto.ColBool).Nullable(), + ExecutionPayloadGasLimit: new(proto.ColUInt64).Nullable(), + ExecutionPayloadGasUsed: new(proto.ColUInt64).Nullable(), + ExecutionPayloadStateRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ExecutionPayloadParentHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ExecutionPayloadTransactionsCount: new(proto.ColUInt32).Nullable(), + ExecutionPayloadTransactionsTotalBytes: new(proto.ColUInt32).Nullable(), ExecutionPayloadTransactionsTotalBytesCompressed: new(proto.ColUInt32).Nullable(), - MetaClientIP: new(proto.ColIPv6).Nullable(), - MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), - MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), - MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), - MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), - MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), } } @@ -178,6 +188,11 @@ func (b *beaconApiEthV2BeaconBlockBatch) Input() proto.Input { {Name: "execution_payload_base_fee_per_gas", Data: b.ExecutionPayloadBaseFeePerGas}, {Name: "execution_payload_blob_gas_used", Data: b.ExecutionPayloadBlobGasUsed}, {Name: "execution_payload_excess_blob_gas", Data: b.ExecutionPayloadExcessBlobGas}, + {Name: "execution_payload_slot_number", Data: b.ExecutionPayloadSlotNumber}, + {Name: "builder_index", Data: b.BuilderIndex}, + {Name: "bid_value", Data: b.BidValue}, + {Name: "execution_payment", Data: b.ExecutionPayment}, + {Name: "payload_present", Data: b.PayloadPresent}, {Name: "execution_payload_gas_limit", Data: b.ExecutionPayloadGasLimit}, {Name: "execution_payload_gas_used", Data: b.ExecutionPayloadGasUsed}, {Name: "execution_payload_state_root", Data: &b.ExecutionPayloadStateRoot}, @@ -232,6 +247,11 @@ func (b *beaconApiEthV2BeaconBlockBatch) Reset() { b.ExecutionPayloadBaseFeePerGas.Reset() b.ExecutionPayloadBlobGasUsed.Reset() b.ExecutionPayloadExcessBlobGas.Reset() + b.ExecutionPayloadSlotNumber.Reset() + b.BuilderIndex.Reset() + b.BidValue.Reset() + b.ExecutionPayment.Reset() + b.PayloadPresent.Reset() b.ExecutionPayloadGasLimit.Reset() b.ExecutionPayloadGasUsed.Reset() b.ExecutionPayloadStateRoot.Reset() @@ -269,7 +289,7 @@ func (b *beaconApiEthV2BeaconBlockBatch) Snapshot() []map[string]any { out := make([]map[string]any, n) for i := 0; i < n; i++ { - row := make(map[string]any, 50) + row := make(map[string]any, 55) row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() row["slot"] = b.Slot.Row(i) @@ -311,6 +331,31 @@ func (b *beaconApiEthV2BeaconBlockBatch) Snapshot() []map[string]any { } else { row["execution_payload_excess_blob_gas"] = nil } + if v := b.ExecutionPayloadSlotNumber.Row(i); v.Set { + row["execution_payload_slot_number"] = v.Value + } else { + row["execution_payload_slot_number"] = nil + } + if v := b.BuilderIndex.Row(i); v.Set { + row["builder_index"] = v.Value + } else { + row["builder_index"] = nil + } + if v := b.BidValue.Row(i); v.Set { + row["bid_value"] = v.Value + } else { + row["bid_value"] = nil + } + if v := b.ExecutionPayment.Row(i); v.Set { + row["execution_payment"] = v.Value + } else { + row["execution_payment"] = nil + } + if v := b.PayloadPresent.Row(i); v.Set { + row["payload_present"] = v.Value + } else { + row["payload_present"] = nil + } if v := b.ExecutionPayloadGasLimit.Row(i); v.Set { row["execution_payload_gas_limit"] = v.Value } else { diff --git a/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.go b/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.go index 525fe1493..524f0fd2f 100644 --- a/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.go +++ b/pkg/consumoor/route/beacon/beacon_api_eth_v2_beacon_block.go @@ -69,7 +69,8 @@ func (b *beaconApiEthV2BeaconBlockBatch) validate(event *xatu.DecoratedEvent) er payload.GetCapellaBlock() == nil && payload.GetDenebBlock() == nil && payload.GetElectraBlock() == nil && - payload.GetFuluBlock() == nil { + payload.GetFuluBlock() == nil && + payload.GetGloasBlock() == nil { return fmt.Errorf("nil Message: %w", route.ErrInvalidEvent) } @@ -249,6 +250,32 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendPayloadFromEventBlockV2( return b.appendExecutionPayloadElectra(body.GetExecutionPayload()) } + if gloasBlock := eventBlock.GetGloasBlock(); gloasBlock != nil { + if slot := gloasBlock.GetSlot(); slot != nil { + b.Slot.Append(uint32(slot.GetValue())) //nolint:gosec // slot fits uint32 + } else { + b.Slot.Append(0) + } + + b.ParentRoot.Append([]byte(gloasBlock.GetParentRoot())) + b.StateRoot.Append([]byte(gloasBlock.GetStateRoot())) + + if pi := gloasBlock.GetProposerIndex(); pi != nil { + b.ProposerIndex.Append(uint32(pi.GetValue())) //nolint:gosec // proposer index fits uint32 + } else { + b.ProposerIndex.Append(0) + } + + body := gloasBlock.GetBody() + b.appendEth1Data(body.GetEth1Data()) + + // Gloas blocks have no inline execution payload — it arrives + // via the ExecutionPayloadEnvelope event. + b.appendNoExecutionPayload() + + return nil + } + // Unknown block type: append zero values. b.Slot.Append(0) b.ParentRoot.Append(nil) @@ -279,10 +306,22 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendNoExecutionPayload() { b.ExecutionPayloadBaseFeePerGas.Append(proto.Nullable[proto.UInt128]{}) b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadGasLimit.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadStateRoot.Append(nil) b.ExecutionPayloadParentHash.Append(nil) + + b.appendNullEpbsColumns() +} + +// TODO(epbs): Gloas blocks should populate these from SignedExecutionPayloadBid +// once go-eth2-client lands. For now all blocks get NULL. +func (b *beaconApiEthV2BeaconBlockBatch) appendNullEpbsColumns() { + b.BuilderIndex.Append(proto.Nullable[uint64]{}) + b.BidValue.Append(proto.Nullable[uint64]{}) + b.ExecutionPayment.Append(proto.Nullable[uint64]{}) + b.PayloadPresent.Append(proto.Nullable[bool]{}) } func (b *beaconApiEthV2BeaconBlockBatch) appendExecutionPayloadV2( @@ -326,6 +365,9 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendExecutionPayloadV2( b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() return nil } @@ -371,6 +413,9 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendExecutionPayloadCapellaV2( b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() return nil } @@ -426,6 +471,10 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendExecutionPayloadDeneb( b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) } + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() + return nil } @@ -480,6 +529,10 @@ func (b *beaconApiEthV2BeaconBlockBatch) appendExecutionPayloadElectra( b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) } + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() + return nil } diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block.gen.go b/pkg/consumoor/route/canonical/canonical_beacon_block.gen.go index 421b8281c..fe4ac91bb 100644 --- a/pkg/consumoor/route/canonical/canonical_beacon_block.gen.go +++ b/pkg/consumoor/route/canonical/canonical_beacon_block.gen.go @@ -33,6 +33,12 @@ type canonicalBeaconBlockBatch struct { ExecutionPayloadBaseFeePerGas *proto.ColNullable[proto.UInt128] ExecutionPayloadBlobGasUsed *proto.ColNullable[uint64] ExecutionPayloadExcessBlobGas *proto.ColNullable[uint64] + ExecutionPayloadSlotNumber *proto.ColNullable[uint64] + ExecutionPayloadBlockAccessListRoot *proto.ColNullable[[]byte] + BuilderIndex *proto.ColNullable[uint64] + BidValue *proto.ColNullable[uint64] + ExecutionPayment *proto.ColNullable[uint64] + PayloadPresent *proto.ColNullable[bool] ExecutionPayloadGasLimit *proto.ColNullable[uint64] ExecutionPayloadGasUsed *proto.ColNullable[uint64] ExecutionPayloadStateRoot *proto.ColNullable[[]byte] @@ -80,6 +86,12 @@ func newcanonicalBeaconBlockBatch() *canonicalBeaconBlockBatch { ExecutionPayloadBaseFeePerGas: new(proto.ColUInt128).Nullable(), ExecutionPayloadBlobGasUsed: new(proto.ColUInt64).Nullable(), ExecutionPayloadExcessBlobGas: new(proto.ColUInt64).Nullable(), + ExecutionPayloadSlotNumber: new(proto.ColUInt64).Nullable(), + ExecutionPayloadBlockAccessListRoot: route.NewNullableFixedStr(66), + BuilderIndex: new(proto.ColUInt64).Nullable(), + BidValue: new(proto.ColUInt64).Nullable(), + ExecutionPayment: new(proto.ColUInt64).Nullable(), + PayloadPresent: new(proto.ColBool).Nullable(), ExecutionPayloadGasLimit: new(proto.ColUInt64).Nullable(), ExecutionPayloadGasUsed: new(proto.ColUInt64).Nullable(), ExecutionPayloadStateRoot: route.NewNullableFixedStr(66), @@ -177,6 +189,12 @@ func (b *canonicalBeaconBlockBatch) Input() proto.Input { {Name: "execution_payload_base_fee_per_gas", Data: b.ExecutionPayloadBaseFeePerGas}, {Name: "execution_payload_blob_gas_used", Data: b.ExecutionPayloadBlobGasUsed}, {Name: "execution_payload_excess_blob_gas", Data: b.ExecutionPayloadExcessBlobGas}, + {Name: "execution_payload_slot_number", Data: b.ExecutionPayloadSlotNumber}, + {Name: "execution_payload_block_access_list_root", Data: b.ExecutionPayloadBlockAccessListRoot}, + {Name: "builder_index", Data: b.BuilderIndex}, + {Name: "bid_value", Data: b.BidValue}, + {Name: "execution_payment", Data: b.ExecutionPayment}, + {Name: "payload_present", Data: b.PayloadPresent}, {Name: "execution_payload_gas_limit", Data: b.ExecutionPayloadGasLimit}, {Name: "execution_payload_gas_used", Data: b.ExecutionPayloadGasUsed}, {Name: "execution_payload_state_root", Data: b.ExecutionPayloadStateRoot}, @@ -230,6 +248,12 @@ func (b *canonicalBeaconBlockBatch) Reset() { b.ExecutionPayloadBaseFeePerGas.Reset() b.ExecutionPayloadBlobGasUsed.Reset() b.ExecutionPayloadExcessBlobGas.Reset() + b.ExecutionPayloadSlotNumber.Reset() + b.ExecutionPayloadBlockAccessListRoot.Reset() + b.BuilderIndex.Reset() + b.BidValue.Reset() + b.ExecutionPayment.Reset() + b.PayloadPresent.Reset() b.ExecutionPayloadGasLimit.Reset() b.ExecutionPayloadGasUsed.Reset() b.ExecutionPayloadStateRoot.Reset() @@ -267,7 +291,7 @@ func (b *canonicalBeaconBlockBatch) Snapshot() []map[string]any { out := make([]map[string]any, n) for i := 0; i < n; i++ { - row := make(map[string]any, 49) + row := make(map[string]any, 55) row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() row["slot"] = b.Slot.Row(i) row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() @@ -320,6 +344,36 @@ func (b *canonicalBeaconBlockBatch) Snapshot() []map[string]any { } else { row["execution_payload_excess_blob_gas"] = nil } + if v := b.ExecutionPayloadSlotNumber.Row(i); v.Set { + row["execution_payload_slot_number"] = v.Value + } else { + row["execution_payload_slot_number"] = nil + } + if v := b.ExecutionPayloadBlockAccessListRoot.Row(i); v.Set { + row["execution_payload_block_access_list_root"] = string(v.Value) + } else { + row["execution_payload_block_access_list_root"] = nil + } + if v := b.BuilderIndex.Row(i); v.Set { + row["builder_index"] = v.Value + } else { + row["builder_index"] = nil + } + if v := b.BidValue.Row(i); v.Set { + row["bid_value"] = v.Value + } else { + row["bid_value"] = nil + } + if v := b.ExecutionPayment.Row(i); v.Set { + row["execution_payment"] = v.Value + } else { + row["execution_payment"] = nil + } + if v := b.PayloadPresent.Row(i); v.Set { + row["payload_present"] = v.Value + } else { + row["payload_present"] = nil + } if v := b.ExecutionPayloadGasLimit.Row(i); v.Set { row["execution_payload_gas_limit"] = v.Value } else { diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block.go b/pkg/consumoor/route/canonical/canonical_beacon_block.go index 6cd1c6bdc..693f7c415 100644 --- a/pkg/consumoor/route/canonical/canonical_beacon_block.go +++ b/pkg/consumoor/route/canonical/canonical_beacon_block.go @@ -241,6 +241,32 @@ func (b *canonicalBeaconBlockBatch) appendPayloadFromEventBlockV2(eventBlock *et return b.appendExecutionPayloadElectra(body.GetExecutionPayload()) } + if gloasBlock := eventBlock.GetGloasBlock(); gloasBlock != nil { + if slot := gloasBlock.GetSlot(); slot != nil { + b.Slot.Append(uint32(slot.GetValue())) + } else { + b.Slot.Append(0) + } + + if proposerIndex := gloasBlock.GetProposerIndex(); proposerIndex != nil { + b.ProposerIndex.Append(uint32(proposerIndex.GetValue())) + } else { + b.ProposerIndex.Append(0) + } + + b.ParentRoot.Append([]byte(gloasBlock.GetParentRoot())) + b.StateRoot.Append([]byte(gloasBlock.GetStateRoot())) + + body := gloasBlock.GetBody() + b.appendEth1Data(body.GetEth1Data()) + + // Gloas blocks have no inline execution payload — it arrives + // via the ExecutionPayloadEnvelope event. + b.appendNullExecutionPayload() + + return nil + } + // Unknown block version - append zeros. b.Slot.Append(0) b.ProposerIndex.Append(0) @@ -271,11 +297,23 @@ func (b *canonicalBeaconBlockBatch) appendNullExecutionPayload() { b.ExecutionPayloadFeeRecipient.Append(proto.Nullable[string]{}) b.ExecutionPayloadBaseFeePerGas.Append(proto.Nullable[proto.UInt128]{}) b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadGasLimit.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadStateRoot.Append(proto.Nullable[[]byte]{}) b.ExecutionPayloadParentHash.Append(proto.Nullable[[]byte]{}) + + b.appendNullEpbsColumns() +} + +// TODO(epbs): Gloas blocks should populate these from SignedExecutionPayloadBid +// once go-eth2-client lands. For now all blocks get NULL. +func (b *canonicalBeaconBlockBatch) appendNullEpbsColumns() { + b.BuilderIndex.Append(proto.Nullable[uint64]{}) + b.BidValue.Append(proto.Nullable[uint64]{}) + b.ExecutionPayment.Append(proto.Nullable[uint64]{}) + b.PayloadPresent.Append(proto.Nullable[bool]{}) } //nolint:gosec // G115 @@ -318,6 +356,9 @@ func (b *canonicalBeaconBlockBatch) appendExecutionPayloadV2(payload *ethv1.Exec b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() return nil } @@ -362,6 +403,9 @@ func (b *canonicalBeaconBlockBatch) appendExecutionPayloadCapellaV2(payload *eth b.ExecutionPayloadBlobGasUsed.Append(proto.Nullable[uint64]{}) b.ExecutionPayloadExcessBlobGas.Append(proto.Nullable[uint64]{}) + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() return nil } @@ -416,6 +460,10 @@ func (b *canonicalBeaconBlockBatch) appendExecutionPayloadDeneb(payload *ethv1.E b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) } + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() + return nil } @@ -469,6 +517,10 @@ func (b *canonicalBeaconBlockBatch) appendExecutionPayloadElectra(payload *ethv1 b.ExecutionPayloadGasUsed.Append(proto.Nullable[uint64]{}) } + b.ExecutionPayloadSlotNumber.Append(proto.Nullable[uint64]{}) + + b.appendNullEpbsColumns() + return nil } diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.gen.go b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.gen.go new file mode 100644 index 000000000..9f1d29582 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.gen.go @@ -0,0 +1,259 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package canonical + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const canonicalBeaconBlockAccessListTableName route.TableName = "canonical_beacon_block_access_list" + +type canonicalBeaconBlockAccessListBatch struct { + UpdatedDateTime proto.ColDateTime + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + BlockRoot route.SafeColFixedStr + BlockNumber proto.ColUInt64 + BlockHash route.SafeColFixedStr + Address route.SafeColFixedStr + ChangeType proto.ColStr + BlockAccessIndex proto.ColUInt16 + StorageKey route.SafeColFixedStr + NewValue *proto.ColNullable[string] + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newcanonicalBeaconBlockAccessListBatch() *canonicalBeaconBlockAccessListBatch { + return &canonicalBeaconBlockAccessListBatch{ + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + Address: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + StorageKey: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + NewValue: new(proto.ColStr).Nullable(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *canonicalBeaconBlockAccessListBatch) Rows() int { + return b.rows +} + +func (b *canonicalBeaconBlockAccessListBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *canonicalBeaconBlockAccessListBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "block_root", Data: &b.BlockRoot}, + {Name: "block_number", Data: &b.BlockNumber}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "address", Data: &b.Address}, + {Name: "change_type", Data: &b.ChangeType}, + {Name: "block_access_index", Data: &b.BlockAccessIndex}, + {Name: "storage_key", Data: &b.StorageKey}, + {Name: "new_value", Data: b.NewValue}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *canonicalBeaconBlockAccessListBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.BlockRoot.Reset() + b.BlockNumber.Reset() + b.BlockHash.Reset() + b.Address.Reset() + b.ChangeType.Reset() + b.BlockAccessIndex.Reset() + b.StorageKey.Reset() + b.NewValue.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *canonicalBeaconBlockAccessListBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 32) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["block_root"] = string(b.BlockRoot.Row(i)) + row["block_number"] = b.BlockNumber.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["address"] = string(b.Address.Row(i)) + row["change_type"] = b.ChangeType.Row(i) + row["block_access_index"] = b.BlockAccessIndex.Row(i) + row["storage_key"] = string(b.StorageKey.Row(i)) + if v := b.NewValue.Row(i); v.Set { + row["new_value"] = v.Value + } else { + row["new_value"] = nil + } + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.go b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.go new file mode 100644 index 000000000..1b43b272b --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list.go @@ -0,0 +1,124 @@ +package canonical + +import ( + "fmt" + "time" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var canonicalBeaconBlockAccessListEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST, +} + +func init() { + r, err := route.NewStaticRoute( + canonicalBeaconBlockAccessListTableName, + canonicalBeaconBlockAccessListEventNames, + func() route.ColumnarBatch { return newcanonicalBeaconBlockAccessListBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *canonicalBeaconBlockAccessListBatch) FlattenTo(event *xatu.DecoratedEvent) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV2BeaconBlockAccessList() == nil { + return fmt.Errorf("nil eth_v2_beacon_block_access_list payload: %w", route.ErrInvalidEvent) + } + + if err := b.validate(event); err != nil { + return err + } + + b.appendRuntime(event) + b.appendMetadata(event) + + if err := b.appendPayload(event); err != nil { + return err + } + + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *canonicalBeaconBlockAccessListBatch) validate(event *xatu.DecoratedEvent) error { + payload := event.GetEthV2BeaconBlockAccessList() + + if payload.GetAddress() == nil { + return fmt.Errorf("nil Address: %w", route.ErrInvalidEvent) + } + + return nil +} + +func (b *canonicalBeaconBlockAccessListBatch) appendRuntime(_ *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) +} + +func (b *canonicalBeaconBlockAccessListBatch) appendPayload(event *xatu.DecoratedEvent) error { + change := event.GetEthV2BeaconBlockAccessList() + + b.Address.Append([]byte(change.GetAddress().GetValue())) + b.ChangeType.Append(change.GetChangeType()) + + if blockAccessIndex := change.GetBlockAccessIndex(); blockAccessIndex != nil { + b.BlockAccessIndex.Append(uint16(blockAccessIndex.GetValue())) //nolint:gosec // block_access_index fits uint16 + } else { + b.BlockAccessIndex.Append(0) + } + + if storageKey := change.GetStorageKey(); storageKey != nil { + b.StorageKey.Append([]byte(storageKey.GetValue())) + } else { + b.StorageKey.Append(nil) + } + + if newValue := change.GetNewValue(); newValue != nil { + b.NewValue.Append(proto.NewNullable[string](newValue.GetValue())) + } else { + b.NewValue.Append(proto.Nullable[string]{}) + } + + return nil +} + +func (b *canonicalBeaconBlockAccessListBatch) appendAdditionalData(event *xatu.DecoratedEvent) { + additional := event.GetMeta().GetClient().GetEthV2BeaconBlockAccessList() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.BlockRoot.Append(nil) + b.BlockNumber.Append(0) + b.BlockHash.Append(nil) + + return + } + + appendBlockIdentifier(additional.GetBlock(), + &b.Slot, &b.SlotStartDateTime, &b.Epoch, &b.EpochStartDateTime, nil, &b.BlockRoot) + + if blockNumber := additional.GetBlockNumber(); blockNumber != nil { + b.BlockNumber.Append(blockNumber.GetValue()) + } else { + b.BlockNumber.Append(0) + } + + b.BlockHash.Append([]byte(additional.GetBlockHash())) +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_access_list_test.go b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list_test.go new file mode 100644 index 000000000..082a30636 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_access_list_test.go @@ -0,0 +1,77 @@ +package canonical + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + ethv1 "github.com/ethpandaops/xatu/pkg/proto/eth/v1" + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "google.golang.org/protobuf/types/known/wrapperspb" +) + +func TestSnapshot_canonical_beacon_block_access_list(t *testing.T) { + testfixture.AssertSnapshot(t, newcanonicalBeaconBlockAccessListBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST, + DateTime: testfixture.TS(), + Id: "cbal-1", + }, + Meta: testfixture.MetaWithAdditional(&xatu.ClientMeta{ + AdditionalData: &xatu.ClientMeta_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: &xatu.ClientMeta_AdditionalEthV2BeaconBlockAccessListData{ + Block: &xatu.BlockIdentifier{ + Epoch: testfixture.EpochAdditional(), + }, + }, + }, + }), + Data: &xatu.DecoratedEvent_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: ðv1.BlockAccessListChange{ + Address: wrapperspb.String("0x1234567890abcdef1234567890abcdef12345678"), + ChangeType: "storage", + BlockAccessIndex: wrapperspb.UInt32(5), + StorageKey: wrapperspb.String("0xabcdef"), + NewValue: wrapperspb.String("0xdeadbeef"), + }, + }, + }, 1, map[string]any{ + "address": "0x1234567890abcdef1234567890abcdef12345678", + "change_type": "storage", + "block_access_index": uint32(5), + "storage_key": "0xabcdef", + "new_value": "0xdeadbeef", + }) +} + +func TestSnapshot_canonical_beacon_block_access_list_balance(t *testing.T) { + testfixture.AssertSnapshot(t, newcanonicalBeaconBlockAccessListBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST, + DateTime: testfixture.TS(), + Id: "cbal-2", + }, + Meta: testfixture.MetaWithAdditional(&xatu.ClientMeta{ + AdditionalData: &xatu.ClientMeta_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: &xatu.ClientMeta_AdditionalEthV2BeaconBlockAccessListData{ + Block: &xatu.BlockIdentifier{ + Epoch: testfixture.EpochAdditional(), + }, + }, + }, + }), + Data: &xatu.DecoratedEvent_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: ðv1.BlockAccessListChange{ + Address: wrapperspb.String("0xaabbccddee112233445566778899aabbccddeeff"), + ChangeType: "balance", + BlockAccessIndex: wrapperspb.UInt32(2), + NewValue: wrapperspb.String("1000000000000000000"), + }, + }, + }, 1, map[string]any{ + "address": "0xaabbccddee112233445566778899aabbccddeeff", + "change_type": "balance", + "block_access_index": uint32(2), + "storage_key": "", + "new_value": "1000000000000000000", + }) +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.gen.go b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.gen.go new file mode 100644 index 000000000..fe176b284 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.gen.go @@ -0,0 +1,290 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package canonical + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const canonicalBeaconBlockExecutionPayloadBidTableName route.TableName = "canonical_beacon_block_execution_payload_bid" + +type canonicalBeaconBlockExecutionPayloadBidBatch struct { + UpdatedDateTime proto.ColDateTime + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + BlockRoot route.SafeColFixedStr + BlockVersion proto.ColStr + BuilderIndex proto.ColUInt64 + BlockHash route.SafeColFixedStr + ParentBlockHash route.SafeColFixedStr + ParentBlockRoot route.SafeColFixedStr + Value proto.ColUInt64 + ExecutionPayment proto.ColUInt64 + FeeRecipient route.SafeColFixedStr + GasLimit proto.ColUInt64 + PrevRandao route.SafeColFixedStr + BlobKzgCommitmentCount proto.ColUInt32 + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newcanonicalBeaconBlockExecutionPayloadBidBatch() *canonicalBeaconBlockExecutionPayloadBidBatch { + return &canonicalBeaconBlockExecutionPayloadBidBatch{ + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ParentBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ParentBlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + FeeRecipient: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + PrevRandao: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) Rows() int { + return b.rows +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "block_root", Data: &b.BlockRoot}, + {Name: "block_version", Data: &b.BlockVersion}, + {Name: "builder_index", Data: &b.BuilderIndex}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "parent_block_hash", Data: &b.ParentBlockHash}, + {Name: "parent_block_root", Data: &b.ParentBlockRoot}, + {Name: "value", Data: &b.Value}, + {Name: "execution_payment", Data: &b.ExecutionPayment}, + {Name: "fee_recipient", Data: &b.FeeRecipient}, + {Name: "gas_limit", Data: &b.GasLimit}, + {Name: "prev_randao", Data: &b.PrevRandao}, + {Name: "blob_kzg_commitment_count", Data: &b.BlobKzgCommitmentCount}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.BlockRoot.Reset() + b.BlockVersion.Reset() + b.BuilderIndex.Reset() + b.BlockHash.Reset() + b.ParentBlockHash.Reset() + b.ParentBlockRoot.Reset() + b.Value.Reset() + b.ExecutionPayment.Reset() + b.FeeRecipient.Reset() + b.GasLimit.Reset() + b.PrevRandao.Reset() + b.BlobKzgCommitmentCount.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 39) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["block_root"] = string(b.BlockRoot.Row(i)) + row["block_version"] = b.BlockVersion.Row(i) + row["builder_index"] = b.BuilderIndex.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["parent_block_hash"] = string(b.ParentBlockHash.Row(i)) + row["parent_block_root"] = string(b.ParentBlockRoot.Row(i)) + row["value"] = b.Value.Row(i) + row["execution_payment"] = b.ExecutionPayment.Row(i) + row["fee_recipient"] = string(b.FeeRecipient.Row(i)) + row["gas_limit"] = b.GasLimit.Row(i) + row["prev_randao"] = string(b.PrevRandao.Row(i)) + row["blob_kzg_commitment_count"] = b.BlobKzgCommitmentCount.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.go b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.go new file mode 100644 index 000000000..29a481fa4 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid.go @@ -0,0 +1,113 @@ +package canonical + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var canonicalBeaconBlockExecutionPayloadBidEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID, +} + +func init() { + r, err := route.NewStaticRoute( + canonicalBeaconBlockExecutionPayloadBidTableName, + canonicalBeaconBlockExecutionPayloadBidEventNames, + func() route.ColumnarBatch { return newcanonicalBeaconBlockExecutionPayloadBidBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV2BeaconBlockExecutionPayloadBid() == nil { + return fmt.Errorf("nil eth_v2_beacon_block_execution_payload_bid payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) appendRuntime(_ *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) appendPayload(event *xatu.DecoratedEvent) { + signed := event.GetEthV2BeaconBlockExecutionPayloadBid() + bid := signed.GetMessage() + + if builderIndex := bid.GetBuilderIndex(); builderIndex != nil { + b.BuilderIndex.Append(builderIndex.GetValue()) + } else { + b.BuilderIndex.Append(0) + } + + b.BlockHash.Append([]byte(bid.GetBlockHash())) + b.ParentBlockHash.Append([]byte(bid.GetParentBlockHash())) + b.ParentBlockRoot.Append([]byte(bid.GetParentBlockRoot())) + + if value := bid.GetValue(); value != nil { + b.Value.Append(value.GetValue()) + } else { + b.Value.Append(0) + } + + if executionPayment := bid.GetExecutionPayment(); executionPayment != nil { + b.ExecutionPayment.Append(executionPayment.GetValue()) + } else { + b.ExecutionPayment.Append(0) + } + + b.FeeRecipient.Append([]byte(bid.GetFeeRecipient())) + + if gasLimit := bid.GetGasLimit(); gasLimit != nil { + b.GasLimit.Append(gasLimit.GetValue()) + } else { + b.GasLimit.Append(0) + } + + b.PrevRandao.Append([]byte(bid.GetPrevRandao())) + + //nolint:gosec // G115: length of blob kzg commitments fits uint32 + b.BlobKzgCommitmentCount.Append(uint32(len(bid.GetBlobKzgCommitments()))) +} + +func (b *canonicalBeaconBlockExecutionPayloadBidBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + additional := event.GetMeta().GetClient().GetEthV2BeaconBlockExecutionPayloadBid() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.BlockRoot.Append(nil) + b.BlockVersion.Append("") + + return + } + + appendBlockIdentifier(additional.GetBlock(), + &b.Slot, &b.SlotStartDateTime, &b.Epoch, &b.EpochStartDateTime, &b.BlockVersion, &b.BlockRoot) +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid_test.go b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid_test.go new file mode 100644 index 000000000..9b042a181 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_execution_payload_bid_test.go @@ -0,0 +1,27 @@ +package canonical + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_canonical_beacon_block_execution_payload_bid(t *testing.T) { + if len(canonicalBeaconBlockExecutionPayloadBidEventNames) == 0 { + t.Skip("no event names registered for canonical_beacon_block_execution_payload_bid") + } + + testfixture.AssertSnapshot(t, newcanonicalBeaconBlockExecutionPayloadBidBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: canonicalBeaconBlockExecutionPayloadBidEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.gen.go b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.gen.go new file mode 100644 index 000000000..24f96d19f --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.gen.go @@ -0,0 +1,270 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package canonical + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const canonicalBeaconBlockPayloadAttestationTableName route.TableName = "canonical_beacon_block_payload_attestation" + +type canonicalBeaconBlockPayloadAttestationBatch struct { + UpdatedDateTime proto.ColDateTime + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + BlockRoot route.SafeColFixedStr + BlockVersion proto.ColStr + Position proto.ColUInt32 + BeaconBlockRoot route.SafeColFixedStr + PayloadPresent proto.ColBool + BlobDataAvailable proto.ColBool + AggregationBits proto.ColStr + AttestingValidatorCount proto.ColUInt32 + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + MetaConsensusVersion proto.ColStr + MetaConsensusVersionMajor proto.ColStr + MetaConsensusVersionMinor proto.ColStr + MetaConsensusVersionPatch proto.ColStr + MetaConsensusImplementation proto.ColStr + MetaLabels *proto.ColMap[string, string] + rows int +} + +func newcanonicalBeaconBlockPayloadAttestationBatch() *canonicalBeaconBlockPayloadAttestationBatch { + return &canonicalBeaconBlockPayloadAttestationBatch{ + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BeaconBlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + MetaLabels: proto.NewMap[string, string](new(proto.ColStr), new(proto.ColStr)), + } +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) Rows() int { + return b.rows +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + b.MetaConsensusVersion.Append("") + b.MetaConsensusVersionMajor.Append("") + b.MetaConsensusVersionMinor.Append("") + b.MetaConsensusVersionPatch.Append("") + b.MetaConsensusImplementation.Append("") + b.MetaLabels.Append(nil) + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) + b.MetaConsensusVersion.Append(route.NormalizeConsensusVersion(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMajor.Append(route.ConsensusVersionMajor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionMinor.Append(route.ConsensusVersionMinor(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusVersionPatch.Append(route.ConsensusVersionPatch(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetVersion())) + b.MetaConsensusImplementation.Append(event.GetMeta().GetClient().GetEthereum().GetConsensus().GetImplementation()) + if labels := event.GetMeta().GetClient().GetLabels(); labels != nil { + b.MetaLabels.Append(labels) + } else { + b.MetaLabels.Append(map[string]string{}) + } +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "block_root", Data: &b.BlockRoot}, + {Name: "block_version", Data: &b.BlockVersion}, + {Name: "position", Data: &b.Position}, + {Name: "beacon_block_root", Data: &b.BeaconBlockRoot}, + {Name: "payload_present", Data: &b.PayloadPresent}, + {Name: "blob_data_available", Data: &b.BlobDataAvailable}, + {Name: "aggregation_bits", Data: &b.AggregationBits}, + {Name: "attesting_validator_count", Data: &b.AttestingValidatorCount}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "meta_consensus_version", Data: &b.MetaConsensusVersion}, + {Name: "meta_consensus_version_major", Data: &b.MetaConsensusVersionMajor}, + {Name: "meta_consensus_version_minor", Data: &b.MetaConsensusVersionMinor}, + {Name: "meta_consensus_version_patch", Data: &b.MetaConsensusVersionPatch}, + {Name: "meta_consensus_implementation", Data: &b.MetaConsensusImplementation}, + {Name: "meta_labels", Data: b.MetaLabels}, + } +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.BlockRoot.Reset() + b.BlockVersion.Reset() + b.Position.Reset() + b.BeaconBlockRoot.Reset() + b.PayloadPresent.Reset() + b.BlobDataAvailable.Reset() + b.AggregationBits.Reset() + b.AttestingValidatorCount.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.MetaConsensusVersion.Reset() + b.MetaConsensusVersionMajor.Reset() + b.MetaConsensusVersionMinor.Reset() + b.MetaConsensusVersionPatch.Reset() + b.MetaConsensusImplementation.Reset() + b.MetaLabels.Reset() + b.rows = 0 +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 35) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["block_root"] = string(b.BlockRoot.Row(i)) + row["block_version"] = b.BlockVersion.Row(i) + row["position"] = b.Position.Row(i) + row["beacon_block_root"] = string(b.BeaconBlockRoot.Row(i)) + row["payload_present"] = b.PayloadPresent.Row(i) + row["blob_data_available"] = b.BlobDataAvailable.Row(i) + row["aggregation_bits"] = b.AggregationBits.Row(i) + row["attesting_validator_count"] = b.AttestingValidatorCount.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + row["meta_consensus_version"] = b.MetaConsensusVersion.Row(i) + row["meta_consensus_version_major"] = b.MetaConsensusVersionMajor.Row(i) + row["meta_consensus_version_minor"] = b.MetaConsensusVersionMinor.Row(i) + row["meta_consensus_version_patch"] = b.MetaConsensusVersionPatch.Row(i) + row["meta_consensus_implementation"] = b.MetaConsensusImplementation.Row(i) + row["meta_labels"] = b.MetaLabels.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.go b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.go new file mode 100644 index 000000000..f325f22bf --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation.go @@ -0,0 +1,96 @@ +package canonical + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var canonicalBeaconBlockPayloadAttestationEventNames = []xatu.Event_Name{ + xatu.Event_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION, +} + +func init() { + r, err := route.NewStaticRoute( + canonicalBeaconBlockPayloadAttestationTableName, + canonicalBeaconBlockPayloadAttestationEventNames, + func() route.ColumnarBatch { return newcanonicalBeaconBlockPayloadAttestationBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetEthV2BeaconBlockPayloadAttestation() == nil { + return fmt.Errorf("nil eth_v2_beacon_block_payload_attestation payload: %w", route.ErrInvalidEvent) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendAdditionalData(event) + b.rows++ + + return nil +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) appendRuntime(_ *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) appendPayload(event *xatu.DecoratedEvent) { + attestation := event.GetEthV2BeaconBlockPayloadAttestation() + + data := attestation.GetData() + if data != nil { + b.BeaconBlockRoot.Append([]byte(data.GetBeaconBlockRoot())) + b.PayloadPresent.Append(data.GetPayloadPresent()) + b.BlobDataAvailable.Append(data.GetBlobDataAvailable()) + } else { + b.BeaconBlockRoot.Append(nil) + b.PayloadPresent.Append(false) + b.BlobDataAvailable.Append(false) + } + + b.AggregationBits.Append(attestation.GetAggregationBits()) + + // TODO(epbs): AttestingValidatorCount and Position are not available on the PayloadAttestation + // proto type. These require Additional*Data proto definitions to be populated by cannon. + // For now, zero-fill these fields. + b.AttestingValidatorCount.Append(0) + b.Position.Append(0) +} + +func (b *canonicalBeaconBlockPayloadAttestationBatch) appendAdditionalData( + event *xatu.DecoratedEvent, +) { + additional := event.GetMeta().GetClient().GetEthV2BeaconBlockPayloadAttestation() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.BlockRoot.Append(nil) + b.BlockVersion.Append("") + + return + } + + appendBlockIdentifier(additional.GetBlock(), + &b.Slot, &b.SlotStartDateTime, &b.Epoch, &b.EpochStartDateTime, &b.BlockVersion, &b.BlockRoot) +} diff --git a/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation_test.go b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation_test.go new file mode 100644 index 000000000..1920de332 --- /dev/null +++ b/pkg/consumoor/route/canonical/canonical_beacon_block_payload_attestation_test.go @@ -0,0 +1,27 @@ +package canonical + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_canonical_beacon_block_payload_attestation(t *testing.T) { + if len(canonicalBeaconBlockPayloadAttestationEventNames) == 0 { + t.Skip("no event names registered for canonical_beacon_block_payload_attestation") + } + + testfixture.AssertSnapshot(t, newcanonicalBeaconBlockPayloadAttestationBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: canonicalBeaconBlockPayloadAttestationEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.gen.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.gen.go index c419a6714..3cdbc9511 100644 --- a/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.gen.go +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.gen.go @@ -54,6 +54,8 @@ type libp2pGossipsubDataColumnSidecarBatch struct { MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] MetaNetworkID proto.ColInt32 MetaNetworkName proto.ColStr + SidecarSlot *proto.ColNullable[uint32] + SidecarBeaconBlockRoot *proto.ColNullable[[]byte] rows int } @@ -68,6 +70,8 @@ func newlibp2pGossipsubDataColumnSidecarBatch() *libp2pGossipsubDataColumnSideca MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + SidecarSlot: new(proto.ColUInt32).Nullable(), + SidecarBeaconBlockRoot: route.NewNullableFixedStr(66), } } @@ -157,6 +161,8 @@ func (b *libp2pGossipsubDataColumnSidecarBatch) Input() proto.Input { {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, {Name: "meta_network_id", Data: &b.MetaNetworkID}, {Name: "meta_network_name", Data: &b.MetaNetworkName}, + {Name: "sidecar_slot", Data: b.SidecarSlot}, + {Name: "sidecar_beacon_block_root", Data: b.SidecarBeaconBlockRoot}, } } @@ -202,6 +208,8 @@ func (b *libp2pGossipsubDataColumnSidecarBatch) Reset() { b.MetaClientGeoAutonomousSystemOrganization.Reset() b.MetaNetworkID.Reset() b.MetaNetworkName.Reset() + b.SidecarSlot.Reset() + b.SidecarBeaconBlockRoot.Reset() b.rows = 0 } @@ -210,7 +218,7 @@ func (b *libp2pGossipsubDataColumnSidecarBatch) Snapshot() []map[string]any { out := make([]map[string]any, n) for i := 0; i < n; i++ { - row := make(map[string]any, 41) + row := make(map[string]any, 43) row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() row["version"] = b.Version.Row(i) row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() @@ -272,6 +280,16 @@ func (b *libp2pGossipsubDataColumnSidecarBatch) Snapshot() []map[string]any { } row["meta_network_id"] = b.MetaNetworkID.Row(i) row["meta_network_name"] = b.MetaNetworkName.Row(i) + if v := b.SidecarSlot.Row(i); v.Set { + row["sidecar_slot"] = v.Value + } else { + row["sidecar_slot"] = nil + } + if v := b.SidecarBeaconBlockRoot.Row(i); v.Set { + row["sidecar_beacon_block_root"] = string(v.Value) + } else { + row["sidecar_beacon_block_root"] = nil + } out[i] = row } diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.go index 228eb8d14..f4003f935 100644 --- a/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.go +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_data_column_sidecar.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + "github.com/ClickHouse/ch-go/proto" "github.com/ethpandaops/xatu/pkg/consumoor/route" "github.com/ethpandaops/xatu/pkg/proto/xatu" ) @@ -134,6 +135,10 @@ func (b *libp2pGossipsubDataColumnSidecarBatch) appendPayload(event *xatu.Decora } else { b.KzgCommitmentsCount.Append(0) } + + // TODO(epbs): populate with real sidecar slot/block root once available. + b.SidecarSlot.Append(proto.Nullable[uint32]{}) + b.SidecarBeaconBlockRoot.Append(proto.Nullable[[]byte]{}) } func (b *libp2pGossipsubDataColumnSidecarBatch) appendClientAdditionalData( diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.gen.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.gen.go new file mode 100644 index 000000000..28f063550 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.gen.go @@ -0,0 +1,287 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package libp2p + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const libp2pGossipsubExecutionPayloadBidTableName route.TableName = "libp2p_gossipsub_execution_payload_bid" + +type libp2pGossipsubExecutionPayloadBidBatch struct { + UpdatedDateTime proto.ColDateTime + Version proto.ColUInt32 + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + WallclockSlot proto.ColUInt32 + WallclockSlotStartDateTime proto.ColDateTime + WallclockEpoch proto.ColUInt32 + WallclockEpochStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + BuilderIndex proto.ColUInt64 + BlockHash route.SafeColFixedStr + ParentBlockHash route.SafeColFixedStr + Value proto.ColUInt64 + ExecutionPayment proto.ColUInt64 + FeeRecipient route.SafeColFixedStr + GasLimit proto.ColUInt64 + BlobKzgCommitmentCount proto.ColUInt32 + PeerIDUniqueKey proto.ColInt64 + MessageID proto.ColStr + MessageSize proto.ColUInt32 + TopicLayer proto.ColStr + TopicForkDigestValue proto.ColStr + TopicName proto.ColStr + TopicEncoding proto.ColStr + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + rows int +} + +func newlibp2pGossipsubExecutionPayloadBidBatch() *libp2pGossipsubExecutionPayloadBidBatch { + return &libp2pGossipsubExecutionPayloadBidBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + ParentBlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + FeeRecipient: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + } +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) Rows() int { + return b.rows +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "version", Data: &b.Version}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "wallclock_slot", Data: &b.WallclockSlot}, + {Name: "wallclock_slot_start_date_time", Data: &b.WallclockSlotStartDateTime}, + {Name: "wallclock_epoch", Data: &b.WallclockEpoch}, + {Name: "wallclock_epoch_start_date_time", Data: &b.WallclockEpochStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "builder_index", Data: &b.BuilderIndex}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "parent_block_hash", Data: &b.ParentBlockHash}, + {Name: "value", Data: &b.Value}, + {Name: "execution_payment", Data: &b.ExecutionPayment}, + {Name: "fee_recipient", Data: &b.FeeRecipient}, + {Name: "gas_limit", Data: &b.GasLimit}, + {Name: "blob_kzg_commitment_count", Data: &b.BlobKzgCommitmentCount}, + {Name: "peer_id_unique_key", Data: &b.PeerIDUniqueKey}, + {Name: "message_id", Data: &b.MessageID}, + {Name: "message_size", Data: &b.MessageSize}, + {Name: "topic_layer", Data: &b.TopicLayer}, + {Name: "topic_fork_digest_value", Data: &b.TopicForkDigestValue}, + {Name: "topic_name", Data: &b.TopicName}, + {Name: "topic_encoding", Data: &b.TopicEncoding}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + } +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Version.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.WallclockSlot.Reset() + b.WallclockSlotStartDateTime.Reset() + b.WallclockEpoch.Reset() + b.WallclockEpochStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.BuilderIndex.Reset() + b.BlockHash.Reset() + b.ParentBlockHash.Reset() + b.Value.Reset() + b.ExecutionPayment.Reset() + b.FeeRecipient.Reset() + b.GasLimit.Reset() + b.BlobKzgCommitmentCount.Reset() + b.PeerIDUniqueKey.Reset() + b.MessageID.Reset() + b.MessageSize.Reset() + b.TopicLayer.Reset() + b.TopicForkDigestValue.Reset() + b.TopicName.Reset() + b.TopicEncoding.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.rows = 0 +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 43) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["version"] = b.Version.Row(i) + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["wallclock_slot"] = b.WallclockSlot.Row(i) + row["wallclock_slot_start_date_time"] = b.WallclockSlotStartDateTime.Row(i).Unix() + row["wallclock_epoch"] = b.WallclockEpoch.Row(i) + row["wallclock_epoch_start_date_time"] = b.WallclockEpochStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["builder_index"] = b.BuilderIndex.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["parent_block_hash"] = string(b.ParentBlockHash.Row(i)) + row["value"] = b.Value.Row(i) + row["execution_payment"] = b.ExecutionPayment.Row(i) + row["fee_recipient"] = string(b.FeeRecipient.Row(i)) + row["gas_limit"] = b.GasLimit.Row(i) + row["blob_kzg_commitment_count"] = b.BlobKzgCommitmentCount.Row(i) + row["peer_id_unique_key"] = b.PeerIDUniqueKey.Row(i) + row["message_id"] = b.MessageID.Row(i) + row["message_size"] = b.MessageSize.Row(i) + row["topic_layer"] = b.TopicLayer.Row(i) + row["topic_fork_digest_value"] = b.TopicForkDigestValue.Row(i) + row["topic_name"] = b.TopicName.Row(i) + row["topic_encoding"] = b.TopicEncoding.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.go new file mode 100644 index 000000000..715e77fae --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid.go @@ -0,0 +1,202 @@ +package libp2p + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var libp2pGossipsubExecutionPayloadBidEventNames = []xatu.Event_Name{ + xatu.Event_LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID, +} + +func init() { + r, err := route.NewStaticRoute( + libp2pGossipsubExecutionPayloadBidTableName, + libp2pGossipsubExecutionPayloadBidEventNames, + func() route.ColumnarBatch { return newlibp2pGossipsubExecutionPayloadBidBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetLibp2PTraceGossipsubExecutionPayloadBid() == nil { + return fmt.Errorf( + "nil libp2p_trace_gossipsub_execution_payload_bid payload: %w", + route.ErrInvalidEvent, + ) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendClientAdditionalData(event) + b.rows++ + + return nil +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) appendPayload(event *xatu.DecoratedEvent) { + payload := event.GetLibp2PTraceGossipsubExecutionPayloadBid() + + if builderIndex := payload.GetBuilderIndex(); builderIndex != nil { + b.BuilderIndex.Append(builderIndex.GetValue()) + } else { + b.BuilderIndex.Append(0) + } + + b.BlockHash.Append([]byte(wrappedStringValue(payload.GetBlockHash()))) + b.ParentBlockHash.Append([]byte(wrappedStringValue(payload.GetParentBlockHash()))) + + if value := payload.GetValue(); value != nil { + b.Value.Append(value.GetValue()) + } else { + b.Value.Append(0) + } + + if executionPayment := payload.GetExecutionPayment(); executionPayment != nil { + b.ExecutionPayment.Append(executionPayment.GetValue()) + } else { + b.ExecutionPayment.Append(0) + } + + b.FeeRecipient.Append([]byte(wrappedStringValue(payload.GetFeeRecipient()))) + + if gasLimit := payload.GetGasLimit(); gasLimit != nil { + b.GasLimit.Append(gasLimit.GetValue()) + } else { + b.GasLimit.Append(0) + } + + if blobKzgCount := payload.GetBlobKzgCommitmentCount(); blobKzgCount != nil { + b.BlobKzgCommitmentCount.Append(blobKzgCount.GetValue()) + } else { + b.BlobKzgCommitmentCount.Append(0) + } +} + +func (b *libp2pGossipsubExecutionPayloadBidBatch) appendClientAdditionalData( + event *xatu.DecoratedEvent, +) { + if event == nil || event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + additional := event.GetMeta().GetClient().GetLibp2PTraceGossipsubExecutionPayloadBid() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + // Extract slot/epoch/wallclock/propagation fields. + var propagationSlotStartDiff uint32 + + setGossipsubSlotEpochFields(additional, func(f gossipsubSlotEpochResult) { + b.Slot.Append(f.Slot) + b.SlotStartDateTime.Append(time.Unix(f.SlotStartDateTime, 0)) + b.Epoch.Append(f.Epoch) + b.EpochStartDateTime.Append(time.Unix(f.EpochStartDateTime, 0)) + b.WallclockSlot.Append(f.WallclockSlot) + b.WallclockSlotStartDateTime.Append(time.Unix(f.WallclockSlotStartDateTime, 0)) + b.WallclockEpoch.Append(f.WallclockEpoch) + b.WallclockEpochStartDateTime.Append(time.Unix(f.WallclockEpochStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(f.PropagationSlotStartDiff) + propagationSlotStartDiff = f.PropagationSlotStartDiff + }) + + // Compute version for ReplacingMergeTree dedup. + b.Version.Append(4294967295 - propagationSlotStartDiff) + + // Extract message fields. + b.MessageID.Append(wrappedStringValue(additional.GetMessageId())) + + if msgSize := additional.GetMessageSize(); msgSize != nil { + b.MessageSize.Append(msgSize.GetValue()) + } else { + b.MessageSize.Append(0) + } + + // Parse topic fields. + if topic := wrappedStringValue(additional.GetTopic()); topic != "" { + parsed := parseTopicFields(topic) + b.TopicLayer.Append(parsed.Layer) + b.TopicForkDigestValue.Append(parsed.ForkDigestValue) + b.TopicName.Append(parsed.Name) + b.TopicEncoding.Append(parsed.Encoding) + } else { + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + } + + // Extract peer ID from metadata. + peerID := "" + if traceMeta := additional.GetMetadata(); traceMeta != nil && traceMeta.GetPeerId() != nil { + peerID = traceMeta.GetPeerId().GetValue() + } + + networkName := event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName() + b.PeerIDUniqueKey.Append(computePeerIDUniqueKey(peerID, networkName)) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid_test.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid_test.go new file mode 100644 index 000000000..f3a12a3d5 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_bid_test.go @@ -0,0 +1,27 @@ +package libp2p + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_libp2p_gossipsub_execution_payload_bid(t *testing.T) { + if len(libp2pGossipsubExecutionPayloadBidEventNames) == 0 { + t.Skip("no event names registered for libp2p_gossipsub_execution_payload_bid") + } + + testfixture.AssertSnapshot(t, newlibp2pGossipsubExecutionPayloadBidBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: libp2pGossipsubExecutionPayloadBidEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.gen.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.gen.go new file mode 100644 index 000000000..c9d9defb5 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.gen.go @@ -0,0 +1,266 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package libp2p + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const libp2pGossipsubExecutionPayloadEnvelopeTableName route.TableName = "libp2p_gossipsub_execution_payload_envelope" + +type libp2pGossipsubExecutionPayloadEnvelopeBatch struct { + UpdatedDateTime proto.ColDateTime + Version proto.ColUInt32 + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + WallclockSlot proto.ColUInt32 + WallclockSlotStartDateTime proto.ColDateTime + WallclockEpoch proto.ColUInt32 + WallclockEpochStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + BlockRoot route.SafeColFixedStr + BuilderIndex proto.ColUInt64 + BlockHash route.SafeColFixedStr + PeerIDUniqueKey proto.ColInt64 + MessageID proto.ColStr + MessageSize proto.ColUInt32 + TopicLayer proto.ColStr + TopicForkDigestValue proto.ColStr + TopicName proto.ColStr + TopicEncoding proto.ColStr + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + rows int +} + +func newlibp2pGossipsubExecutionPayloadEnvelopeBatch() *libp2pGossipsubExecutionPayloadEnvelopeBatch { + return &libp2pGossipsubExecutionPayloadEnvelopeBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + BlockHash: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + } +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) Rows() int { + return b.rows +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "version", Data: &b.Version}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "wallclock_slot", Data: &b.WallclockSlot}, + {Name: "wallclock_slot_start_date_time", Data: &b.WallclockSlotStartDateTime}, + {Name: "wallclock_epoch", Data: &b.WallclockEpoch}, + {Name: "wallclock_epoch_start_date_time", Data: &b.WallclockEpochStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "block_root", Data: &b.BlockRoot}, + {Name: "builder_index", Data: &b.BuilderIndex}, + {Name: "block_hash", Data: &b.BlockHash}, + {Name: "peer_id_unique_key", Data: &b.PeerIDUniqueKey}, + {Name: "message_id", Data: &b.MessageID}, + {Name: "message_size", Data: &b.MessageSize}, + {Name: "topic_layer", Data: &b.TopicLayer}, + {Name: "topic_fork_digest_value", Data: &b.TopicForkDigestValue}, + {Name: "topic_name", Data: &b.TopicName}, + {Name: "topic_encoding", Data: &b.TopicEncoding}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + } +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Version.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.WallclockSlot.Reset() + b.WallclockSlotStartDateTime.Reset() + b.WallclockEpoch.Reset() + b.WallclockEpochStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.BlockRoot.Reset() + b.BuilderIndex.Reset() + b.BlockHash.Reset() + b.PeerIDUniqueKey.Reset() + b.MessageID.Reset() + b.MessageSize.Reset() + b.TopicLayer.Reset() + b.TopicForkDigestValue.Reset() + b.TopicName.Reset() + b.TopicEncoding.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.rows = 0 +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 38) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["version"] = b.Version.Row(i) + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["wallclock_slot"] = b.WallclockSlot.Row(i) + row["wallclock_slot_start_date_time"] = b.WallclockSlotStartDateTime.Row(i).Unix() + row["wallclock_epoch"] = b.WallclockEpoch.Row(i) + row["wallclock_epoch_start_date_time"] = b.WallclockEpochStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["block_root"] = string(b.BlockRoot.Row(i)) + row["builder_index"] = b.BuilderIndex.Row(i) + row["block_hash"] = string(b.BlockHash.Row(i)) + row["peer_id_unique_key"] = b.PeerIDUniqueKey.Row(i) + row["message_id"] = b.MessageID.Row(i) + row["message_size"] = b.MessageSize.Row(i) + row["topic_layer"] = b.TopicLayer.Row(i) + row["topic_fork_digest_value"] = b.TopicForkDigestValue.Row(i) + row["topic_name"] = b.TopicName.Row(i) + row["topic_encoding"] = b.TopicEncoding.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.go new file mode 100644 index 000000000..867c89c92 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope.go @@ -0,0 +1,181 @@ +package libp2p + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var libp2pGossipsubExecutionPayloadEnvelopeEventNames = []xatu.Event_Name{ + xatu.Event_LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE, +} + +func init() { + r, err := route.NewStaticRoute( + libp2pGossipsubExecutionPayloadEnvelopeTableName, + libp2pGossipsubExecutionPayloadEnvelopeEventNames, + func() route.ColumnarBatch { return newlibp2pGossipsubExecutionPayloadEnvelopeBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetLibp2PTraceGossipsubExecutionPayloadEnvelope() == nil { + return fmt.Errorf( + "nil libp2p_trace_gossipsub_execution_payload_envelope payload: %w", + route.ErrInvalidEvent, + ) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendClientAdditionalData(event) + b.rows++ + + return nil +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) appendRuntime( + event *xatu.DecoratedEvent, +) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) appendPayload( + event *xatu.DecoratedEvent, +) { + payload := event.GetLibp2PTraceGossipsubExecutionPayloadEnvelope() + + b.BlockRoot.Append([]byte(wrappedStringValue(payload.GetBeaconBlockRoot()))) + + if builderIndex := payload.GetBuilderIndex(); builderIndex != nil { + b.BuilderIndex.Append(builderIndex.GetValue()) + } else { + b.BuilderIndex.Append(0) + } + + b.BlockHash.Append([]byte(wrappedStringValue(payload.GetBlockHash()))) +} + +func (b *libp2pGossipsubExecutionPayloadEnvelopeBatch) appendClientAdditionalData( + event *xatu.DecoratedEvent, +) { + if event == nil || event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + additional := event.GetMeta().GetClient().GetLibp2PTraceGossipsubExecutionPayloadEnvelope() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + // Extract slot/epoch/wallclock/propagation fields. + var propagationSlotStartDiff uint32 + + setGossipsubSlotEpochFields(additional, func(f gossipsubSlotEpochResult) { + b.Slot.Append(f.Slot) + b.SlotStartDateTime.Append(time.Unix(f.SlotStartDateTime, 0)) + b.Epoch.Append(f.Epoch) + b.EpochStartDateTime.Append(time.Unix(f.EpochStartDateTime, 0)) + b.WallclockSlot.Append(f.WallclockSlot) + b.WallclockSlotStartDateTime.Append(time.Unix(f.WallclockSlotStartDateTime, 0)) + b.WallclockEpoch.Append(f.WallclockEpoch) + b.WallclockEpochStartDateTime.Append(time.Unix(f.WallclockEpochStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(f.PropagationSlotStartDiff) + propagationSlotStartDiff = f.PropagationSlotStartDiff + }) + + // Compute version for ReplacingMergeTree dedup. + b.Version.Append(4294967295 - propagationSlotStartDiff) + + // Extract message fields. + b.MessageID.Append(wrappedStringValue(additional.GetMessageId())) + + if msgSize := additional.GetMessageSize(); msgSize != nil { + b.MessageSize.Append(msgSize.GetValue()) + } else { + b.MessageSize.Append(0) + } + + // Parse topic fields. + if topic := wrappedStringValue(additional.GetTopic()); topic != "" { + parsed := parseTopicFields(topic) + b.TopicLayer.Append(parsed.Layer) + b.TopicForkDigestValue.Append(parsed.ForkDigestValue) + b.TopicName.Append(parsed.Name) + b.TopicEncoding.Append(parsed.Encoding) + } else { + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + } + + // Extract peer ID from metadata. + peerID := "" + if traceMeta := additional.GetMetadata(); traceMeta != nil && traceMeta.GetPeerId() != nil { + peerID = traceMeta.GetPeerId().GetValue() + } + + networkName := event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName() + b.PeerIDUniqueKey.Append(computePeerIDUniqueKey(peerID, networkName)) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope_test.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope_test.go new file mode 100644 index 000000000..27fb6a1bd --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_execution_payload_envelope_test.go @@ -0,0 +1,27 @@ +package libp2p + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_libp2p_gossipsub_execution_payload_envelope(t *testing.T) { + if len(libp2pGossipsubExecutionPayloadEnvelopeEventNames) == 0 { + t.Skip("no event names registered for libp2p_gossipsub_execution_payload_envelope") + } + + testfixture.AssertSnapshot(t, newlibp2pGossipsubExecutionPayloadEnvelopeBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: libp2pGossipsubExecutionPayloadEnvelopeEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.gen.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.gen.go new file mode 100644 index 000000000..628737ee8 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.gen.go @@ -0,0 +1,269 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package libp2p + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const libp2pGossipsubPayloadAttestationMessageTableName route.TableName = "libp2p_gossipsub_payload_attestation_message" + +type libp2pGossipsubPayloadAttestationMessageBatch struct { + UpdatedDateTime proto.ColDateTime + Version proto.ColUInt32 + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + WallclockSlot proto.ColUInt32 + WallclockSlotStartDateTime proto.ColDateTime + WallclockEpoch proto.ColUInt32 + WallclockEpochStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + ValidatorIndex proto.ColUInt32 + BeaconBlockRoot route.SafeColFixedStr + PayloadPresent proto.ColBool + BlobDataAvailable proto.ColBool + PeerIDUniqueKey proto.ColInt64 + MessageID proto.ColStr + MessageSize proto.ColUInt32 + TopicLayer proto.ColStr + TopicForkDigestValue proto.ColStr + TopicName proto.ColStr + TopicEncoding proto.ColStr + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + rows int +} + +func newlibp2pGossipsubPayloadAttestationMessageBatch() *libp2pGossipsubPayloadAttestationMessageBatch { + return &libp2pGossipsubPayloadAttestationMessageBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + BeaconBlockRoot: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(66); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + } +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) Rows() int { + return b.rows +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "version", Data: &b.Version}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "wallclock_slot", Data: &b.WallclockSlot}, + {Name: "wallclock_slot_start_date_time", Data: &b.WallclockSlotStartDateTime}, + {Name: "wallclock_epoch", Data: &b.WallclockEpoch}, + {Name: "wallclock_epoch_start_date_time", Data: &b.WallclockEpochStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "validator_index", Data: &b.ValidatorIndex}, + {Name: "beacon_block_root", Data: &b.BeaconBlockRoot}, + {Name: "payload_present", Data: &b.PayloadPresent}, + {Name: "blob_data_available", Data: &b.BlobDataAvailable}, + {Name: "peer_id_unique_key", Data: &b.PeerIDUniqueKey}, + {Name: "message_id", Data: &b.MessageID}, + {Name: "message_size", Data: &b.MessageSize}, + {Name: "topic_layer", Data: &b.TopicLayer}, + {Name: "topic_fork_digest_value", Data: &b.TopicForkDigestValue}, + {Name: "topic_name", Data: &b.TopicName}, + {Name: "topic_encoding", Data: &b.TopicEncoding}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + } +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Version.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.WallclockSlot.Reset() + b.WallclockSlotStartDateTime.Reset() + b.WallclockEpoch.Reset() + b.WallclockEpochStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.ValidatorIndex.Reset() + b.BeaconBlockRoot.Reset() + b.PayloadPresent.Reset() + b.BlobDataAvailable.Reset() + b.PeerIDUniqueKey.Reset() + b.MessageID.Reset() + b.MessageSize.Reset() + b.TopicLayer.Reset() + b.TopicForkDigestValue.Reset() + b.TopicName.Reset() + b.TopicEncoding.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.rows = 0 +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 39) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["version"] = b.Version.Row(i) + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["wallclock_slot"] = b.WallclockSlot.Row(i) + row["wallclock_slot_start_date_time"] = b.WallclockSlotStartDateTime.Row(i).Unix() + row["wallclock_epoch"] = b.WallclockEpoch.Row(i) + row["wallclock_epoch_start_date_time"] = b.WallclockEpochStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["validator_index"] = b.ValidatorIndex.Row(i) + row["beacon_block_root"] = string(b.BeaconBlockRoot.Row(i)) + row["payload_present"] = b.PayloadPresent.Row(i) + row["blob_data_available"] = b.BlobDataAvailable.Row(i) + row["peer_id_unique_key"] = b.PeerIDUniqueKey.Row(i) + row["message_id"] = b.MessageID.Row(i) + row["message_size"] = b.MessageSize.Row(i) + row["topic_layer"] = b.TopicLayer.Row(i) + row["topic_fork_digest_value"] = b.TopicForkDigestValue.Row(i) + row["topic_name"] = b.TopicName.Row(i) + row["topic_encoding"] = b.TopicEncoding.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.go new file mode 100644 index 000000000..6a1a5df35 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message.go @@ -0,0 +1,192 @@ +package libp2p + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var libp2pGossipsubPayloadAttestationMessageEventNames = []xatu.Event_Name{ + xatu.Event_LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE, +} + +func init() { + r, err := route.NewStaticRoute( + libp2pGossipsubPayloadAttestationMessageTableName, + libp2pGossipsubPayloadAttestationMessageEventNames, + func() route.ColumnarBatch { return newlibp2pGossipsubPayloadAttestationMessageBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetLibp2PTraceGossipsubPayloadAttestationMessage() == nil { + return fmt.Errorf( + "nil libp2p_trace_gossipsub_payload_attestation_message payload: %w", + route.ErrInvalidEvent, + ) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendClientAdditionalData(event) + b.rows++ + + return nil +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) appendRuntime( + event *xatu.DecoratedEvent, +) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +//nolint:gosec // G115: proto uint64 values are bounded by ClickHouse column schema +func (b *libp2pGossipsubPayloadAttestationMessageBatch) appendPayload( + event *xatu.DecoratedEvent, +) { + payload := event.GetLibp2PTraceGossipsubPayloadAttestationMessage() + + if validatorIndex := payload.GetValidatorIndex(); validatorIndex != nil { + b.ValidatorIndex.Append(uint32(validatorIndex.GetValue())) + } else { + b.ValidatorIndex.Append(0) + } + + b.BeaconBlockRoot.Append([]byte(wrappedStringValue(payload.GetBeaconBlockRoot()))) + + if pp := payload.GetPayloadPresent(); pp != nil { + b.PayloadPresent.Append(pp.GetValue()) + } else { + b.PayloadPresent.Append(false) + } + + if bda := payload.GetBlobDataAvailable(); bda != nil { + b.BlobDataAvailable.Append(bda.GetValue()) + } else { + b.BlobDataAvailable.Append(false) + } +} + +func (b *libp2pGossipsubPayloadAttestationMessageBatch) appendClientAdditionalData( + event *xatu.DecoratedEvent, +) { + if event == nil || event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + additional := event.GetMeta().GetClient().GetLibp2PTraceGossipsubPayloadAttestationMessage() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + // Extract slot/epoch/wallclock/propagation fields. + var propagationSlotStartDiff uint32 + + setGossipsubSlotEpochFields(additional, func(f gossipsubSlotEpochResult) { + b.Slot.Append(f.Slot) + b.SlotStartDateTime.Append(time.Unix(f.SlotStartDateTime, 0)) + b.Epoch.Append(f.Epoch) + b.EpochStartDateTime.Append(time.Unix(f.EpochStartDateTime, 0)) + b.WallclockSlot.Append(f.WallclockSlot) + b.WallclockSlotStartDateTime.Append(time.Unix(f.WallclockSlotStartDateTime, 0)) + b.WallclockEpoch.Append(f.WallclockEpoch) + b.WallclockEpochStartDateTime.Append(time.Unix(f.WallclockEpochStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(f.PropagationSlotStartDiff) + propagationSlotStartDiff = f.PropagationSlotStartDiff + }) + + // Compute version for ReplacingMergeTree dedup. + b.Version.Append(4294967295 - propagationSlotStartDiff) + + // Extract message fields. + b.MessageID.Append(wrappedStringValue(additional.GetMessageId())) + + if msgSize := additional.GetMessageSize(); msgSize != nil { + b.MessageSize.Append(msgSize.GetValue()) + } else { + b.MessageSize.Append(0) + } + + // Parse topic fields. + if topic := wrappedStringValue(additional.GetTopic()); topic != "" { + parsed := parseTopicFields(topic) + b.TopicLayer.Append(parsed.Layer) + b.TopicForkDigestValue.Append(parsed.ForkDigestValue) + b.TopicName.Append(parsed.Name) + b.TopicEncoding.Append(parsed.Encoding) + } else { + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + } + + // Extract peer ID from metadata. + peerID := "" + if traceMeta := additional.GetMetadata(); traceMeta != nil && traceMeta.GetPeerId() != nil { + peerID = traceMeta.GetPeerId().GetValue() + } + + networkName := event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName() + b.PeerIDUniqueKey.Append(computePeerIDUniqueKey(peerID, networkName)) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message_test.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message_test.go new file mode 100644 index 000000000..e754ead14 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_payload_attestation_message_test.go @@ -0,0 +1,27 @@ +package libp2p + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_libp2p_gossipsub_payload_attestation_message(t *testing.T) { + if len(libp2pGossipsubPayloadAttestationMessageEventNames) == 0 { + t.Skip("no event names registered for libp2p_gossipsub_payload_attestation_message") + } + + testfixture.AssertSnapshot(t, newlibp2pGossipsubPayloadAttestationMessageBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: libp2pGossipsubPayloadAttestationMessageEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.gen.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.gen.go new file mode 100644 index 000000000..e519b9ff6 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.gen.go @@ -0,0 +1,265 @@ +// Code generated by chgo-rowgen; DO NOT EDIT. + +package libp2p + +import ( + "net" + + "github.com/ClickHouse/ch-go/proto" + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +const libp2pGossipsubProposerPreferencesTableName route.TableName = "libp2p_gossipsub_proposer_preferences" + +type libp2pGossipsubProposerPreferencesBatch struct { + UpdatedDateTime proto.ColDateTime + Version proto.ColUInt32 + EventDateTime proto.ColDateTime64 + Slot proto.ColUInt32 + SlotStartDateTime proto.ColDateTime + Epoch proto.ColUInt32 + EpochStartDateTime proto.ColDateTime + WallclockSlot proto.ColUInt32 + WallclockSlotStartDateTime proto.ColDateTime + WallclockEpoch proto.ColUInt32 + WallclockEpochStartDateTime proto.ColDateTime + PropagationSlotStartDiff proto.ColUInt32 + ValidatorIndex proto.ColUInt32 + FeeRecipient route.SafeColFixedStr + GasLimit proto.ColUInt64 + PeerIDUniqueKey proto.ColInt64 + MessageID proto.ColStr + MessageSize proto.ColUInt32 + TopicLayer proto.ColStr + TopicForkDigestValue proto.ColStr + TopicName proto.ColStr + TopicEncoding proto.ColStr + MetaClientName proto.ColStr + MetaClientID proto.ColStr + MetaClientVersion proto.ColStr + MetaClientImplementation proto.ColStr + MetaClientOS proto.ColStr + MetaClientIP *proto.ColNullable[proto.IPv6] + MetaClientGeoCity proto.ColStr + MetaClientGeoCountry proto.ColStr + MetaClientGeoCountryCode proto.ColStr + MetaClientGeoContinentCode proto.ColStr + MetaClientGeoLongitude *proto.ColNullable[float64] + MetaClientGeoLatitude *proto.ColNullable[float64] + MetaClientGeoAutonomousSystemNumber *proto.ColNullable[uint32] + MetaClientGeoAutonomousSystemOrganization *proto.ColNullable[string] + MetaNetworkID proto.ColInt32 + MetaNetworkName proto.ColStr + rows int +} + +func newlibp2pGossipsubProposerPreferencesBatch() *libp2pGossipsubProposerPreferencesBatch { + return &libp2pGossipsubProposerPreferencesBatch{ + EventDateTime: func() proto.ColDateTime64 { var c proto.ColDateTime64; c.WithPrecision(proto.Precision(3)); return c }(), + FeeRecipient: func() route.SafeColFixedStr { var c route.SafeColFixedStr; c.SetSize(42); return c }(), + MetaClientIP: new(proto.ColIPv6).Nullable(), + MetaClientGeoLongitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoLatitude: new(proto.ColFloat64).Nullable(), + MetaClientGeoAutonomousSystemNumber: new(proto.ColUInt32).Nullable(), + MetaClientGeoAutonomousSystemOrganization: new(proto.ColStr).Nullable(), + } +} + +func (b *libp2pGossipsubProposerPreferencesBatch) Rows() int { + return b.rows +} + +func (b *libp2pGossipsubProposerPreferencesBatch) appendMetadata(event *xatu.DecoratedEvent) { + if event == nil || event.GetMeta() == nil { + b.MetaClientName.Append("") + b.MetaClientID.Append("") + b.MetaClientVersion.Append("") + b.MetaClientImplementation.Append("") + b.MetaClientOS.Append("") + b.MetaClientIP.Append(proto.Nullable[proto.IPv6]{}) + b.MetaClientGeoCity.Append("") + b.MetaClientGeoCountry.Append("") + b.MetaClientGeoCountryCode.Append("") + b.MetaClientGeoContinentCode.Append("") + b.MetaClientGeoLongitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoLatitude.Append(proto.Nullable[float64]{}) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.Nullable[uint32]{}) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.Nullable[string]{}) + b.MetaNetworkID.Append(0) + b.MetaNetworkName.Append("") + return + } + + b.MetaClientName.Append(event.GetMeta().GetClient().GetName()) + b.MetaClientID.Append(event.GetMeta().GetClient().GetId()) + b.MetaClientVersion.Append(event.GetMeta().GetClient().GetVersion()) + b.MetaClientImplementation.Append(event.GetMeta().GetClient().GetImplementation()) + b.MetaClientOS.Append(event.GetMeta().GetClient().GetOs()) + b.MetaClientIP.Append(proto.NewNullable[proto.IPv6](route.NormalizeIPToIPv6(event.GetMeta().GetServer().GetClient().GetIP()))) + b.MetaClientGeoCity.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCity()) + b.MetaClientGeoCountry.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountry()) + b.MetaClientGeoCountryCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetCountryCode()) + b.MetaClientGeoContinentCode.Append(event.GetMeta().GetServer().GetClient().GetGeo().GetContinentCode()) + b.MetaClientGeoLongitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLongitude())) + b.MetaClientGeoLatitude.Append(proto.NewNullable[float64](event.GetMeta().GetServer().GetClient().GetGeo().GetLatitude())) + b.MetaClientGeoAutonomousSystemNumber.Append(proto.NewNullable[uint32](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemNumber())) + b.MetaClientGeoAutonomousSystemOrganization.Append(proto.NewNullable[string](event.GetMeta().GetServer().GetClient().GetGeo().GetAutonomousSystemOrganization())) + b.MetaNetworkID.Append(int32(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetId())) + b.MetaNetworkName.Append(event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName()) +} + +func (b *libp2pGossipsubProposerPreferencesBatch) Input() proto.Input { + return proto.Input{ + {Name: "updated_date_time", Data: &b.UpdatedDateTime}, + {Name: "version", Data: &b.Version}, + {Name: "event_date_time", Data: &b.EventDateTime}, + {Name: "slot", Data: &b.Slot}, + {Name: "slot_start_date_time", Data: &b.SlotStartDateTime}, + {Name: "epoch", Data: &b.Epoch}, + {Name: "epoch_start_date_time", Data: &b.EpochStartDateTime}, + {Name: "wallclock_slot", Data: &b.WallclockSlot}, + {Name: "wallclock_slot_start_date_time", Data: &b.WallclockSlotStartDateTime}, + {Name: "wallclock_epoch", Data: &b.WallclockEpoch}, + {Name: "wallclock_epoch_start_date_time", Data: &b.WallclockEpochStartDateTime}, + {Name: "propagation_slot_start_diff", Data: &b.PropagationSlotStartDiff}, + {Name: "validator_index", Data: &b.ValidatorIndex}, + {Name: "fee_recipient", Data: &b.FeeRecipient}, + {Name: "gas_limit", Data: &b.GasLimit}, + {Name: "peer_id_unique_key", Data: &b.PeerIDUniqueKey}, + {Name: "message_id", Data: &b.MessageID}, + {Name: "message_size", Data: &b.MessageSize}, + {Name: "topic_layer", Data: &b.TopicLayer}, + {Name: "topic_fork_digest_value", Data: &b.TopicForkDigestValue}, + {Name: "topic_name", Data: &b.TopicName}, + {Name: "topic_encoding", Data: &b.TopicEncoding}, + {Name: "meta_client_name", Data: &b.MetaClientName}, + {Name: "meta_client_id", Data: &b.MetaClientID}, + {Name: "meta_client_version", Data: &b.MetaClientVersion}, + {Name: "meta_client_implementation", Data: &b.MetaClientImplementation}, + {Name: "meta_client_os", Data: &b.MetaClientOS}, + {Name: "meta_client_ip", Data: b.MetaClientIP}, + {Name: "meta_client_geo_city", Data: &b.MetaClientGeoCity}, + {Name: "meta_client_geo_country", Data: &b.MetaClientGeoCountry}, + {Name: "meta_client_geo_country_code", Data: &b.MetaClientGeoCountryCode}, + {Name: "meta_client_geo_continent_code", Data: &b.MetaClientGeoContinentCode}, + {Name: "meta_client_geo_longitude", Data: b.MetaClientGeoLongitude}, + {Name: "meta_client_geo_latitude", Data: b.MetaClientGeoLatitude}, + {Name: "meta_client_geo_autonomous_system_number", Data: b.MetaClientGeoAutonomousSystemNumber}, + {Name: "meta_client_geo_autonomous_system_organization", Data: b.MetaClientGeoAutonomousSystemOrganization}, + {Name: "meta_network_id", Data: &b.MetaNetworkID}, + {Name: "meta_network_name", Data: &b.MetaNetworkName}, + } +} + +func (b *libp2pGossipsubProposerPreferencesBatch) Reset() { + b.UpdatedDateTime.Reset() + b.Version.Reset() + b.EventDateTime.Reset() + b.Slot.Reset() + b.SlotStartDateTime.Reset() + b.Epoch.Reset() + b.EpochStartDateTime.Reset() + b.WallclockSlot.Reset() + b.WallclockSlotStartDateTime.Reset() + b.WallclockEpoch.Reset() + b.WallclockEpochStartDateTime.Reset() + b.PropagationSlotStartDiff.Reset() + b.ValidatorIndex.Reset() + b.FeeRecipient.Reset() + b.GasLimit.Reset() + b.PeerIDUniqueKey.Reset() + b.MessageID.Reset() + b.MessageSize.Reset() + b.TopicLayer.Reset() + b.TopicForkDigestValue.Reset() + b.TopicName.Reset() + b.TopicEncoding.Reset() + b.MetaClientName.Reset() + b.MetaClientID.Reset() + b.MetaClientVersion.Reset() + b.MetaClientImplementation.Reset() + b.MetaClientOS.Reset() + b.MetaClientIP.Reset() + b.MetaClientGeoCity.Reset() + b.MetaClientGeoCountry.Reset() + b.MetaClientGeoCountryCode.Reset() + b.MetaClientGeoContinentCode.Reset() + b.MetaClientGeoLongitude.Reset() + b.MetaClientGeoLatitude.Reset() + b.MetaClientGeoAutonomousSystemNumber.Reset() + b.MetaClientGeoAutonomousSystemOrganization.Reset() + b.MetaNetworkID.Reset() + b.MetaNetworkName.Reset() + b.rows = 0 +} + +func (b *libp2pGossipsubProposerPreferencesBatch) Snapshot() []map[string]any { + n := b.rows + out := make([]map[string]any, n) + + for i := 0; i < n; i++ { + row := make(map[string]any, 38) + row["updated_date_time"] = b.UpdatedDateTime.Row(i).Unix() + row["version"] = b.Version.Row(i) + row["event_date_time"] = b.EventDateTime.Row(i).UnixMilli() + row["slot"] = b.Slot.Row(i) + row["slot_start_date_time"] = b.SlotStartDateTime.Row(i).Unix() + row["epoch"] = b.Epoch.Row(i) + row["epoch_start_date_time"] = b.EpochStartDateTime.Row(i).Unix() + row["wallclock_slot"] = b.WallclockSlot.Row(i) + row["wallclock_slot_start_date_time"] = b.WallclockSlotStartDateTime.Row(i).Unix() + row["wallclock_epoch"] = b.WallclockEpoch.Row(i) + row["wallclock_epoch_start_date_time"] = b.WallclockEpochStartDateTime.Row(i).Unix() + row["propagation_slot_start_diff"] = b.PropagationSlotStartDiff.Row(i) + row["validator_index"] = b.ValidatorIndex.Row(i) + row["fee_recipient"] = string(b.FeeRecipient.Row(i)) + row["gas_limit"] = b.GasLimit.Row(i) + row["peer_id_unique_key"] = b.PeerIDUniqueKey.Row(i) + row["message_id"] = b.MessageID.Row(i) + row["message_size"] = b.MessageSize.Row(i) + row["topic_layer"] = b.TopicLayer.Row(i) + row["topic_fork_digest_value"] = b.TopicForkDigestValue.Row(i) + row["topic_name"] = b.TopicName.Row(i) + row["topic_encoding"] = b.TopicEncoding.Row(i) + row["meta_client_name"] = b.MetaClientName.Row(i) + row["meta_client_id"] = b.MetaClientID.Row(i) + row["meta_client_version"] = b.MetaClientVersion.Row(i) + row["meta_client_implementation"] = b.MetaClientImplementation.Row(i) + row["meta_client_os"] = b.MetaClientOS.Row(i) + if v := b.MetaClientIP.Row(i); v.Set { + row["meta_client_ip"] = net.IP(v.Value[:]).String() + } else { + row["meta_client_ip"] = nil + } + row["meta_client_geo_city"] = b.MetaClientGeoCity.Row(i) + row["meta_client_geo_country"] = b.MetaClientGeoCountry.Row(i) + row["meta_client_geo_country_code"] = b.MetaClientGeoCountryCode.Row(i) + row["meta_client_geo_continent_code"] = b.MetaClientGeoContinentCode.Row(i) + if v := b.MetaClientGeoLongitude.Row(i); v.Set { + row["meta_client_geo_longitude"] = v.Value + } else { + row["meta_client_geo_longitude"] = nil + } + if v := b.MetaClientGeoLatitude.Row(i); v.Set { + row["meta_client_geo_latitude"] = v.Value + } else { + row["meta_client_geo_latitude"] = nil + } + if v := b.MetaClientGeoAutonomousSystemNumber.Row(i); v.Set { + row["meta_client_geo_autonomous_system_number"] = v.Value + } else { + row["meta_client_geo_autonomous_system_number"] = nil + } + if v := b.MetaClientGeoAutonomousSystemOrganization.Row(i); v.Set { + row["meta_client_geo_autonomous_system_organization"] = v.Value + } else { + row["meta_client_geo_autonomous_system_organization"] = nil + } + row["meta_network_id"] = b.MetaNetworkID.Row(i) + row["meta_network_name"] = b.MetaNetworkName.Row(i) + out[i] = row + } + + return out +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.go new file mode 100644 index 000000000..7ac0ef771 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences.go @@ -0,0 +1,182 @@ +package libp2p + +import ( + "fmt" + "time" + + "github.com/ethpandaops/xatu/pkg/consumoor/route" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +var libp2pGossipsubProposerPreferencesEventNames = []xatu.Event_Name{ + xatu.Event_LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES, +} + +func init() { + r, err := route.NewStaticRoute( + libp2pGossipsubProposerPreferencesTableName, + libp2pGossipsubProposerPreferencesEventNames, + func() route.ColumnarBatch { return newlibp2pGossipsubProposerPreferencesBatch() }, + ) + if err != nil { + route.RecordError(err) + + return + } + + if err := route.Register(r); err != nil { + route.RecordError(err) + } +} + +func (b *libp2pGossipsubProposerPreferencesBatch) FlattenTo( + event *xatu.DecoratedEvent, +) error { + if event == nil || event.GetEvent() == nil { + return nil + } + + if event.GetLibp2PTraceGossipsubProposerPreferences() == nil { + return fmt.Errorf( + "nil libp2p_trace_gossipsub_proposer_preferences payload: %w", + route.ErrInvalidEvent, + ) + } + + b.appendRuntime(event) + b.appendMetadata(event) + b.appendPayload(event) + b.appendClientAdditionalData(event) + b.rows++ + + return nil +} + +func (b *libp2pGossipsubProposerPreferencesBatch) appendRuntime(event *xatu.DecoratedEvent) { + b.UpdatedDateTime.Append(time.Now()) + + if ts := event.GetEvent().GetDateTime(); ts != nil { + b.EventDateTime.Append(ts.AsTime()) + } else { + b.EventDateTime.Append(time.Time{}) + } +} + +//nolint:gosec // G115: proto uint64 values are bounded by ClickHouse column schema +func (b *libp2pGossipsubProposerPreferencesBatch) appendPayload(event *xatu.DecoratedEvent) { + payload := event.GetLibp2PTraceGossipsubProposerPreferences() + + if validatorIndex := payload.GetValidatorIndex(); validatorIndex != nil { + b.ValidatorIndex.Append(uint32(validatorIndex.GetValue())) + } else { + b.ValidatorIndex.Append(0) + } + + b.FeeRecipient.Append([]byte(wrappedStringValue(payload.GetFeeRecipient()))) + + if gasLimit := payload.GetGasLimit(); gasLimit != nil { + b.GasLimit.Append(gasLimit.GetValue()) + } else { + b.GasLimit.Append(0) + } +} + +func (b *libp2pGossipsubProposerPreferencesBatch) appendClientAdditionalData( + event *xatu.DecoratedEvent, +) { + if event == nil || event.GetMeta() == nil || event.GetMeta().GetClient() == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + additional := event.GetMeta().GetClient().GetLibp2PTraceGossipsubProposerPreferences() + if additional == nil { + b.Slot.Append(0) + b.SlotStartDateTime.Append(time.Time{}) + b.Epoch.Append(0) + b.EpochStartDateTime.Append(time.Time{}) + b.WallclockSlot.Append(0) + b.WallclockSlotStartDateTime.Append(time.Time{}) + b.WallclockEpoch.Append(0) + b.WallclockEpochStartDateTime.Append(time.Time{}) + b.PropagationSlotStartDiff.Append(0) + b.Version.Append(4294967295) + b.MessageID.Append("") + b.MessageSize.Append(0) + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + b.PeerIDUniqueKey.Append(0) + + return + } + + // Extract slot/epoch/wallclock/propagation fields. + var propagationSlotStartDiff uint32 + + setGossipsubSlotEpochFields(additional, func(f gossipsubSlotEpochResult) { + b.Slot.Append(f.Slot) + b.SlotStartDateTime.Append(time.Unix(f.SlotStartDateTime, 0)) + b.Epoch.Append(f.Epoch) + b.EpochStartDateTime.Append(time.Unix(f.EpochStartDateTime, 0)) + b.WallclockSlot.Append(f.WallclockSlot) + b.WallclockSlotStartDateTime.Append(time.Unix(f.WallclockSlotStartDateTime, 0)) + b.WallclockEpoch.Append(f.WallclockEpoch) + b.WallclockEpochStartDateTime.Append(time.Unix(f.WallclockEpochStartDateTime, 0)) + b.PropagationSlotStartDiff.Append(f.PropagationSlotStartDiff) + propagationSlotStartDiff = f.PropagationSlotStartDiff + }) + + // Compute version for ReplacingMergeTree dedup. + b.Version.Append(4294967295 - propagationSlotStartDiff) + + // Extract message fields. + b.MessageID.Append(wrappedStringValue(additional.GetMessageId())) + + if msgSize := additional.GetMessageSize(); msgSize != nil { + b.MessageSize.Append(msgSize.GetValue()) + } else { + b.MessageSize.Append(0) + } + + // Parse topic fields. + if topic := wrappedStringValue(additional.GetTopic()); topic != "" { + parsed := parseTopicFields(topic) + b.TopicLayer.Append(parsed.Layer) + b.TopicForkDigestValue.Append(parsed.ForkDigestValue) + b.TopicName.Append(parsed.Name) + b.TopicEncoding.Append(parsed.Encoding) + } else { + b.TopicLayer.Append("") + b.TopicForkDigestValue.Append("") + b.TopicName.Append("") + b.TopicEncoding.Append("") + } + + // Extract peer ID from metadata. + peerID := "" + if traceMeta := additional.GetMetadata(); traceMeta != nil && traceMeta.GetPeerId() != nil { + peerID = traceMeta.GetPeerId().GetValue() + } + + networkName := event.GetMeta().GetClient().GetEthereum().GetNetwork().GetName() + b.PeerIDUniqueKey.Append(computePeerIDUniqueKey(peerID, networkName)) +} diff --git a/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences_test.go b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences_test.go new file mode 100644 index 000000000..fd7805792 --- /dev/null +++ b/pkg/consumoor/route/libp2p/libp2p_gossipsub_proposer_preferences_test.go @@ -0,0 +1,27 @@ +package libp2p + +import ( + "testing" + + "github.com/ethpandaops/xatu/pkg/consumoor/route/testfixture" + "github.com/ethpandaops/xatu/pkg/proto/xatu" +) + +func TestSnapshot_libp2p_gossipsub_proposer_preferences(t *testing.T) { + if len(libp2pGossipsubProposerPreferencesEventNames) == 0 { + t.Skip("no event names registered for libp2p_gossipsub_proposer_preferences") + } + + testfixture.AssertSnapshot(t, newlibp2pGossipsubProposerPreferencesBatch(), &xatu.DecoratedEvent{ + Event: &xatu.Event{ + Name: libp2pGossipsubProposerPreferencesEventNames[0], + DateTime: testfixture.TS(), + Id: "snapshot-1", + }, + Meta: testfixture.BaseMeta(), + // TODO(epbs): Add event-specific Data field and MetaWithAdditional for richer assertions. + }, 1, map[string]any{ + "meta_client_name": "test-client", + // TODO(epbs): Add payload-specific column assertions. + }) +} diff --git a/pkg/proto/eth/block.go b/pkg/proto/eth/block.go index 8610ee9c0..420369abb 100644 --- a/pkg/proto/eth/block.go +++ b/pkg/proto/eth/block.go @@ -11,6 +11,7 @@ import ( "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" "github.com/attestantio/go-eth2-client/spec/electra" + "github.com/attestantio/go-eth2-client/spec/gloas" "github.com/attestantio/go-eth2-client/spec/phase0" v1 "github.com/ethpandaops/xatu/pkg/proto/eth/v1" v2 "github.com/ethpandaops/xatu/pkg/proto/eth/v2" @@ -35,6 +36,8 @@ func NewEventBlockV2FromVersionedProposal(proposal *api.VersionedProposal) (*v2. data = NewEventBlockFromElectra(proposal.Electra.Block, nil) case spec.DataVersionFulu: data = NewEventBlockFromFulu(proposal.Fulu.Block, nil) + case spec.DataVersionGloas: + data = NewEventBlockFromGloas(proposal.Gloas, nil) default: return nil, fmt.Errorf("unsupported block version: %v", proposal.Version) } @@ -60,6 +63,8 @@ func NewEventBlockV2FromVersionSignedBeaconBlock(block *spec.VersionedSignedBeac data = NewEventBlockFromElectra(block.Electra.Message, &block.Electra.Signature) case spec.DataVersionFulu: data = NewEventBlockFromFulu(block.Fulu.Message, &block.Fulu.Signature) + case spec.DataVersionGloas: + data = NewEventBlockFromGloas(block.Gloas.Message, &block.Gloas.Signature) default: return nil, fmt.Errorf("unsupported block version: %v", block.Version) } @@ -456,3 +461,76 @@ func NewEventBlockFromFulu(block *electra.BeaconBlock, signature *phase0.BLSSign return event } + +// NewEventBlockFromGloas creates an EventBlockV2 from a Gloas (EIP-7928) beacon block. +// TODO(epbs): Under EIP-7732, the block body has a SignedExecutionPayloadBid instead of an +// inline ExecutionPayload. The bid fields (builder_index, value, execution_payment) and +// payload_attestations need to be populated here once go-eth2-client adds ePBS support. +// The execution payload itself arrives via a separate ExecutionPayloadEnvelope event. +func NewEventBlockFromGloas(block *gloas.BeaconBlock, signature *phase0.BLSSignature) *v2.EventBlockV2 { + kzgCommitments := make([]string, 0, len(block.Body.BlobKZGCommitments)) + + for _, commitment := range block.Body.BlobKZGCommitments { + kzgCommitments = append(kzgCommitments, commitment.String()) + } + + event := &v2.EventBlockV2{ + Version: v2.BlockVersion_GLOAS, + Message: &v2.EventBlockV2_GloasBlock{ + GloasBlock: &v2.BeaconBlockGloas{ + Slot: &wrapperspb.UInt64Value{Value: uint64(block.Slot)}, + ProposerIndex: &wrapperspb.UInt64Value{Value: uint64(block.ProposerIndex)}, + ParentRoot: block.ParentRoot.String(), + StateRoot: block.StateRoot.String(), + Body: &v2.BeaconBlockBodyGloas{ + RandaoReveal: block.Body.RANDAOReveal.String(), + Eth1Data: &v1.Eth1Data{ + DepositRoot: block.Body.ETH1Data.DepositRoot.String(), + DepositCount: block.Body.ETH1Data.DepositCount, + BlockHash: fmt.Sprintf("0x%x", block.Body.ETH1Data.BlockHash), + }, + Graffiti: fmt.Sprintf("0x%x", block.Body.Graffiti[:]), + ProposerSlashings: v1.NewProposerSlashingsFromPhase0(block.Body.ProposerSlashings), + AttesterSlashings: v1.NewAttesterSlashingsFromElectra(block.Body.AttesterSlashings), + Attestations: v1.NewAttestationsFromElectra(block.Body.Attestations), + Deposits: v1.NewDepositsFromPhase0(block.Body.Deposits), + VoluntaryExits: v1.NewSignedVoluntaryExitsFromPhase0(block.Body.VoluntaryExits), + SyncAggregate: &v1.SyncAggregate{ + SyncCommitteeBits: fmt.Sprintf("0x%x", block.Body.SyncAggregate.SyncCommitteeBits), + SyncCommitteeSignature: block.Body.SyncAggregate.SyncCommitteeSignature.String(), + }, + ExecutionPayload: &v1.ExecutionPayloadGloas{ + ParentHash: block.Body.ExecutionPayload.ParentHash.String(), + FeeRecipient: block.Body.ExecutionPayload.FeeRecipient.String(), + StateRoot: fmt.Sprintf("0x%x", block.Body.ExecutionPayload.StateRoot[:]), + ReceiptsRoot: fmt.Sprintf("0x%x", block.Body.ExecutionPayload.ReceiptsRoot[:]), + LogsBloom: fmt.Sprintf("0x%x", block.Body.ExecutionPayload.LogsBloom[:]), + PrevRandao: fmt.Sprintf("0x%x", block.Body.ExecutionPayload.PrevRandao[:]), + BlockNumber: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.BlockNumber}, + GasLimit: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.GasLimit}, + GasUsed: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.GasUsed}, + Timestamp: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.Timestamp}, + ExtraData: fmt.Sprintf("0x%x", block.Body.ExecutionPayload.ExtraData), + BaseFeePerGas: block.Body.ExecutionPayload.BaseFeePerGas.String(), + BlockHash: block.Body.ExecutionPayload.BlockHash.String(), + Transactions: getTransactions(block.Body.ExecutionPayload.Transactions), + Withdrawals: v1.NewWithdrawalsFromCapella(block.Body.ExecutionPayload.Withdrawals), + BlobGasUsed: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.BlobGasUsed}, + ExcessBlobGas: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.ExcessBlobGas}, + BlockAccessList: v1.NewBlockAccessListFromGloas(block.Body.ExecutionPayload.BlockAccessList), + SlotNumber: &wrapperspb.UInt64Value{Value: block.Body.ExecutionPayload.SlotNumber}, + }, + BlsToExecutionChanges: v2.NewBLSToExecutionChangesFromCapella(block.Body.BLSToExecutionChanges), + BlobKzgCommitments: kzgCommitments, + ExecutionRequests: v1.NewElectraExecutionRequestsFromElectra(block.Body.ExecutionRequests), + }, + }, + }, + } + + if signature != nil && !signature.IsZero() { + event.Signature = signature.String() + } + + return event +} diff --git a/pkg/proto/eth/v1/block_access_list.pb.go b/pkg/proto/eth/v1/block_access_list.pb.go new file mode 100644 index 000000000..02c9e685a --- /dev/null +++ b/pkg/proto/eth/v1/block_access_list.pb.go @@ -0,0 +1,817 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/block_access_list.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type BlockAccessListStorageChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockAccessIndex *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=block_access_index,proto3" json:"block_access_index,omitempty"` + Key *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + NewValue *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=new_value,proto3" json:"new_value,omitempty"` +} + +func (x *BlockAccessListStorageChange) Reset() { + *x = BlockAccessListStorageChange{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListStorageChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListStorageChange) ProtoMessage() {} + +func (x *BlockAccessListStorageChange) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListStorageChange.ProtoReflect.Descriptor instead. +func (*BlockAccessListStorageChange) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{0} +} + +func (x *BlockAccessListStorageChange) GetBlockAccessIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.BlockAccessIndex + } + return nil +} + +func (x *BlockAccessListStorageChange) GetKey() *wrapperspb.StringValue { + if x != nil { + return x.Key + } + return nil +} + +func (x *BlockAccessListStorageChange) GetNewValue() *wrapperspb.StringValue { + if x != nil { + return x.NewValue + } + return nil +} + +type BlockAccessListBalanceChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockAccessIndex *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=block_access_index,proto3" json:"block_access_index,omitempty"` + PostBalance *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=post_balance,proto3" json:"post_balance,omitempty"` +} + +func (x *BlockAccessListBalanceChange) Reset() { + *x = BlockAccessListBalanceChange{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListBalanceChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListBalanceChange) ProtoMessage() {} + +func (x *BlockAccessListBalanceChange) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListBalanceChange.ProtoReflect.Descriptor instead. +func (*BlockAccessListBalanceChange) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{1} +} + +func (x *BlockAccessListBalanceChange) GetBlockAccessIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.BlockAccessIndex + } + return nil +} + +func (x *BlockAccessListBalanceChange) GetPostBalance() *wrapperspb.StringValue { + if x != nil { + return x.PostBalance + } + return nil +} + +type BlockAccessListNonceChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockAccessIndex *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=block_access_index,proto3" json:"block_access_index,omitempty"` + NewNonce *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=new_nonce,proto3" json:"new_nonce,omitempty"` +} + +func (x *BlockAccessListNonceChange) Reset() { + *x = BlockAccessListNonceChange{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListNonceChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListNonceChange) ProtoMessage() {} + +func (x *BlockAccessListNonceChange) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListNonceChange.ProtoReflect.Descriptor instead. +func (*BlockAccessListNonceChange) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{2} +} + +func (x *BlockAccessListNonceChange) GetBlockAccessIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.BlockAccessIndex + } + return nil +} + +func (x *BlockAccessListNonceChange) GetNewNonce() *wrapperspb.UInt64Value { + if x != nil { + return x.NewNonce + } + return nil +} + +type BlockAccessListCodeChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockAccessIndex *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=block_access_index,proto3" json:"block_access_index,omitempty"` + NewCode *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=new_code,proto3" json:"new_code,omitempty"` +} + +func (x *BlockAccessListCodeChange) Reset() { + *x = BlockAccessListCodeChange{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListCodeChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListCodeChange) ProtoMessage() {} + +func (x *BlockAccessListCodeChange) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListCodeChange.ProtoReflect.Descriptor instead. +func (*BlockAccessListCodeChange) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{3} +} + +func (x *BlockAccessListCodeChange) GetBlockAccessIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.BlockAccessIndex + } + return nil +} + +func (x *BlockAccessListCodeChange) GetNewCode() *wrapperspb.StringValue { + if x != nil { + return x.NewCode + } + return nil +} + +type BlockAccessListStorageRead struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *BlockAccessListStorageRead) Reset() { + *x = BlockAccessListStorageRead{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListStorageRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListStorageRead) ProtoMessage() {} + +func (x *BlockAccessListStorageRead) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListStorageRead.ProtoReflect.Descriptor instead. +func (*BlockAccessListStorageRead) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{4} +} + +func (x *BlockAccessListStorageRead) GetKey() *wrapperspb.StringValue { + if x != nil { + return x.Key + } + return nil +} + +type BlockAccessListEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + StorageChanges []*BlockAccessListStorageChange `protobuf:"bytes,2,rep,name=storage_changes,proto3" json:"storage_changes,omitempty"` + BalanceChanges []*BlockAccessListBalanceChange `protobuf:"bytes,3,rep,name=balance_changes,proto3" json:"balance_changes,omitempty"` + NonceChanges []*BlockAccessListNonceChange `protobuf:"bytes,4,rep,name=nonce_changes,proto3" json:"nonce_changes,omitempty"` + CodeChanges []*BlockAccessListCodeChange `protobuf:"bytes,5,rep,name=code_changes,proto3" json:"code_changes,omitempty"` + StorageReads []*BlockAccessListStorageRead `protobuf:"bytes,6,rep,name=storage_reads,proto3" json:"storage_reads,omitempty"` +} + +func (x *BlockAccessListEntry) Reset() { + *x = BlockAccessListEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListEntry) ProtoMessage() {} + +func (x *BlockAccessListEntry) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListEntry.ProtoReflect.Descriptor instead. +func (*BlockAccessListEntry) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{5} +} + +func (x *BlockAccessListEntry) GetAddress() *wrapperspb.StringValue { + if x != nil { + return x.Address + } + return nil +} + +func (x *BlockAccessListEntry) GetStorageChanges() []*BlockAccessListStorageChange { + if x != nil { + return x.StorageChanges + } + return nil +} + +func (x *BlockAccessListEntry) GetBalanceChanges() []*BlockAccessListBalanceChange { + if x != nil { + return x.BalanceChanges + } + return nil +} + +func (x *BlockAccessListEntry) GetNonceChanges() []*BlockAccessListNonceChange { + if x != nil { + return x.NonceChanges + } + return nil +} + +func (x *BlockAccessListEntry) GetCodeChanges() []*BlockAccessListCodeChange { + if x != nil { + return x.CodeChanges + } + return nil +} + +func (x *BlockAccessListEntry) GetStorageReads() []*BlockAccessListStorageRead { + if x != nil { + return x.StorageReads + } + return nil +} + +type BlockAccessList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entries []*BlockAccessListEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` +} + +func (x *BlockAccessList) Reset() { + *x = BlockAccessList{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessList) ProtoMessage() {} + +func (x *BlockAccessList) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessList.ProtoReflect.Descriptor instead. +func (*BlockAccessList) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{6} +} + +func (x *BlockAccessList) GetEntries() []*BlockAccessListEntry { + if x != nil { + return x.Entries + } + return nil +} + +// BlockAccessListChange is a denormalized representation of a single change +// within a block access list. Used for ClickHouse storage where each change +// becomes one row. +type BlockAccessListChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // change_type is one of: "storage", "balance", "nonce", "code", "storage_read", "touched" + ChangeType string `protobuf:"bytes,2,opt,name=change_type,proto3" json:"change_type,omitempty"` + BlockAccessIndex *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=block_access_index,proto3" json:"block_access_index,omitempty"` + // storage_key is set only for storage changes + StorageKey *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=storage_key,proto3" json:"storage_key,omitempty"` + // new_value contains the new value for any change type + NewValue *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=new_value,proto3" json:"new_value,omitempty"` +} + +func (x *BlockAccessListChange) Reset() { + *x = BlockAccessListChange{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockAccessListChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockAccessListChange) ProtoMessage() {} + +func (x *BlockAccessListChange) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockAccessListChange.ProtoReflect.Descriptor instead. +func (*BlockAccessListChange) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP(), []int{7} +} + +func (x *BlockAccessListChange) GetAddress() *wrapperspb.StringValue { + if x != nil { + return x.Address + } + return nil +} + +func (x *BlockAccessListChange) GetChangeType() string { + if x != nil { + return x.ChangeType + } + return "" +} + +func (x *BlockAccessListChange) GetBlockAccessIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.BlockAccessIndex + } + return nil +} + +func (x *BlockAccessListChange) GetStorageKey() *wrapperspb.StringValue { + if x != nil { + return x.StorageKey + } + return nil +} + +func (x *BlockAccessListChange) GetNewValue() *wrapperspb.StringValue { + if x != nil { + return x.NewValue + } + return nil +} + +var File_pkg_proto_eth_v1_block_access_list_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_block_access_list_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8, 0x01, 0x0a, 0x1c, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x12, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x1c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0xa3, + 0x01, 0x0a, 0x19, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x12, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x38, 0x0a, 0x08, 0x6e, 0x65, + 0x77, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x22, 0x4c, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x22, 0xe2, 0x03, 0x0a, 0x14, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x4d, 0x0a, + 0x0d, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0x4e, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x15, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x12, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x65, 0x77, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, + 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, + 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pkg_proto_eth_v1_block_access_list_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_block_access_list_proto_rawDescData = file_pkg_proto_eth_v1_block_access_list_proto_rawDesc +) + +func file_pkg_proto_eth_v1_block_access_list_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_block_access_list_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_block_access_list_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_block_access_list_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_block_access_list_proto_rawDescData +} + +var file_pkg_proto_eth_v1_block_access_list_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_pkg_proto_eth_v1_block_access_list_proto_goTypes = []any{ + (*BlockAccessListStorageChange)(nil), // 0: xatu.eth.v1.BlockAccessListStorageChange + (*BlockAccessListBalanceChange)(nil), // 1: xatu.eth.v1.BlockAccessListBalanceChange + (*BlockAccessListNonceChange)(nil), // 2: xatu.eth.v1.BlockAccessListNonceChange + (*BlockAccessListCodeChange)(nil), // 3: xatu.eth.v1.BlockAccessListCodeChange + (*BlockAccessListStorageRead)(nil), // 4: xatu.eth.v1.BlockAccessListStorageRead + (*BlockAccessListEntry)(nil), // 5: xatu.eth.v1.BlockAccessListEntry + (*BlockAccessList)(nil), // 6: xatu.eth.v1.BlockAccessList + (*BlockAccessListChange)(nil), // 7: xatu.eth.v1.BlockAccessListChange + (*wrapperspb.UInt32Value)(nil), // 8: google.protobuf.UInt32Value + (*wrapperspb.StringValue)(nil), // 9: google.protobuf.StringValue + (*wrapperspb.UInt64Value)(nil), // 10: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_block_access_list_proto_depIdxs = []int32{ + 8, // 0: xatu.eth.v1.BlockAccessListStorageChange.block_access_index:type_name -> google.protobuf.UInt32Value + 9, // 1: xatu.eth.v1.BlockAccessListStorageChange.key:type_name -> google.protobuf.StringValue + 9, // 2: xatu.eth.v1.BlockAccessListStorageChange.new_value:type_name -> google.protobuf.StringValue + 8, // 3: xatu.eth.v1.BlockAccessListBalanceChange.block_access_index:type_name -> google.protobuf.UInt32Value + 9, // 4: xatu.eth.v1.BlockAccessListBalanceChange.post_balance:type_name -> google.protobuf.StringValue + 8, // 5: xatu.eth.v1.BlockAccessListNonceChange.block_access_index:type_name -> google.protobuf.UInt32Value + 10, // 6: xatu.eth.v1.BlockAccessListNonceChange.new_nonce:type_name -> google.protobuf.UInt64Value + 8, // 7: xatu.eth.v1.BlockAccessListCodeChange.block_access_index:type_name -> google.protobuf.UInt32Value + 9, // 8: xatu.eth.v1.BlockAccessListCodeChange.new_code:type_name -> google.protobuf.StringValue + 9, // 9: xatu.eth.v1.BlockAccessListStorageRead.key:type_name -> google.protobuf.StringValue + 9, // 10: xatu.eth.v1.BlockAccessListEntry.address:type_name -> google.protobuf.StringValue + 0, // 11: xatu.eth.v1.BlockAccessListEntry.storage_changes:type_name -> xatu.eth.v1.BlockAccessListStorageChange + 1, // 12: xatu.eth.v1.BlockAccessListEntry.balance_changes:type_name -> xatu.eth.v1.BlockAccessListBalanceChange + 2, // 13: xatu.eth.v1.BlockAccessListEntry.nonce_changes:type_name -> xatu.eth.v1.BlockAccessListNonceChange + 3, // 14: xatu.eth.v1.BlockAccessListEntry.code_changes:type_name -> xatu.eth.v1.BlockAccessListCodeChange + 4, // 15: xatu.eth.v1.BlockAccessListEntry.storage_reads:type_name -> xatu.eth.v1.BlockAccessListStorageRead + 5, // 16: xatu.eth.v1.BlockAccessList.entries:type_name -> xatu.eth.v1.BlockAccessListEntry + 9, // 17: xatu.eth.v1.BlockAccessListChange.address:type_name -> google.protobuf.StringValue + 8, // 18: xatu.eth.v1.BlockAccessListChange.block_access_index:type_name -> google.protobuf.UInt32Value + 9, // 19: xatu.eth.v1.BlockAccessListChange.storage_key:type_name -> google.protobuf.StringValue + 9, // 20: xatu.eth.v1.BlockAccessListChange.new_value:type_name -> google.protobuf.StringValue + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_block_access_list_proto_init() } +func file_pkg_proto_eth_v1_block_access_list_proto_init() { + if File_pkg_proto_eth_v1_block_access_list_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListStorageChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListBalanceChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListNonceChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListCodeChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListStorageRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_block_access_list_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*BlockAccessListChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_block_access_list_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_block_access_list_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_block_access_list_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_block_access_list_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_block_access_list_proto = out.File + file_pkg_proto_eth_v1_block_access_list_proto_rawDesc = nil + file_pkg_proto_eth_v1_block_access_list_proto_goTypes = nil + file_pkg_proto_eth_v1_block_access_list_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/block_access_list.proto b/pkg/proto/eth/v1/block_access_list.proto new file mode 100644 index 000000000..82b782fd5 --- /dev/null +++ b/pkg/proto/eth/v1/block_access_list.proto @@ -0,0 +1,71 @@ +syntax = "proto3"; + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; + +message BlockAccessListStorageChange { + google.protobuf.UInt32Value block_access_index = 1 + [ json_name = "block_access_index" ]; + google.protobuf.StringValue key = 2; + google.protobuf.StringValue new_value = 3 [ json_name = "new_value" ]; +} + +message BlockAccessListBalanceChange { + google.protobuf.UInt32Value block_access_index = 1 + [ json_name = "block_access_index" ]; + google.protobuf.StringValue post_balance = 2 + [ json_name = "post_balance" ]; +} + +message BlockAccessListNonceChange { + google.protobuf.UInt32Value block_access_index = 1 + [ json_name = "block_access_index" ]; + google.protobuf.UInt64Value new_nonce = 2 [ json_name = "new_nonce" ]; +} + +message BlockAccessListCodeChange { + google.protobuf.UInt32Value block_access_index = 1 + [ json_name = "block_access_index" ]; + google.protobuf.StringValue new_code = 2 [ json_name = "new_code" ]; +} + +message BlockAccessListStorageRead { + google.protobuf.StringValue key = 1; +} + +message BlockAccessListEntry { + google.protobuf.StringValue address = 1; + repeated BlockAccessListStorageChange storage_changes = 2 + [ json_name = "storage_changes" ]; + repeated BlockAccessListBalanceChange balance_changes = 3 + [ json_name = "balance_changes" ]; + repeated BlockAccessListNonceChange nonce_changes = 4 + [ json_name = "nonce_changes" ]; + repeated BlockAccessListCodeChange code_changes = 5 + [ json_name = "code_changes" ]; + repeated BlockAccessListStorageRead storage_reads = 6 + [ json_name = "storage_reads" ]; +} + +message BlockAccessList { + repeated BlockAccessListEntry entries = 1; +} + +// BlockAccessListChange is a denormalized representation of a single change +// within a block access list. Used for ClickHouse storage where each change +// becomes one row. +message BlockAccessListChange { + google.protobuf.StringValue address = 1; + // change_type is one of: "storage", "balance", "nonce", "code", "storage_read", "touched" + string change_type = 2 [ json_name = "change_type" ]; + google.protobuf.UInt32Value block_access_index = 3 + [ json_name = "block_access_index" ]; + // storage_key is set only for storage changes + google.protobuf.StringValue storage_key = 4 [ json_name = "storage_key" ]; + // new_value contains the new value for any change type + google.protobuf.StringValue new_value = 5 [ json_name = "new_value" ]; +} diff --git a/pkg/proto/eth/v1/builder.pb.go b/pkg/proto/eth/v1/builder.pb.go new file mode 100644 index 000000000..5c80eb485 --- /dev/null +++ b/pkg/proto/eth/v1/builder.pb.go @@ -0,0 +1,221 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/builder.proto + +// EIP-7732: ePBS Builder type +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#builder + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Builder represents an enshrined builder in the beacon state. +type Builder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + // uint8 in the spec; proto3 has no uint8, so we use UInt32Value. + Version *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + ExecutionAddress string `protobuf:"bytes,3,opt,name=execution_address,proto3" json:"execution_address,omitempty"` + Balance *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=balance,proto3" json:"balance,omitempty"` + DepositEpoch *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=deposit_epoch,proto3" json:"deposit_epoch,omitempty"` + WithdrawableEpoch *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=withdrawable_epoch,proto3" json:"withdrawable_epoch,omitempty"` +} + +func (x *Builder) Reset() { + *x = Builder{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_builder_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Builder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Builder) ProtoMessage() {} + +func (x *Builder) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_builder_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Builder.ProtoReflect.Descriptor instead. +func (*Builder) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_builder_proto_rawDescGZIP(), []int{0} +} + +func (x *Builder) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *Builder) GetVersion() *wrapperspb.UInt32Value { + if x != nil { + return x.Version + } + return nil +} + +func (x *Builder) GetExecutionAddress() string { + if x != nil { + return x.ExecutionAddress + } + return "" +} + +func (x *Builder) GetBalance() *wrapperspb.UInt64Value { + if x != nil { + return x.Balance + } + return nil +} + +func (x *Builder) GetDepositEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.DepositEpoch + } + return nil +} + +func (x *Builder) GetWithdrawableEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.WithdrawableEpoch + } + return nil +} + +var File_pkg_proto_eth_v1_builder_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_builder_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0b, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xd1, 0x02, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, + 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, + 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, + 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pkg_proto_eth_v1_builder_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_builder_proto_rawDescData = file_pkg_proto_eth_v1_builder_proto_rawDesc +) + +func file_pkg_proto_eth_v1_builder_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_builder_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_builder_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_builder_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_builder_proto_rawDescData +} + +var file_pkg_proto_eth_v1_builder_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_pkg_proto_eth_v1_builder_proto_goTypes = []any{ + (*Builder)(nil), // 0: xatu.eth.v1.Builder + (*wrapperspb.UInt32Value)(nil), // 1: google.protobuf.UInt32Value + (*wrapperspb.UInt64Value)(nil), // 2: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_builder_proto_depIdxs = []int32{ + 1, // 0: xatu.eth.v1.Builder.version:type_name -> google.protobuf.UInt32Value + 2, // 1: xatu.eth.v1.Builder.balance:type_name -> google.protobuf.UInt64Value + 2, // 2: xatu.eth.v1.Builder.deposit_epoch:type_name -> google.protobuf.UInt64Value + 2, // 3: xatu.eth.v1.Builder.withdrawable_epoch:type_name -> google.protobuf.UInt64Value + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_builder_proto_init() } +func file_pkg_proto_eth_v1_builder_proto_init() { + if File_pkg_proto_eth_v1_builder_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_builder_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Builder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_builder_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_builder_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_builder_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_builder_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_builder_proto = out.File + file_pkg_proto_eth_v1_builder_proto_rawDesc = nil + file_pkg_proto_eth_v1_builder_proto_goTypes = nil + file_pkg_proto_eth_v1_builder_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/builder.proto b/pkg/proto/eth/v1/builder.proto new file mode 100644 index 000000000..420c6aea0 --- /dev/null +++ b/pkg/proto/eth/v1/builder.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +// EIP-7732: ePBS Builder type +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#builder + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; + +// Builder represents an enshrined builder in the beacon state. +message Builder { + string pubkey = 1; + + // uint8 in the spec; proto3 has no uint8, so we use UInt32Value. + google.protobuf.UInt32Value version = 2; + + string execution_address = 3 [ json_name = "execution_address" ]; + + google.protobuf.UInt64Value balance = 4; + + google.protobuf.UInt64Value deposit_epoch = 5 + [ json_name = "deposit_epoch" ]; + + google.protobuf.UInt64Value withdrawable_epoch = 6 + [ json_name = "withdrawable_epoch" ]; +} diff --git a/pkg/proto/eth/v1/conversion.go b/pkg/proto/eth/v1/conversion.go index ea03d2b74..a3cc22378 100644 --- a/pkg/proto/eth/v1/conversion.go +++ b/pkg/proto/eth/v1/conversion.go @@ -7,7 +7,10 @@ import ( "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" "github.com/attestantio/go-eth2-client/spec/electra" + "github.com/attestantio/go-eth2-client/spec/gloas" "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethereum/go-ethereum/core/types/bal" + "github.com/ethereum/go-ethereum/rlp" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -359,3 +362,77 @@ func NewElectraExecutionRequestsFromElectra(data *electra.ExecutionRequests) *El return requests } + +// NewBlockAccessListFromGloas decodes a raw RLP-encoded block access list +// (EIP-7928) into the structured proto representation. +func NewBlockAccessListFromGloas(rawBAL gloas.BlockAccessList) *BlockAccessList { + if len(rawBAL) == 0 { + return &BlockAccessList{} + } + + var accesses bal.BlockAccessList + if err := rlp.DecodeBytes(rawBAL, &accesses); err != nil { + return &BlockAccessList{} + } + + entries := make([]*BlockAccessListEntry, 0, len(accesses)) + + for i := range accesses { + access := &accesses[i] + entry := &BlockAccessListEntry{ + Address: &wrapperspb.StringValue{Value: fmt.Sprintf("0x%x", access.Address)}, + } + + // Storage changes: each slot has multiple writes keyed by tx index + for _, slotWrite := range access.StorageChanges { + slotHash := slotWrite.Slot.ToHash() + + for _, write := range slotWrite.Accesses { + valueHash := write.ValueAfter.ToHash() + + entry.StorageChanges = append(entry.StorageChanges, &BlockAccessListStorageChange{ + BlockAccessIndex: &wrapperspb.UInt32Value{Value: uint32(write.TxIdx)}, + Key: &wrapperspb.StringValue{Value: fmt.Sprintf("0x%x", slotHash)}, + NewValue: &wrapperspb.StringValue{Value: fmt.Sprintf("0x%x", valueHash)}, + }) + } + } + + // Balance changes + for _, change := range access.BalanceChanges { + entry.BalanceChanges = append(entry.BalanceChanges, &BlockAccessListBalanceChange{ + BlockAccessIndex: &wrapperspb.UInt32Value{Value: uint32(change.TxIdx)}, + PostBalance: &wrapperspb.StringValue{Value: change.Balance.String()}, + }) + } + + // Nonce changes + for _, change := range access.NonceChanges { + entry.NonceChanges = append(entry.NonceChanges, &BlockAccessListNonceChange{ + BlockAccessIndex: &wrapperspb.UInt32Value{Value: uint32(change.TxIdx)}, + NewNonce: &wrapperspb.UInt64Value{Value: change.Nonce}, + }) + } + + // Code changes + for _, code := range access.CodeChanges { + entry.CodeChanges = append(entry.CodeChanges, &BlockAccessListCodeChange{ + BlockAccessIndex: &wrapperspb.UInt32Value{Value: uint32(code.TxIndex)}, + NewCode: &wrapperspb.StringValue{Value: fmt.Sprintf("0x%x", code.Code)}, + }) + } + + // Storage reads (read-only slots, no value or tx index) + for _, slot := range access.StorageReads { + slotHash := slot.ToHash() + + entry.StorageReads = append(entry.StorageReads, &BlockAccessListStorageRead{ + Key: &wrapperspb.StringValue{Value: fmt.Sprintf("0x%x", slotHash)}, + }) + } + + entries = append(entries, entry) + } + + return &BlockAccessList{Entries: entries} +} diff --git a/pkg/proto/eth/v1/conversion_test.go b/pkg/proto/eth/v1/conversion_test.go index 61d21aed9..0b9172582 100644 --- a/pkg/proto/eth/v1/conversion_test.go +++ b/pkg/proto/eth/v1/conversion_test.go @@ -1,6 +1,10 @@ package v1 -import "testing" +import ( + "encoding/hex" + "fmt" + "testing" +) func TestTrimmedString(t *testing.T) { tests := []struct { @@ -48,3 +52,92 @@ func TestTrimmedString(t *testing.T) { }) } } + +func TestNewBlockAccessListFromGloas_Empty(t *testing.T) { + result := NewBlockAccessListFromGloas(nil) + if result == nil { + t.Fatal("expected non-nil result for nil input") + } + + if len(result.GetEntries()) != 0 { + t.Errorf("expected 0 entries, got %d", len(result.GetEntries())) + } +} + +func TestNewBlockAccessListFromGloas_InvalidRLP(t *testing.T) { + result := NewBlockAccessListFromGloas([]byte{0xff, 0xfe, 0xfd}) + if result == nil { + t.Fatal("expected non-nil result for invalid RLP") + } + + if len(result.GetEntries()) != 0 { + t.Errorf("expected 0 entries for invalid RLP, got %d", len(result.GetEntries())) + } +} + +// TestNewBlockAccessListFromGloas_RealDevnetData tests decoding real BAL data +// captured from a Gloas devnet beacon node (slot 200). Contains 4 entries: +// - Withdrawal Request Contract (reads only) +// - Consolidation Request Contract (reads only) +// - History Storage Contract (1 storage write) +// - Beacon Roots Contract (2 storage writes) +func TestNewBlockAccessListFromGloas_RealDevnetData(t *testing.T) { + rawHex := "f8d1de9400000961ef480eb55e80d19ad83579a64c007002c0c480010203c0c0c0" + + "de940000bbddc7ce488642fb579f8b00f3a590007251c0c480010203c0c0c0" + + "f841940000f90827f1c53a10cb7a02335b175320002935e7e681c7e3e280a02da04ac41c52c5ed22ac6e519822f2a3b5e852d835cab242548ba7cd531b8519c0c0c0c0" + + "f84e94000f3df6d732807ef1319fb7b8bb8522d0beac02f4cb821316c7c6808469c1e4ede7823315e3e280a03879f24e13e88a5db134e7092a18829d88875fc5c4252d3f27b21b7a96fd2e8bc0c0c0c0" + + rawBytes, err := hex.DecodeString(rawHex) + if err != nil { + t.Fatalf("failed to decode hex: %v", err) + } + + result := NewBlockAccessListFromGloas(rawBytes) + + if len(result.GetEntries()) != 4 { + t.Fatalf("expected 4 entries, got %d", len(result.GetEntries())) + } + + // Entry 0: Withdrawal Request Contract - reads only, no writes + entry0 := result.GetEntries()[0] + if got := entry0.GetAddress().GetValue(); got != "0x00000961ef480eb55e80d19ad83579a64c007002" { + t.Errorf("entry 0 address: got %s", got) + } + + if len(entry0.GetStorageChanges()) != 0 { + t.Errorf("entry 0: expected 0 storage changes, got %d", len(entry0.GetStorageChanges())) + } + + if len(entry0.GetStorageReads()) != 4 { + t.Fatalf("entry 0: expected 4 storage reads, got %d", len(entry0.GetStorageReads())) + } + + // Verify read slots are sequential (0x00, 0x01, 0x02, 0x03) + for i, r := range entry0.GetStorageReads() { + expected := fmt.Sprintf("0x00000000000000000000000000000000000000000000000000000000000000%02x", i) + if r.GetKey().GetValue() != expected { + t.Errorf("entry 0 read[%d]: expected %s, got %s", i, expected, r.GetKey().GetValue()) + } + } + + // Entry 2: History Storage Contract - 1 storage write + entry2 := result.GetEntries()[2] + if len(entry2.GetStorageChanges()) != 1 { + t.Fatalf("entry 2: expected 1 storage change, got %d", len(entry2.GetStorageChanges())) + } + + sc := entry2.GetStorageChanges()[0] + if sc.GetBlockAccessIndex().GetValue() != 0 { + t.Errorf("expected block_access_index=0, got %d", sc.GetBlockAccessIndex().GetValue()) + } + + // Entry 3: Beacon Roots Contract - 2 storage writes + entry3 := result.GetEntries()[3] + if got := entry3.GetAddress().GetValue(); got != "0x000f3df6d732807ef1319fb7b8bb8522d0beac02" { + t.Errorf("entry 3 address: got %s", got) + } + + if len(entry3.GetStorageChanges()) != 2 { + t.Fatalf("entry 3: expected 2 storage changes, got %d", len(entry3.GetStorageChanges())) + } +} diff --git a/pkg/proto/eth/v1/execution_engine.pb.go b/pkg/proto/eth/v1/execution_engine.pb.go index 6033060f9..3070ca872 100644 --- a/pkg/proto/eth/v1/execution_engine.pb.go +++ b/pkg/proto/eth/v1/execution_engine.pb.go @@ -1472,6 +1472,199 @@ func (x *ExecutionPayloadFulu) GetExcessBlobGas() *wrapperspb.UInt64Value { return nil } +type ExecutionPayloadGloas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentHash string `protobuf:"bytes,1,opt,name=parent_hash,proto3" json:"parent_hash,omitempty"` + FeeRecipient string `protobuf:"bytes,2,opt,name=fee_recipient,proto3" json:"fee_recipient,omitempty"` + StateRoot string `protobuf:"bytes,3,opt,name=state_root,proto3" json:"state_root,omitempty"` + ReceiptsRoot string `protobuf:"bytes,4,opt,name=receipts_root,proto3" json:"receipts_root,omitempty"` + LogsBloom string `protobuf:"bytes,5,opt,name=logs_bloom,proto3" json:"logs_bloom,omitempty"` + PrevRandao string `protobuf:"bytes,6,opt,name=prev_randao,proto3" json:"prev_randao,omitempty"` + BlockNumber *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=block_number,proto3" json:"block_number,omitempty"` + GasLimit *wrapperspb.UInt64Value `protobuf:"bytes,8,opt,name=gas_limit,proto3" json:"gas_limit,omitempty"` + GasUsed *wrapperspb.UInt64Value `protobuf:"bytes,9,opt,name=gas_used,proto3" json:"gas_used,omitempty"` + Timestamp *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + ExtraData string `protobuf:"bytes,11,opt,name=extra_data,proto3" json:"extra_data,omitempty"` + BaseFeePerGas string `protobuf:"bytes,12,opt,name=base_fee_per_gas,proto3" json:"base_fee_per_gas,omitempty"` + BlockHash string `protobuf:"bytes,13,opt,name=block_hash,proto3" json:"block_hash,omitempty"` + Transactions []string `protobuf:"bytes,14,rep,name=transactions,proto3" json:"transactions,omitempty"` + Withdrawals []*WithdrawalV2 `protobuf:"bytes,15,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` + BlobGasUsed *wrapperspb.UInt64Value `protobuf:"bytes,16,opt,name=blob_gas_used,proto3" json:"blob_gas_used,omitempty"` + ExcessBlobGas *wrapperspb.UInt64Value `protobuf:"bytes,17,opt,name=excess_blob_gas,proto3" json:"excess_blob_gas,omitempty"` + // EIP-7928: Block-level access list + BlockAccessList *BlockAccessList `protobuf:"bytes,18,opt,name=block_access_list,proto3" json:"block_access_list,omitempty"` + // Slot number in execution payload + SlotNumber *wrapperspb.UInt64Value `protobuf:"bytes,19,opt,name=slot_number,proto3" json:"slot_number,omitempty"` +} + +func (x *ExecutionPayloadGloas) Reset() { + *x = ExecutionPayloadGloas{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionPayloadGloas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadGloas) ProtoMessage() {} + +func (x *ExecutionPayloadGloas) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadGloas.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadGloas) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{9} +} + +func (x *ExecutionPayloadGloas) GetParentHash() string { + if x != nil { + return x.ParentHash + } + return "" +} + +func (x *ExecutionPayloadGloas) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + +func (x *ExecutionPayloadGloas) GetStateRoot() string { + if x != nil { + return x.StateRoot + } + return "" +} + +func (x *ExecutionPayloadGloas) GetReceiptsRoot() string { + if x != nil { + return x.ReceiptsRoot + } + return "" +} + +func (x *ExecutionPayloadGloas) GetLogsBloom() string { + if x != nil { + return x.LogsBloom + } + return "" +} + +func (x *ExecutionPayloadGloas) GetPrevRandao() string { + if x != nil { + return x.PrevRandao + } + return "" +} + +func (x *ExecutionPayloadGloas) GetBlockNumber() *wrapperspb.UInt64Value { + if x != nil { + return x.BlockNumber + } + return nil +} + +func (x *ExecutionPayloadGloas) GetGasLimit() *wrapperspb.UInt64Value { + if x != nil { + return x.GasLimit + } + return nil +} + +func (x *ExecutionPayloadGloas) GetGasUsed() *wrapperspb.UInt64Value { + if x != nil { + return x.GasUsed + } + return nil +} + +func (x *ExecutionPayloadGloas) GetTimestamp() *wrapperspb.UInt64Value { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *ExecutionPayloadGloas) GetExtraData() string { + if x != nil { + return x.ExtraData + } + return "" +} + +func (x *ExecutionPayloadGloas) GetBaseFeePerGas() string { + if x != nil { + return x.BaseFeePerGas + } + return "" +} + +func (x *ExecutionPayloadGloas) GetBlockHash() string { + if x != nil { + return x.BlockHash + } + return "" +} + +func (x *ExecutionPayloadGloas) GetTransactions() []string { + if x != nil { + return x.Transactions + } + return nil +} + +func (x *ExecutionPayloadGloas) GetWithdrawals() []*WithdrawalV2 { + if x != nil { + return x.Withdrawals + } + return nil +} + +func (x *ExecutionPayloadGloas) GetBlobGasUsed() *wrapperspb.UInt64Value { + if x != nil { + return x.BlobGasUsed + } + return nil +} + +func (x *ExecutionPayloadGloas) GetExcessBlobGas() *wrapperspb.UInt64Value { + if x != nil { + return x.ExcessBlobGas + } + return nil +} + +func (x *ExecutionPayloadGloas) GetBlockAccessList() *BlockAccessList { + if x != nil { + return x.BlockAccessList + } + return nil +} + +func (x *ExecutionPayloadGloas) GetSlotNumber() *wrapperspb.UInt64Value { + if x != nil { + return x.SlotNumber + } + return nil +} + type Withdrawal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1486,7 +1679,7 @@ type Withdrawal struct { func (x *Withdrawal) Reset() { *x = Withdrawal{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[9] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1499,7 +1692,7 @@ func (x *Withdrawal) String() string { func (*Withdrawal) ProtoMessage() {} func (x *Withdrawal) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[9] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,7 +1705,7 @@ func (x *Withdrawal) ProtoReflect() protoreflect.Message { // Deprecated: Use Withdrawal.ProtoReflect.Descriptor instead. func (*Withdrawal) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{10} } func (x *Withdrawal) GetIndex() uint64 { @@ -1557,7 +1750,7 @@ type WithdrawalV2 struct { func (x *WithdrawalV2) Reset() { *x = WithdrawalV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[10] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1763,7 @@ func (x *WithdrawalV2) String() string { func (*WithdrawalV2) ProtoMessage() {} func (x *WithdrawalV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[10] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1776,7 @@ func (x *WithdrawalV2) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalV2.ProtoReflect.Descriptor instead. func (*WithdrawalV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{11} } func (x *WithdrawalV2) GetIndex() *wrapperspb.UInt64Value { @@ -1639,7 +1832,7 @@ type ExecutionPayloadHeaderCapella struct { func (x *ExecutionPayloadHeaderCapella) Reset() { *x = ExecutionPayloadHeaderCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[11] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1652,7 +1845,7 @@ func (x *ExecutionPayloadHeaderCapella) String() string { func (*ExecutionPayloadHeaderCapella) ProtoMessage() {} func (x *ExecutionPayloadHeaderCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[11] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1665,7 +1858,7 @@ func (x *ExecutionPayloadHeaderCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionPayloadHeaderCapella.ProtoReflect.Descriptor instead. func (*ExecutionPayloadHeaderCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{12} } func (x *ExecutionPayloadHeaderCapella) GetParentHash() string { @@ -1798,7 +1991,7 @@ type ExecutionPayloadHeaderCapellaV2 struct { func (x *ExecutionPayloadHeaderCapellaV2) Reset() { *x = ExecutionPayloadHeaderCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[12] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1811,7 +2004,7 @@ func (x *ExecutionPayloadHeaderCapellaV2) String() string { func (*ExecutionPayloadHeaderCapellaV2) ProtoMessage() {} func (x *ExecutionPayloadHeaderCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[12] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1824,7 +2017,7 @@ func (x *ExecutionPayloadHeaderCapellaV2) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionPayloadHeaderCapellaV2.ProtoReflect.Descriptor instead. func (*ExecutionPayloadHeaderCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{13} } func (x *ExecutionPayloadHeaderCapellaV2) GetParentHash() string { @@ -1957,7 +2150,7 @@ type Transaction struct { func (x *Transaction) Reset() { *x = Transaction{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[13] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1970,7 +2163,7 @@ func (x *Transaction) String() string { func (*Transaction) ProtoMessage() {} func (x *Transaction) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[13] + mi := &file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1983,7 +2176,7 @@ func (x *Transaction) ProtoReflect() protoreflect.Message { // Deprecated: Use Transaction.ProtoReflect.Descriptor instead. func (*Transaction) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP(), []int{14} } func (x *Transaction) GetChainId() string { @@ -2101,213 +2294,101 @@ var file_pkg_proto_eth_v1_execution_engine_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xee, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, - 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, - 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe8, 0x04, 0x0a, 0x12, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x32, - 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, - 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, - 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xee, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, + 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, + 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, + 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, + 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, + 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, + 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, + 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xe8, 0x04, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, + 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, + 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, + 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, - 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfe, 0x03, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, - 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, - 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, - 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xf8, 0x04, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x56, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, - 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, - 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, - 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, - 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, - 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x22, 0xb0, 0x04, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x20, 0x0a, 0x0b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, - 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, - 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, - 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, - 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x73, 0x22, 0xac, 0x05, 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, - 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, - 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, - 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, - 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, + 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, + 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, + 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, + 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, + 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfe, + 0x03, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, + 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, + 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, + 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, + 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, + 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, + 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, + 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, @@ -2315,14 +2396,11 @@ var file_pkg_proto_eth_v1_execution_engine_proto_rawDesc = []byte{ 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x56, 0x32, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x73, 0x22, 0xb4, 0x06, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x20, 0x0a, 0x0b, + 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, + 0xf8, 0x04, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, @@ -2357,24 +2435,193 @@ var file_pkg_proto_eth_v1_execution_engine_proto_rawDesc = []byte{ 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x42, 0x0a, - 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x10, + 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xb0, 0x04, 0x0a, 0x17, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, + 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, + 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, + 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, + 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, + 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, + 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, + 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, + 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x22, 0xac, 0x05, + 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, + 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, + 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, + 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, + 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, + 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, + 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, + 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, + 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, + 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, + 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x0f, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, 0x52, + 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x22, 0xb4, 0x06, 0x0a, + 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, + 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, + 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, + 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, + 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, + 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x62, 0x6c, + 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x65, + 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, - 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, - 0x5f, 0x67, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x67, 0x61, 0x73, 0x22, 0xb6, 0x06, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x12, + 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, + 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, + 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, + 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, + 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, + 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x22, 0xb6, 0x06, 0x0a, 0x17, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6c, - 0x65, 0x63, 0x74, 0x72, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, + 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x56, 0x32, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, + 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, + 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x22, 0xb3, 0x06, 0x0a, + 0x14, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x46, 0x75, 0x6c, 0x75, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, @@ -2424,194 +2671,203 @@ var file_pkg_proto_eth_v1_execution_engine_proto_rawDesc = []byte{ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, - 0x61, 0x73, 0x22, 0xb3, 0x06, 0x0a, 0x14, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x6c, 0x75, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, - 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, - 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, - 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, - 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x61, 0x73, 0x22, 0xc0, 0x07, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, + 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, + 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, + 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, + 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, - 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, - 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, - 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, - 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x0f, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, 0x52, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x0d, - 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, + 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, + 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3b, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, + 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, + 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x42, 0x0a, + 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, + 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, + 0x5f, 0x67, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x7e, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x0c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, - 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, - 0x67, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x22, 0x7e, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x0f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x0c, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x46, 0x0a, - 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x34, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xb1, 0x04, 0x0a, 0x1d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, + 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, + 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, + 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, + 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, + 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, + 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, 0x61, 0x73, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xab, 0x05, 0x0a, 0x1f, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, + 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, + 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, + 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, + 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb1, 0x04, 0x0a, 0x1d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, - 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, - 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, - 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, - 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, - 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x67, - 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, - 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x2c, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a, - 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xab, 0x05, 0x0a, 0x1f, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, - 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, - 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x40, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, + 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, + 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, + 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, + 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x8d, 0x04, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x67, - 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, - 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x8d, 0x04, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x67, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, - 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, - 0x72, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, - 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, - 0x32, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x65, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x32, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x61, 0x73, 0x5f, + 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, + 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x61, + 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x38, 0x0a, 0x08, + 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x67, - 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, - 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, - 0x38, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, - 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, - 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, - 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x62, 0x6c, + 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, + 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, + 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, + 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, + 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2626,7 +2882,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_rawDescGZIP() []byte { return file_pkg_proto_eth_v1_execution_engine_proto_rawDescData } -var file_pkg_proto_eth_v1_execution_engine_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_pkg_proto_eth_v1_execution_engine_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_pkg_proto_eth_v1_execution_engine_proto_goTypes = []any{ (*ExecutionPayload)(nil), // 0: xatu.eth.v1.ExecutionPayload (*ExecutionPayloadV2)(nil), // 1: xatu.eth.v1.ExecutionPayloadV2 @@ -2637,66 +2893,77 @@ var file_pkg_proto_eth_v1_execution_engine_proto_goTypes = []any{ (*ExecutionPayloadDeneb)(nil), // 6: xatu.eth.v1.ExecutionPayloadDeneb (*ExecutionPayloadElectra)(nil), // 7: xatu.eth.v1.ExecutionPayloadElectra (*ExecutionPayloadFulu)(nil), // 8: xatu.eth.v1.ExecutionPayloadFulu - (*Withdrawal)(nil), // 9: xatu.eth.v1.Withdrawal - (*WithdrawalV2)(nil), // 10: xatu.eth.v1.WithdrawalV2 - (*ExecutionPayloadHeaderCapella)(nil), // 11: xatu.eth.v1.ExecutionPayloadHeaderCapella - (*ExecutionPayloadHeaderCapellaV2)(nil), // 12: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 - (*Transaction)(nil), // 13: xatu.eth.v1.Transaction - (*wrapperspb.UInt64Value)(nil), // 14: google.protobuf.UInt64Value - (*wrapperspb.UInt32Value)(nil), // 15: google.protobuf.UInt32Value + (*ExecutionPayloadGloas)(nil), // 9: xatu.eth.v1.ExecutionPayloadGloas + (*Withdrawal)(nil), // 10: xatu.eth.v1.Withdrawal + (*WithdrawalV2)(nil), // 11: xatu.eth.v1.WithdrawalV2 + (*ExecutionPayloadHeaderCapella)(nil), // 12: xatu.eth.v1.ExecutionPayloadHeaderCapella + (*ExecutionPayloadHeaderCapellaV2)(nil), // 13: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 + (*Transaction)(nil), // 14: xatu.eth.v1.Transaction + (*wrapperspb.UInt64Value)(nil), // 15: google.protobuf.UInt64Value + (*BlockAccessList)(nil), // 16: xatu.eth.v1.BlockAccessList + (*wrapperspb.UInt32Value)(nil), // 17: google.protobuf.UInt32Value } var file_pkg_proto_eth_v1_execution_engine_proto_depIdxs = []int32{ - 14, // 0: xatu.eth.v1.ExecutionPayloadV2.block_number:type_name -> google.protobuf.UInt64Value - 14, // 1: xatu.eth.v1.ExecutionPayloadV2.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 2: xatu.eth.v1.ExecutionPayloadV2.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 3: xatu.eth.v1.ExecutionPayloadV2.timestamp:type_name -> google.protobuf.UInt64Value - 14, // 4: xatu.eth.v1.ExecutionPayloadHeaderV2.block_number:type_name -> google.protobuf.UInt64Value - 14, // 5: xatu.eth.v1.ExecutionPayloadHeaderV2.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 6: xatu.eth.v1.ExecutionPayloadHeaderV2.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 7: xatu.eth.v1.ExecutionPayloadHeaderV2.timestamp:type_name -> google.protobuf.UInt64Value - 9, // 8: xatu.eth.v1.ExecutionPayloadCapella.withdrawals:type_name -> xatu.eth.v1.Withdrawal - 14, // 9: xatu.eth.v1.ExecutionPayloadCapellaV2.block_number:type_name -> google.protobuf.UInt64Value - 14, // 10: xatu.eth.v1.ExecutionPayloadCapellaV2.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 11: xatu.eth.v1.ExecutionPayloadCapellaV2.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 12: xatu.eth.v1.ExecutionPayloadCapellaV2.timestamp:type_name -> google.protobuf.UInt64Value - 10, // 13: xatu.eth.v1.ExecutionPayloadCapellaV2.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 - 14, // 14: xatu.eth.v1.ExecutionPayloadDeneb.block_number:type_name -> google.protobuf.UInt64Value - 14, // 15: xatu.eth.v1.ExecutionPayloadDeneb.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 16: xatu.eth.v1.ExecutionPayloadDeneb.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 17: xatu.eth.v1.ExecutionPayloadDeneb.timestamp:type_name -> google.protobuf.UInt64Value - 10, // 18: xatu.eth.v1.ExecutionPayloadDeneb.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 - 14, // 19: xatu.eth.v1.ExecutionPayloadDeneb.blob_gas_used:type_name -> google.protobuf.UInt64Value - 14, // 20: xatu.eth.v1.ExecutionPayloadDeneb.excess_blob_gas:type_name -> google.protobuf.UInt64Value - 14, // 21: xatu.eth.v1.ExecutionPayloadElectra.block_number:type_name -> google.protobuf.UInt64Value - 14, // 22: xatu.eth.v1.ExecutionPayloadElectra.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 23: xatu.eth.v1.ExecutionPayloadElectra.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 24: xatu.eth.v1.ExecutionPayloadElectra.timestamp:type_name -> google.protobuf.UInt64Value - 10, // 25: xatu.eth.v1.ExecutionPayloadElectra.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 - 14, // 26: xatu.eth.v1.ExecutionPayloadElectra.blob_gas_used:type_name -> google.protobuf.UInt64Value - 14, // 27: xatu.eth.v1.ExecutionPayloadElectra.excess_blob_gas:type_name -> google.protobuf.UInt64Value - 14, // 28: xatu.eth.v1.ExecutionPayloadFulu.block_number:type_name -> google.protobuf.UInt64Value - 14, // 29: xatu.eth.v1.ExecutionPayloadFulu.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 30: xatu.eth.v1.ExecutionPayloadFulu.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 31: xatu.eth.v1.ExecutionPayloadFulu.timestamp:type_name -> google.protobuf.UInt64Value - 10, // 32: xatu.eth.v1.ExecutionPayloadFulu.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 - 14, // 33: xatu.eth.v1.ExecutionPayloadFulu.blob_gas_used:type_name -> google.protobuf.UInt64Value - 14, // 34: xatu.eth.v1.ExecutionPayloadFulu.excess_blob_gas:type_name -> google.protobuf.UInt64Value - 14, // 35: xatu.eth.v1.WithdrawalV2.index:type_name -> google.protobuf.UInt64Value - 14, // 36: xatu.eth.v1.WithdrawalV2.validator_index:type_name -> google.protobuf.UInt64Value - 14, // 37: xatu.eth.v1.WithdrawalV2.amount:type_name -> google.protobuf.UInt64Value - 14, // 38: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.block_number:type_name -> google.protobuf.UInt64Value - 14, // 39: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.gas_limit:type_name -> google.protobuf.UInt64Value - 14, // 40: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.gas_used:type_name -> google.protobuf.UInt64Value - 14, // 41: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.timestamp:type_name -> google.protobuf.UInt64Value - 14, // 42: xatu.eth.v1.Transaction.gas:type_name -> google.protobuf.UInt64Value - 14, // 43: xatu.eth.v1.Transaction.nonce:type_name -> google.protobuf.UInt64Value - 15, // 44: xatu.eth.v1.Transaction.type:type_name -> google.protobuf.UInt32Value - 14, // 45: xatu.eth.v1.Transaction.blob_gas:type_name -> google.protobuf.UInt64Value - 46, // [46:46] is the sub-list for method output_type - 46, // [46:46] is the sub-list for method input_type - 46, // [46:46] is the sub-list for extension type_name - 46, // [46:46] is the sub-list for extension extendee - 0, // [0:46] is the sub-list for field type_name + 15, // 0: xatu.eth.v1.ExecutionPayloadV2.block_number:type_name -> google.protobuf.UInt64Value + 15, // 1: xatu.eth.v1.ExecutionPayloadV2.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 2: xatu.eth.v1.ExecutionPayloadV2.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 3: xatu.eth.v1.ExecutionPayloadV2.timestamp:type_name -> google.protobuf.UInt64Value + 15, // 4: xatu.eth.v1.ExecutionPayloadHeaderV2.block_number:type_name -> google.protobuf.UInt64Value + 15, // 5: xatu.eth.v1.ExecutionPayloadHeaderV2.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 6: xatu.eth.v1.ExecutionPayloadHeaderV2.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 7: xatu.eth.v1.ExecutionPayloadHeaderV2.timestamp:type_name -> google.protobuf.UInt64Value + 10, // 8: xatu.eth.v1.ExecutionPayloadCapella.withdrawals:type_name -> xatu.eth.v1.Withdrawal + 15, // 9: xatu.eth.v1.ExecutionPayloadCapellaV2.block_number:type_name -> google.protobuf.UInt64Value + 15, // 10: xatu.eth.v1.ExecutionPayloadCapellaV2.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 11: xatu.eth.v1.ExecutionPayloadCapellaV2.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 12: xatu.eth.v1.ExecutionPayloadCapellaV2.timestamp:type_name -> google.protobuf.UInt64Value + 11, // 13: xatu.eth.v1.ExecutionPayloadCapellaV2.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 + 15, // 14: xatu.eth.v1.ExecutionPayloadDeneb.block_number:type_name -> google.protobuf.UInt64Value + 15, // 15: xatu.eth.v1.ExecutionPayloadDeneb.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 16: xatu.eth.v1.ExecutionPayloadDeneb.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 17: xatu.eth.v1.ExecutionPayloadDeneb.timestamp:type_name -> google.protobuf.UInt64Value + 11, // 18: xatu.eth.v1.ExecutionPayloadDeneb.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 + 15, // 19: xatu.eth.v1.ExecutionPayloadDeneb.blob_gas_used:type_name -> google.protobuf.UInt64Value + 15, // 20: xatu.eth.v1.ExecutionPayloadDeneb.excess_blob_gas:type_name -> google.protobuf.UInt64Value + 15, // 21: xatu.eth.v1.ExecutionPayloadElectra.block_number:type_name -> google.protobuf.UInt64Value + 15, // 22: xatu.eth.v1.ExecutionPayloadElectra.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 23: xatu.eth.v1.ExecutionPayloadElectra.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 24: xatu.eth.v1.ExecutionPayloadElectra.timestamp:type_name -> google.protobuf.UInt64Value + 11, // 25: xatu.eth.v1.ExecutionPayloadElectra.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 + 15, // 26: xatu.eth.v1.ExecutionPayloadElectra.blob_gas_used:type_name -> google.protobuf.UInt64Value + 15, // 27: xatu.eth.v1.ExecutionPayloadElectra.excess_blob_gas:type_name -> google.protobuf.UInt64Value + 15, // 28: xatu.eth.v1.ExecutionPayloadFulu.block_number:type_name -> google.protobuf.UInt64Value + 15, // 29: xatu.eth.v1.ExecutionPayloadFulu.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 30: xatu.eth.v1.ExecutionPayloadFulu.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 31: xatu.eth.v1.ExecutionPayloadFulu.timestamp:type_name -> google.protobuf.UInt64Value + 11, // 32: xatu.eth.v1.ExecutionPayloadFulu.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 + 15, // 33: xatu.eth.v1.ExecutionPayloadFulu.blob_gas_used:type_name -> google.protobuf.UInt64Value + 15, // 34: xatu.eth.v1.ExecutionPayloadFulu.excess_blob_gas:type_name -> google.protobuf.UInt64Value + 15, // 35: xatu.eth.v1.ExecutionPayloadGloas.block_number:type_name -> google.protobuf.UInt64Value + 15, // 36: xatu.eth.v1.ExecutionPayloadGloas.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 37: xatu.eth.v1.ExecutionPayloadGloas.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 38: xatu.eth.v1.ExecutionPayloadGloas.timestamp:type_name -> google.protobuf.UInt64Value + 11, // 39: xatu.eth.v1.ExecutionPayloadGloas.withdrawals:type_name -> xatu.eth.v1.WithdrawalV2 + 15, // 40: xatu.eth.v1.ExecutionPayloadGloas.blob_gas_used:type_name -> google.protobuf.UInt64Value + 15, // 41: xatu.eth.v1.ExecutionPayloadGloas.excess_blob_gas:type_name -> google.protobuf.UInt64Value + 16, // 42: xatu.eth.v1.ExecutionPayloadGloas.block_access_list:type_name -> xatu.eth.v1.BlockAccessList + 15, // 43: xatu.eth.v1.ExecutionPayloadGloas.slot_number:type_name -> google.protobuf.UInt64Value + 15, // 44: xatu.eth.v1.WithdrawalV2.index:type_name -> google.protobuf.UInt64Value + 15, // 45: xatu.eth.v1.WithdrawalV2.validator_index:type_name -> google.protobuf.UInt64Value + 15, // 46: xatu.eth.v1.WithdrawalV2.amount:type_name -> google.protobuf.UInt64Value + 15, // 47: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.block_number:type_name -> google.protobuf.UInt64Value + 15, // 48: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.gas_limit:type_name -> google.protobuf.UInt64Value + 15, // 49: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.gas_used:type_name -> google.protobuf.UInt64Value + 15, // 50: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2.timestamp:type_name -> google.protobuf.UInt64Value + 15, // 51: xatu.eth.v1.Transaction.gas:type_name -> google.protobuf.UInt64Value + 15, // 52: xatu.eth.v1.Transaction.nonce:type_name -> google.protobuf.UInt64Value + 17, // 53: xatu.eth.v1.Transaction.type:type_name -> google.protobuf.UInt32Value + 15, // 54: xatu.eth.v1.Transaction.blob_gas:type_name -> google.protobuf.UInt64Value + 55, // [55:55] is the sub-list for method output_type + 55, // [55:55] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_pkg_proto_eth_v1_execution_engine_proto_init() } @@ -2704,6 +2971,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { if File_pkg_proto_eth_v1_execution_engine_proto != nil { return } + file_pkg_proto_eth_v1_block_access_list_proto_init() if !protoimpl.UnsafeEnabled { file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ExecutionPayload); i { @@ -2814,7 +3082,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { } } file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*Withdrawal); i { + switch v := v.(*ExecutionPayloadGloas); i { case 0: return &v.state case 1: @@ -2826,7 +3094,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { } } file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*WithdrawalV2); i { + switch v := v.(*Withdrawal); i { case 0: return &v.state case 1: @@ -2838,7 +3106,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { } } file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionPayloadHeaderCapella); i { + switch v := v.(*WithdrawalV2); i { case 0: return &v.state case 1: @@ -2850,7 +3118,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { } } file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionPayloadHeaderCapellaV2); i { + switch v := v.(*ExecutionPayloadHeaderCapella); i { case 0: return &v.state case 1: @@ -2862,6 +3130,18 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { } } file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionPayloadHeaderCapellaV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_execution_engine_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*Transaction); i { case 0: return &v.state @@ -2880,7 +3160,7 @@ func file_pkg_proto_eth_v1_execution_engine_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_proto_eth_v1_execution_engine_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/proto/eth/v1/execution_engine.proto b/pkg/proto/eth/v1/execution_engine.proto index fc0b9848c..e72b95cbe 100644 --- a/pkg/proto/eth/v1/execution_engine.proto +++ b/pkg/proto/eth/v1/execution_engine.proto @@ -9,6 +9,7 @@ option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; import "google/protobuf/descriptor.proto"; import "google/protobuf/wrappers.proto"; +import "pkg/proto/eth/v1/block_access_list.proto"; message ExecutionPayload { string parent_hash = 1 [ json_name = "parent_hash" ]; @@ -181,6 +182,35 @@ message ExecutionPayloadFulu { // TODO(fulu): Is there anything else to add for Fulu? } +message ExecutionPayloadGloas { + string parent_hash = 1 [ json_name = "parent_hash" ]; + string fee_recipient = 2 [ json_name = "fee_recipient" ]; + string state_root = 3 [ json_name = "state_root" ]; + string receipts_root = 4 [ json_name = "receipts_root" ]; + string logs_bloom = 5 [ json_name = "logs_bloom" ]; + string prev_randao = 6 [ json_name = "prev_randao" ]; + google.protobuf.UInt64Value block_number = 7 [ json_name = "block_number" ]; + google.protobuf.UInt64Value gas_limit = 8 [ json_name = "gas_limit" ]; + google.protobuf.UInt64Value gas_used = 9 [ json_name = "gas_used" ]; + google.protobuf.UInt64Value timestamp = 10; + string extra_data = 11 [ json_name = "extra_data" ]; + string base_fee_per_gas = 12 [ json_name = "base_fee_per_gas" ]; + string block_hash = 13 [ json_name = "block_hash" ]; + repeated string transactions = 14; + repeated WithdrawalV2 withdrawals = 15; + google.protobuf.UInt64Value blob_gas_used = 16 + [ json_name = "blob_gas_used" ]; + google.protobuf.UInt64Value excess_blob_gas = 17 + [ json_name = "excess_blob_gas" ]; + + // EIP-7928: Block-level access list + BlockAccessList block_access_list = 18 + [ json_name = "block_access_list" ]; + // Slot number in execution payload + google.protobuf.UInt64Value slot_number = 19 + [ json_name = "slot_number" ]; +} + message Withdrawal { uint64 index = 1; diff --git a/pkg/proto/eth/v1/execution_payload_bid.pb.go b/pkg/proto/eth/v1/execution_payload_bid.pb.go new file mode 100644 index 000000000..5e6f54250 --- /dev/null +++ b/pkg/proto/eth/v1/execution_payload_bid.pb.go @@ -0,0 +1,353 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/execution_payload_bid.proto + +// EIP-7732: ePBS Execution Payload Bid types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadbid + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ExecutionPayloadBid is the builder's bid included in the beacon block body. +type ExecutionPayloadBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentBlockHash string `protobuf:"bytes,1,opt,name=parent_block_hash,proto3" json:"parent_block_hash,omitempty"` + ParentBlockRoot string `protobuf:"bytes,2,opt,name=parent_block_root,proto3" json:"parent_block_root,omitempty"` + BlockHash string `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` + PrevRandao string `protobuf:"bytes,4,opt,name=prev_randao,proto3" json:"prev_randao,omitempty"` + FeeRecipient string `protobuf:"bytes,5,opt,name=fee_recipient,proto3" json:"fee_recipient,omitempty"` + GasLimit *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=gas_limit,proto3" json:"gas_limit,omitempty"` + BuilderIndex *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=builder_index,proto3" json:"builder_index,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,8,opt,name=slot,proto3" json:"slot,omitempty"` + Value *wrapperspb.UInt64Value `protobuf:"bytes,9,opt,name=value,proto3" json:"value,omitempty"` + ExecutionPayment *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=execution_payment,proto3" json:"execution_payment,omitempty"` + BlobKzgCommitments []string `protobuf:"bytes,11,rep,name=blob_kzg_commitments,proto3" json:"blob_kzg_commitments,omitempty"` +} + +func (x *ExecutionPayloadBid) Reset() { + *x = ExecutionPayloadBid{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionPayloadBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadBid) ProtoMessage() {} + +func (x *ExecutionPayloadBid) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadBid.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadBid) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescGZIP(), []int{0} +} + +func (x *ExecutionPayloadBid) GetParentBlockHash() string { + if x != nil { + return x.ParentBlockHash + } + return "" +} + +func (x *ExecutionPayloadBid) GetParentBlockRoot() string { + if x != nil { + return x.ParentBlockRoot + } + return "" +} + +func (x *ExecutionPayloadBid) GetBlockHash() string { + if x != nil { + return x.BlockHash + } + return "" +} + +func (x *ExecutionPayloadBid) GetPrevRandao() string { + if x != nil { + return x.PrevRandao + } + return "" +} + +func (x *ExecutionPayloadBid) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + +func (x *ExecutionPayloadBid) GetGasLimit() *wrapperspb.UInt64Value { + if x != nil { + return x.GasLimit + } + return nil +} + +func (x *ExecutionPayloadBid) GetBuilderIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.BuilderIndex + } + return nil +} + +func (x *ExecutionPayloadBid) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadBid) GetValue() *wrapperspb.UInt64Value { + if x != nil { + return x.Value + } + return nil +} + +func (x *ExecutionPayloadBid) GetExecutionPayment() *wrapperspb.UInt64Value { + if x != nil { + return x.ExecutionPayment + } + return nil +} + +func (x *ExecutionPayloadBid) GetBlobKzgCommitments() []string { + if x != nil { + return x.BlobKzgCommitments + } + return nil +} + +// SignedExecutionPayloadBid wraps ExecutionPayloadBid with the builder's signature. +type SignedExecutionPayloadBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message *ExecutionPayloadBid `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignedExecutionPayloadBid) Reset() { + *x = SignedExecutionPayloadBid{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedExecutionPayloadBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedExecutionPayloadBid) ProtoMessage() {} + +func (x *SignedExecutionPayloadBid) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedExecutionPayloadBid.ProtoReflect.Descriptor instead. +func (*SignedExecutionPayloadBid) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescGZIP(), []int{1} +} + +func (x *SignedExecutionPayloadBid) GetMessage() *ExecutionPayloadBid { + if x != nil { + return x.Message + } + return nil +} + +func (x *SignedExecutionPayloadBid) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +var File_pkg_proto_eth_v1_execution_payload_bid_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x04, + 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x42, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, + 0x64, 0x61, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x4a, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x75, 0x0a, 0x19, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x52, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, + 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescData = file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDesc +) + +func file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDescData +} + +var file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_pkg_proto_eth_v1_execution_payload_bid_proto_goTypes = []any{ + (*ExecutionPayloadBid)(nil), // 0: xatu.eth.v1.ExecutionPayloadBid + (*SignedExecutionPayloadBid)(nil), // 1: xatu.eth.v1.SignedExecutionPayloadBid + (*wrapperspb.UInt64Value)(nil), // 2: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_execution_payload_bid_proto_depIdxs = []int32{ + 2, // 0: xatu.eth.v1.ExecutionPayloadBid.gas_limit:type_name -> google.protobuf.UInt64Value + 2, // 1: xatu.eth.v1.ExecutionPayloadBid.builder_index:type_name -> google.protobuf.UInt64Value + 2, // 2: xatu.eth.v1.ExecutionPayloadBid.slot:type_name -> google.protobuf.UInt64Value + 2, // 3: xatu.eth.v1.ExecutionPayloadBid.value:type_name -> google.protobuf.UInt64Value + 2, // 4: xatu.eth.v1.ExecutionPayloadBid.execution_payment:type_name -> google.protobuf.UInt64Value + 0, // 5: xatu.eth.v1.SignedExecutionPayloadBid.message:type_name -> xatu.eth.v1.ExecutionPayloadBid + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_execution_payload_bid_proto_init() } +func file_pkg_proto_eth_v1_execution_payload_bid_proto_init() { + if File_pkg_proto_eth_v1_execution_payload_bid_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionPayloadBid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*SignedExecutionPayloadBid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_execution_payload_bid_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_execution_payload_bid_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_execution_payload_bid_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_execution_payload_bid_proto = out.File + file_pkg_proto_eth_v1_execution_payload_bid_proto_rawDesc = nil + file_pkg_proto_eth_v1_execution_payload_bid_proto_goTypes = nil + file_pkg_proto_eth_v1_execution_payload_bid_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/execution_payload_bid.proto b/pkg/proto/eth/v1/execution_payload_bid.proto new file mode 100644 index 000000000..7933a016a --- /dev/null +++ b/pkg/proto/eth/v1/execution_payload_bid.proto @@ -0,0 +1,46 @@ +syntax = "proto3"; + +// EIP-7732: ePBS Execution Payload Bid types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadbid + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; + +// ExecutionPayloadBid is the builder's bid included in the beacon block body. +message ExecutionPayloadBid { + string parent_block_hash = 1 [ json_name = "parent_block_hash" ]; + + string parent_block_root = 2 [ json_name = "parent_block_root" ]; + + string block_hash = 3 [ json_name = "block_hash" ]; + + string prev_randao = 4 [ json_name = "prev_randao" ]; + + string fee_recipient = 5 [ json_name = "fee_recipient" ]; + + google.protobuf.UInt64Value gas_limit = 6 [ json_name = "gas_limit" ]; + + google.protobuf.UInt64Value builder_index = 7 + [ json_name = "builder_index" ]; + + google.protobuf.UInt64Value slot = 8 [ json_name = "slot" ]; + + google.protobuf.UInt64Value value = 9 [ json_name = "value" ]; + + google.protobuf.UInt64Value execution_payment = 10 + [ json_name = "execution_payment" ]; + + repeated string blob_kzg_commitments = 11 + [ json_name = "blob_kzg_commitments" ]; +} + +// SignedExecutionPayloadBid wraps ExecutionPayloadBid with the builder's signature. +message SignedExecutionPayloadBid { + ExecutionPayloadBid message = 1; + + string signature = 2; +} diff --git a/pkg/proto/eth/v1/execution_payload_envelope.pb.go b/pkg/proto/eth/v1/execution_payload_envelope.pb.go new file mode 100644 index 000000000..9f6417a90 --- /dev/null +++ b/pkg/proto/eth/v1/execution_payload_envelope.pb.go @@ -0,0 +1,312 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/execution_payload_envelope.proto + +// EIP-7732: ePBS Execution Payload Envelope types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadenvelope + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ExecutionPayloadEnvelope is the container delivered by the builder +// separately from the beacon block (~2s after block). +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload *ExecutionPayloadGloas `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + ExecutionRequests *ElectraExecutionRequests `protobuf:"bytes,2,opt,name=execution_requests,proto3" json:"execution_requests,omitempty"` + BuilderIndex *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=builder_index,proto3" json:"builder_index,omitempty"` + BeaconBlockRoot string `protobuf:"bytes,4,opt,name=beacon_block_root,proto3" json:"beacon_block_root,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=slot,proto3" json:"slot,omitempty"` + StateRoot string `protobuf:"bytes,6,opt,name=state_root,proto3" json:"state_root,omitempty"` +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescGZIP(), []int{0} +} + +func (x *ExecutionPayloadEnvelope) GetPayload() *ExecutionPayloadGloas { + if x != nil { + return x.Payload + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetExecutionRequests() *ElectraExecutionRequests { + if x != nil { + return x.ExecutionRequests + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBuilderIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.BuilderIndex + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconBlockRoot() string { + if x != nil { + return x.BeaconBlockRoot + } + return "" +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetStateRoot() string { + if x != nil { + return x.StateRoot + } + return "" +} + +// SignedExecutionPayloadEnvelope wraps ExecutionPayloadEnvelope with the +// builder's signature. +type SignedExecutionPayloadEnvelope struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message *ExecutionPayloadEnvelope `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignedExecutionPayloadEnvelope) Reset() { + *x = SignedExecutionPayloadEnvelope{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *SignedExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*SignedExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescGZIP(), []int{1} +} + +func (x *SignedExecutionPayloadEnvelope) GetMessage() *ExecutionPayloadEnvelope { + if x != nil { + return x.Message + } + return nil +} + +func (x *SignedExecutionPayloadEnvelope) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +var File_pkg_proto_eth_v1_execution_payload_envelope_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDesc = []byte{ + 0x0a, 0x31, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x27, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, + 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x02, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x55, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x65, 0x63, + 0x74, 0x72, 0x61, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x11, + 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x7f, 0x0a, 0x1e, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x3f, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x2e, 0x5a, + 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, + 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescData = file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDesc +) + +func file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDescData +} + +var file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_pkg_proto_eth_v1_execution_payload_envelope_proto_goTypes = []any{ + (*ExecutionPayloadEnvelope)(nil), // 0: xatu.eth.v1.ExecutionPayloadEnvelope + (*SignedExecutionPayloadEnvelope)(nil), // 1: xatu.eth.v1.SignedExecutionPayloadEnvelope + (*ExecutionPayloadGloas)(nil), // 2: xatu.eth.v1.ExecutionPayloadGloas + (*ElectraExecutionRequests)(nil), // 3: xatu.eth.v1.ElectraExecutionRequests + (*wrapperspb.UInt64Value)(nil), // 4: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_execution_payload_envelope_proto_depIdxs = []int32{ + 2, // 0: xatu.eth.v1.ExecutionPayloadEnvelope.payload:type_name -> xatu.eth.v1.ExecutionPayloadGloas + 3, // 1: xatu.eth.v1.ExecutionPayloadEnvelope.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests + 4, // 2: xatu.eth.v1.ExecutionPayloadEnvelope.builder_index:type_name -> google.protobuf.UInt64Value + 4, // 3: xatu.eth.v1.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 0, // 4: xatu.eth.v1.SignedExecutionPayloadEnvelope.message:type_name -> xatu.eth.v1.ExecutionPayloadEnvelope + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_execution_payload_envelope_proto_init() } +func file_pkg_proto_eth_v1_execution_payload_envelope_proto_init() { + if File_pkg_proto_eth_v1_execution_payload_envelope_proto != nil { + return + } + file_pkg_proto_eth_v1_execution_engine_proto_init() + file_pkg_proto_eth_v1_execution_requests_proto_init() + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionPayloadEnvelope); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*SignedExecutionPayloadEnvelope); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_execution_payload_envelope_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_execution_payload_envelope_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_execution_payload_envelope_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_execution_payload_envelope_proto = out.File + file_pkg_proto_eth_v1_execution_payload_envelope_proto_rawDesc = nil + file_pkg_proto_eth_v1_execution_payload_envelope_proto_goTypes = nil + file_pkg_proto_eth_v1_execution_payload_envelope_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/execution_payload_envelope.proto b/pkg/proto/eth/v1/execution_payload_envelope.proto new file mode 100644 index 000000000..837624e74 --- /dev/null +++ b/pkg/proto/eth/v1/execution_payload_envelope.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; + +// EIP-7732: ePBS Execution Payload Envelope types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadenvelope + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; +import "pkg/proto/eth/v1/execution_engine.proto"; +import "pkg/proto/eth/v1/execution_requests.proto"; + +// ExecutionPayloadEnvelope is the container delivered by the builder +// separately from the beacon block (~2s after block). +message ExecutionPayloadEnvelope { + ExecutionPayloadGloas payload = 1; + + ElectraExecutionRequests execution_requests = 2 + [ json_name = "execution_requests" ]; + + google.protobuf.UInt64Value builder_index = 3 + [ json_name = "builder_index" ]; + + string beacon_block_root = 4 [ json_name = "beacon_block_root" ]; + + google.protobuf.UInt64Value slot = 5 [ json_name = "slot" ]; + + string state_root = 6 [ json_name = "state_root" ]; +} + +// SignedExecutionPayloadEnvelope wraps ExecutionPayloadEnvelope with the +// builder's signature. +message SignedExecutionPayloadEnvelope { + ExecutionPayloadEnvelope message = 1; + + string signature = 2; +} diff --git a/pkg/proto/eth/v1/payload_attestation.pb.go b/pkg/proto/eth/v1/payload_attestation.pb.go new file mode 100644 index 000000000..3d6843fea --- /dev/null +++ b/pkg/proto/eth/v1/payload_attestation.pb.go @@ -0,0 +1,467 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/payload_attestation.proto + +// EIP-7732: ePBS Payload Attestation types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#payloadattestationdata + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// PayloadAttestationData is the data that PTC validators attest to. +type PayloadAttestationData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BeaconBlockRoot string `protobuf:"bytes,1,opt,name=beacon_block_root,proto3" json:"beacon_block_root,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + PayloadPresent bool `protobuf:"varint,3,opt,name=payload_present,proto3" json:"payload_present,omitempty"` + BlobDataAvailable bool `protobuf:"varint,4,opt,name=blob_data_available,proto3" json:"blob_data_available,omitempty"` +} + +func (x *PayloadAttestationData) Reset() { + *x = PayloadAttestationData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadAttestationData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadAttestationData) ProtoMessage() {} + +func (x *PayloadAttestationData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadAttestationData.ProtoReflect.Descriptor instead. +func (*PayloadAttestationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_payload_attestation_proto_rawDescGZIP(), []int{0} +} + +func (x *PayloadAttestationData) GetBeaconBlockRoot() string { + if x != nil { + return x.BeaconBlockRoot + } + return "" +} + +func (x *PayloadAttestationData) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *PayloadAttestationData) GetPayloadPresent() bool { + if x != nil { + return x.PayloadPresent + } + return false +} + +func (x *PayloadAttestationData) GetBlobDataAvailable() bool { + if x != nil { + return x.BlobDataAvailable + } + return false +} + +// PayloadAttestationMessage is an individual PTC validator's attestation. +// ~512 of these are produced per slot. +type PayloadAttestationMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=validator_index,proto3" json:"validator_index,omitempty"` + Data *PayloadAttestationData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *PayloadAttestationMessage) Reset() { + *x = PayloadAttestationMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadAttestationMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadAttestationMessage) ProtoMessage() {} + +func (x *PayloadAttestationMessage) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadAttestationMessage.ProtoReflect.Descriptor instead. +func (*PayloadAttestationMessage) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_payload_attestation_proto_rawDescGZIP(), []int{1} +} + +func (x *PayloadAttestationMessage) GetValidatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ValidatorIndex + } + return nil +} + +func (x *PayloadAttestationMessage) GetData() *PayloadAttestationData { + if x != nil { + return x.Data + } + return nil +} + +func (x *PayloadAttestationMessage) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +// PayloadAttestation is the aggregated PTC attestation included in the block body. +// Max MAX_PAYLOAD_ATTESTATIONS (4) per block. +type PayloadAttestation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Bitvector[PTC_SIZE] (512 bits) as hex string + AggregationBits string `protobuf:"bytes,1,opt,name=aggregation_bits,proto3" json:"aggregation_bits,omitempty"` + Data *PayloadAttestationData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *PayloadAttestation) Reset() { + *x = PayloadAttestation{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadAttestation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadAttestation) ProtoMessage() {} + +func (x *PayloadAttestation) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadAttestation.ProtoReflect.Descriptor instead. +func (*PayloadAttestation) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_payload_attestation_proto_rawDescGZIP(), []int{2} +} + +func (x *PayloadAttestation) GetAggregationBits() string { + if x != nil { + return x.AggregationBits + } + return "" +} + +func (x *PayloadAttestation) GetData() *PayloadAttestationData { + if x != nil { + return x.Data + } + return nil +} + +func (x *PayloadAttestation) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +// IndexedPayloadAttestation is a PayloadAttestation with attesting indices +// expanded from the aggregation bits. +type IndexedPayloadAttestation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AttestingIndices []*wrapperspb.UInt64Value `protobuf:"bytes,1,rep,name=attesting_indices,proto3" json:"attesting_indices,omitempty"` + Data *PayloadAttestationData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *IndexedPayloadAttestation) Reset() { + *x = IndexedPayloadAttestation{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IndexedPayloadAttestation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexedPayloadAttestation) ProtoMessage() {} + +func (x *IndexedPayloadAttestation) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexedPayloadAttestation.ProtoReflect.Descriptor instead. +func (*IndexedPayloadAttestation) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_payload_attestation_proto_rawDescGZIP(), []int{3} +} + +func (x *IndexedPayloadAttestation) GetAttestingIndices() []*wrapperspb.UInt64Value { + if x != nil { + return x.AttestingIndices + } + return nil +} + +func (x *IndexedPayloadAttestation) GetData() *PayloadAttestationData { + if x != nil { + return x.Data + } + return nil +} + +func (x *IndexedPayloadAttestation) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +var File_pkg_proto_eth_v1_payload_attestation_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_payload_attestation_proto_rawDesc = []byte{ + 0x0a, 0x2a, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x01, 0x0a, 0x16, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x12, 0x30, 0x0a, 0x13, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, + 0x97, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, + 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x19, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x11, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, + 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_pkg_proto_eth_v1_payload_attestation_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_payload_attestation_proto_rawDescData = file_pkg_proto_eth_v1_payload_attestation_proto_rawDesc +) + +func file_pkg_proto_eth_v1_payload_attestation_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_payload_attestation_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_payload_attestation_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_payload_attestation_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_payload_attestation_proto_rawDescData +} + +var file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_pkg_proto_eth_v1_payload_attestation_proto_goTypes = []any{ + (*PayloadAttestationData)(nil), // 0: xatu.eth.v1.PayloadAttestationData + (*PayloadAttestationMessage)(nil), // 1: xatu.eth.v1.PayloadAttestationMessage + (*PayloadAttestation)(nil), // 2: xatu.eth.v1.PayloadAttestation + (*IndexedPayloadAttestation)(nil), // 3: xatu.eth.v1.IndexedPayloadAttestation + (*wrapperspb.UInt64Value)(nil), // 4: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_payload_attestation_proto_depIdxs = []int32{ + 4, // 0: xatu.eth.v1.PayloadAttestationData.slot:type_name -> google.protobuf.UInt64Value + 4, // 1: xatu.eth.v1.PayloadAttestationMessage.validator_index:type_name -> google.protobuf.UInt64Value + 0, // 2: xatu.eth.v1.PayloadAttestationMessage.data:type_name -> xatu.eth.v1.PayloadAttestationData + 0, // 3: xatu.eth.v1.PayloadAttestation.data:type_name -> xatu.eth.v1.PayloadAttestationData + 4, // 4: xatu.eth.v1.IndexedPayloadAttestation.attesting_indices:type_name -> google.protobuf.UInt64Value + 0, // 5: xatu.eth.v1.IndexedPayloadAttestation.data:type_name -> xatu.eth.v1.PayloadAttestationData + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_payload_attestation_proto_init() } +func file_pkg_proto_eth_v1_payload_attestation_proto_init() { + if File_pkg_proto_eth_v1_payload_attestation_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*PayloadAttestationData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*PayloadAttestationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*PayloadAttestation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*IndexedPayloadAttestation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_payload_attestation_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_payload_attestation_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_payload_attestation_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_payload_attestation_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_payload_attestation_proto = out.File + file_pkg_proto_eth_v1_payload_attestation_proto_rawDesc = nil + file_pkg_proto_eth_v1_payload_attestation_proto_goTypes = nil + file_pkg_proto_eth_v1_payload_attestation_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/payload_attestation.proto b/pkg/proto/eth/v1/payload_attestation.proto new file mode 100644 index 000000000..d7f1c30f3 --- /dev/null +++ b/pkg/proto/eth/v1/payload_attestation.proto @@ -0,0 +1,55 @@ +syntax = "proto3"; + +// EIP-7732: ePBS Payload Attestation types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#payloadattestationdata + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; + +// PayloadAttestationData is the data that PTC validators attest to. +message PayloadAttestationData { + string beacon_block_root = 1 [ json_name = "beacon_block_root" ]; + + google.protobuf.UInt64Value slot = 2 [ json_name = "slot" ]; + + bool payload_present = 3 [ json_name = "payload_present" ]; + + bool blob_data_available = 4 [ json_name = "blob_data_available" ]; +} + +// PayloadAttestationMessage is an individual PTC validator's attestation. +// ~512 of these are produced per slot. +message PayloadAttestationMessage { + google.protobuf.UInt64Value validator_index = 1 + [ json_name = "validator_index" ]; + + PayloadAttestationData data = 2; + + string signature = 3; +} + +// PayloadAttestation is the aggregated PTC attestation included in the block body. +// Max MAX_PAYLOAD_ATTESTATIONS (4) per block. +message PayloadAttestation { + // Bitvector[PTC_SIZE] (512 bits) as hex string + string aggregation_bits = 1 [ json_name = "aggregation_bits" ]; + + PayloadAttestationData data = 2; + + string signature = 3; +} + +// IndexedPayloadAttestation is a PayloadAttestation with attesting indices +// expanded from the aggregation bits. +message IndexedPayloadAttestation { + repeated google.protobuf.UInt64Value attesting_indices = 1 + [ json_name = "attesting_indices" ]; + + PayloadAttestationData data = 2; + + string signature = 3; +} diff --git a/pkg/proto/eth/v1/proposer_preferences.pb.go b/pkg/proto/eth/v1/proposer_preferences.pb.go new file mode 100644 index 000000000..816726ecf --- /dev/null +++ b/pkg/proto/eth/v1/proposer_preferences.pb.go @@ -0,0 +1,278 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: pkg/proto/eth/v1/proposer_preferences.proto + +// EIP-7732: ePBS Proposer Preferences types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#new-proposerpreferences + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ProposerPreferences signals the proposer's preferences for their upcoming +// slot (fee recipient, gas limit). Gossiped on P2P. +type ProposerPreferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProposalSlot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=proposal_slot,proto3" json:"proposal_slot,omitempty"` + ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=validator_index,proto3" json:"validator_index,omitempty"` + FeeRecipient string `protobuf:"bytes,3,opt,name=fee_recipient,proto3" json:"fee_recipient,omitempty"` + GasLimit *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=gas_limit,proto3" json:"gas_limit,omitempty"` +} + +func (x *ProposerPreferences) Reset() { + *x = ProposerPreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposerPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposerPreferences) ProtoMessage() {} + +func (x *ProposerPreferences) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposerPreferences.ProtoReflect.Descriptor instead. +func (*ProposerPreferences) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescGZIP(), []int{0} +} + +func (x *ProposerPreferences) GetProposalSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.ProposalSlot + } + return nil +} + +func (x *ProposerPreferences) GetValidatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ValidatorIndex + } + return nil +} + +func (x *ProposerPreferences) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + +func (x *ProposerPreferences) GetGasLimit() *wrapperspb.UInt64Value { + if x != nil { + return x.GasLimit + } + return nil +} + +// SignedProposerPreferences wraps ProposerPreferences with the proposer's +// signature. +type SignedProposerPreferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message *ProposerPreferences `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignedProposerPreferences) Reset() { + *x = SignedProposerPreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedProposerPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedProposerPreferences) ProtoMessage() {} + +func (x *SignedProposerPreferences) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedProposerPreferences.ProtoReflect.Descriptor instead. +func (*SignedProposerPreferences) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescGZIP(), []int{1} +} + +func (x *SignedProposerPreferences) GetMessage() *ProposerPreferences { + if x != nil { + return x.Message + } + return nil +} + +func (x *SignedProposerPreferences) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +var File_pkg_proto_eth_v1_proposer_preferences_proto protoreflect.FileDescriptor + +var file_pkg_proto_eth_v1_proposer_preferences_proto_rawDesc = []byte{ + 0x0a, 0x2b, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x02, 0x0a, + 0x13, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0x75, 0x0a, 0x19, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, + 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescOnce sync.Once + file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescData = file_pkg_proto_eth_v1_proposer_preferences_proto_rawDesc +) + +func file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescGZIP() []byte { + file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescOnce.Do(func() { + file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescData) + }) + return file_pkg_proto_eth_v1_proposer_preferences_proto_rawDescData +} + +var file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_pkg_proto_eth_v1_proposer_preferences_proto_goTypes = []any{ + (*ProposerPreferences)(nil), // 0: xatu.eth.v1.ProposerPreferences + (*SignedProposerPreferences)(nil), // 1: xatu.eth.v1.SignedProposerPreferences + (*wrapperspb.UInt64Value)(nil), // 2: google.protobuf.UInt64Value +} +var file_pkg_proto_eth_v1_proposer_preferences_proto_depIdxs = []int32{ + 2, // 0: xatu.eth.v1.ProposerPreferences.proposal_slot:type_name -> google.protobuf.UInt64Value + 2, // 1: xatu.eth.v1.ProposerPreferences.validator_index:type_name -> google.protobuf.UInt64Value + 2, // 2: xatu.eth.v1.ProposerPreferences.gas_limit:type_name -> google.protobuf.UInt64Value + 0, // 3: xatu.eth.v1.SignedProposerPreferences.message:type_name -> xatu.eth.v1.ProposerPreferences + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_pkg_proto_eth_v1_proposer_preferences_proto_init() } +func file_pkg_proto_eth_v1_proposer_preferences_proto_init() { + if File_pkg_proto_eth_v1_proposer_preferences_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ProposerPreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*SignedProposerPreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_proto_eth_v1_proposer_preferences_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_proto_eth_v1_proposer_preferences_proto_goTypes, + DependencyIndexes: file_pkg_proto_eth_v1_proposer_preferences_proto_depIdxs, + MessageInfos: file_pkg_proto_eth_v1_proposer_preferences_proto_msgTypes, + }.Build() + File_pkg_proto_eth_v1_proposer_preferences_proto = out.File + file_pkg_proto_eth_v1_proposer_preferences_proto_rawDesc = nil + file_pkg_proto_eth_v1_proposer_preferences_proto_goTypes = nil + file_pkg_proto_eth_v1_proposer_preferences_proto_depIdxs = nil +} diff --git a/pkg/proto/eth/v1/proposer_preferences.proto b/pkg/proto/eth/v1/proposer_preferences.proto new file mode 100644 index 000000000..cee9de03d --- /dev/null +++ b/pkg/proto/eth/v1/proposer_preferences.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +// EIP-7732: ePBS Proposer Preferences types +// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#new-proposerpreferences + +package xatu.eth.v1; + +option go_package = "github.com/ethpandaops/xatu/pkg/proto/eth/v1"; + +import "google/protobuf/descriptor.proto"; +import "google/protobuf/wrappers.proto"; + +// ProposerPreferences signals the proposer's preferences for their upcoming +// slot (fee recipient, gas limit). Gossiped on P2P. +message ProposerPreferences { + google.protobuf.UInt64Value proposal_slot = 1 + [ json_name = "proposal_slot" ]; + + google.protobuf.UInt64Value validator_index = 2 + [ json_name = "validator_index" ]; + + string fee_recipient = 3 [ json_name = "fee_recipient" ]; + + google.protobuf.UInt64Value gas_limit = 4 [ json_name = "gas_limit" ]; +} + +// SignedProposerPreferences wraps ProposerPreferences with the proposer's +// signature. +message SignedProposerPreferences { + ProposerPreferences message = 1; + + string signature = 2; +} diff --git a/pkg/proto/eth/v2/beacon_block.pb.go b/pkg/proto/eth/v2/beacon_block.pb.go index fc8a3f90a..54867956a 100644 --- a/pkg/proto/eth/v2/beacon_block.pb.go +++ b/pkg/proto/eth/v2/beacon_block.pb.go @@ -411,6 +411,61 @@ func (x *SignedBeaconBlockFulu) GetSignature() string { return "" } +type SignedBeaconBlockGloas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message *BeaconBlockGloas `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignedBeaconBlockGloas) Reset() { + *x = SignedBeaconBlockGloas{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedBeaconBlockGloas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedBeaconBlockGloas) ProtoMessage() {} + +func (x *SignedBeaconBlockGloas) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedBeaconBlockGloas.ProtoReflect.Descriptor instead. +func (*SignedBeaconBlockGloas) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{7} +} + +func (x *SignedBeaconBlockGloas) GetMessage() *BeaconBlockGloas { + if x != nil { + return x.Message + } + return nil +} + +func (x *SignedBeaconBlockGloas) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + type SignedBlindedBeaconBlockBellatrix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -423,7 +478,7 @@ type SignedBlindedBeaconBlockBellatrix struct { func (x *SignedBlindedBeaconBlockBellatrix) Reset() { *x = SignedBlindedBeaconBlockBellatrix{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[7] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -436,7 +491,7 @@ func (x *SignedBlindedBeaconBlockBellatrix) String() string { func (*SignedBlindedBeaconBlockBellatrix) ProtoMessage() {} func (x *SignedBlindedBeaconBlockBellatrix) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[7] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -449,7 +504,7 @@ func (x *SignedBlindedBeaconBlockBellatrix) ProtoReflect() protoreflect.Message // Deprecated: Use SignedBlindedBeaconBlockBellatrix.ProtoReflect.Descriptor instead. func (*SignedBlindedBeaconBlockBellatrix) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{7} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{8} } func (x *SignedBlindedBeaconBlockBellatrix) GetMessage() *BlindedBeaconBlockBellatrix { @@ -478,7 +533,7 @@ type SignedBlindedBeaconBlockBellatrixV2 struct { func (x *SignedBlindedBeaconBlockBellatrixV2) Reset() { *x = SignedBlindedBeaconBlockBellatrixV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[8] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +546,7 @@ func (x *SignedBlindedBeaconBlockBellatrixV2) String() string { func (*SignedBlindedBeaconBlockBellatrixV2) ProtoMessage() {} func (x *SignedBlindedBeaconBlockBellatrixV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[8] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +559,7 @@ func (x *SignedBlindedBeaconBlockBellatrixV2) ProtoReflect() protoreflect.Messag // Deprecated: Use SignedBlindedBeaconBlockBellatrixV2.ProtoReflect.Descriptor instead. func (*SignedBlindedBeaconBlockBellatrixV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{8} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{9} } func (x *SignedBlindedBeaconBlockBellatrixV2) GetMessage() *BlindedBeaconBlockBellatrixV2 { @@ -533,7 +588,7 @@ type SignedBlindedBeaconBlockCapella struct { func (x *SignedBlindedBeaconBlockCapella) Reset() { *x = SignedBlindedBeaconBlockCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[9] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -546,7 +601,7 @@ func (x *SignedBlindedBeaconBlockCapella) String() string { func (*SignedBlindedBeaconBlockCapella) ProtoMessage() {} func (x *SignedBlindedBeaconBlockCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[9] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -559,7 +614,7 @@ func (x *SignedBlindedBeaconBlockCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use SignedBlindedBeaconBlockCapella.ProtoReflect.Descriptor instead. func (*SignedBlindedBeaconBlockCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{10} } func (x *SignedBlindedBeaconBlockCapella) GetMessage() *BlindedBeaconBlockCapella { @@ -588,7 +643,7 @@ type SignedBlindedBeaconBlockCapellaV2 struct { func (x *SignedBlindedBeaconBlockCapellaV2) Reset() { *x = SignedBlindedBeaconBlockCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[10] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -601,7 +656,7 @@ func (x *SignedBlindedBeaconBlockCapellaV2) String() string { func (*SignedBlindedBeaconBlockCapellaV2) ProtoMessage() {} func (x *SignedBlindedBeaconBlockCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[10] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -614,7 +669,7 @@ func (x *SignedBlindedBeaconBlockCapellaV2) ProtoReflect() protoreflect.Message // Deprecated: Use SignedBlindedBeaconBlockCapellaV2.ProtoReflect.Descriptor instead. func (*SignedBlindedBeaconBlockCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{11} } func (x *SignedBlindedBeaconBlockCapellaV2) GetMessage() *BlindedBeaconBlockCapellaV2 { @@ -643,7 +698,7 @@ type SignedBeaconBlockAltair struct { func (x *SignedBeaconBlockAltair) Reset() { *x = SignedBeaconBlockAltair{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[11] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -656,7 +711,7 @@ func (x *SignedBeaconBlockAltair) String() string { func (*SignedBeaconBlockAltair) ProtoMessage() {} func (x *SignedBeaconBlockAltair) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[11] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -669,7 +724,7 @@ func (x *SignedBeaconBlockAltair) ProtoReflect() protoreflect.Message { // Deprecated: Use SignedBeaconBlockAltair.ProtoReflect.Descriptor instead. func (*SignedBeaconBlockAltair) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{12} } func (x *SignedBeaconBlockAltair) GetMessage() *BeaconBlockAltair { @@ -698,7 +753,7 @@ type SignedBeaconBlockAltairV2 struct { func (x *SignedBeaconBlockAltairV2) Reset() { *x = SignedBeaconBlockAltairV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[12] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -711,7 +766,7 @@ func (x *SignedBeaconBlockAltairV2) String() string { func (*SignedBeaconBlockAltairV2) ProtoMessage() {} func (x *SignedBeaconBlockAltairV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[12] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -724,7 +779,7 @@ func (x *SignedBeaconBlockAltairV2) ProtoReflect() protoreflect.Message { // Deprecated: Use SignedBeaconBlockAltairV2.ProtoReflect.Descriptor instead. func (*SignedBeaconBlockAltairV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{13} } func (x *SignedBeaconBlockAltairV2) GetMessage() *BeaconBlockAltairV2 { @@ -756,7 +811,7 @@ type BeaconBlockBellatrix struct { func (x *BeaconBlockBellatrix) Reset() { *x = BeaconBlockBellatrix{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[13] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -769,7 +824,7 @@ func (x *BeaconBlockBellatrix) String() string { func (*BeaconBlockBellatrix) ProtoMessage() {} func (x *BeaconBlockBellatrix) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[13] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -782,7 +837,7 @@ func (x *BeaconBlockBellatrix) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBellatrix.ProtoReflect.Descriptor instead. func (*BeaconBlockBellatrix) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{14} } func (x *BeaconBlockBellatrix) GetSlot() uint64 { @@ -835,7 +890,7 @@ type BeaconBlockBellatrixV2 struct { func (x *BeaconBlockBellatrixV2) Reset() { *x = BeaconBlockBellatrixV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[14] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -848,7 +903,7 @@ func (x *BeaconBlockBellatrixV2) String() string { func (*BeaconBlockBellatrixV2) ProtoMessage() {} func (x *BeaconBlockBellatrixV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[14] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -861,7 +916,7 @@ func (x *BeaconBlockBellatrixV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBellatrixV2.ProtoReflect.Descriptor instead. func (*BeaconBlockBellatrixV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{14} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{15} } func (x *BeaconBlockBellatrixV2) GetSlot() *wrapperspb.UInt64Value { @@ -914,7 +969,7 @@ type BlindedBeaconBlockBellatrix struct { func (x *BlindedBeaconBlockBellatrix) Reset() { *x = BlindedBeaconBlockBellatrix{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[15] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -927,7 +982,7 @@ func (x *BlindedBeaconBlockBellatrix) String() string { func (*BlindedBeaconBlockBellatrix) ProtoMessage() {} func (x *BlindedBeaconBlockBellatrix) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[15] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -940,7 +995,7 @@ func (x *BlindedBeaconBlockBellatrix) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockBellatrix.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBellatrix) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{15} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{16} } func (x *BlindedBeaconBlockBellatrix) GetSlot() uint64 { @@ -993,7 +1048,7 @@ type BlindedBeaconBlockBellatrixV2 struct { func (x *BlindedBeaconBlockBellatrixV2) Reset() { *x = BlindedBeaconBlockBellatrixV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[16] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1006,7 +1061,7 @@ func (x *BlindedBeaconBlockBellatrixV2) String() string { func (*BlindedBeaconBlockBellatrixV2) ProtoMessage() {} func (x *BlindedBeaconBlockBellatrixV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[16] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1019,7 +1074,7 @@ func (x *BlindedBeaconBlockBellatrixV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockBellatrixV2.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBellatrixV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{16} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{17} } func (x *BlindedBeaconBlockBellatrixV2) GetSlot() *wrapperspb.UInt64Value { @@ -1072,7 +1127,7 @@ type BeaconBlockCapella struct { func (x *BeaconBlockCapella) Reset() { *x = BeaconBlockCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[17] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1085,7 +1140,7 @@ func (x *BeaconBlockCapella) String() string { func (*BeaconBlockCapella) ProtoMessage() {} func (x *BeaconBlockCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[17] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1098,7 +1153,7 @@ func (x *BeaconBlockCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockCapella.ProtoReflect.Descriptor instead. func (*BeaconBlockCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{17} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{18} } func (x *BeaconBlockCapella) GetSlot() uint64 { @@ -1151,7 +1206,7 @@ type BeaconBlockCapellaV2 struct { func (x *BeaconBlockCapellaV2) Reset() { *x = BeaconBlockCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[18] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1164,7 +1219,7 @@ func (x *BeaconBlockCapellaV2) String() string { func (*BeaconBlockCapellaV2) ProtoMessage() {} func (x *BeaconBlockCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[18] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1177,7 +1232,7 @@ func (x *BeaconBlockCapellaV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockCapellaV2.ProtoReflect.Descriptor instead. func (*BeaconBlockCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{18} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{19} } func (x *BeaconBlockCapellaV2) GetSlot() *wrapperspb.UInt64Value { @@ -1230,7 +1285,7 @@ type BeaconBlockDeneb struct { func (x *BeaconBlockDeneb) Reset() { *x = BeaconBlockDeneb{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[19] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1243,7 +1298,7 @@ func (x *BeaconBlockDeneb) String() string { func (*BeaconBlockDeneb) ProtoMessage() {} func (x *BeaconBlockDeneb) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[19] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1256,7 +1311,7 @@ func (x *BeaconBlockDeneb) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockDeneb.ProtoReflect.Descriptor instead. func (*BeaconBlockDeneb) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{19} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{20} } func (x *BeaconBlockDeneb) GetSlot() *wrapperspb.UInt64Value { @@ -1309,7 +1364,7 @@ type BeaconBlockElectra struct { func (x *BeaconBlockElectra) Reset() { *x = BeaconBlockElectra{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[20] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1322,7 +1377,7 @@ func (x *BeaconBlockElectra) String() string { func (*BeaconBlockElectra) ProtoMessage() {} func (x *BeaconBlockElectra) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[20] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1335,7 +1390,7 @@ func (x *BeaconBlockElectra) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockElectra.ProtoReflect.Descriptor instead. func (*BeaconBlockElectra) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{20} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{21} } func (x *BeaconBlockElectra) GetSlot() *wrapperspb.UInt64Value { @@ -1388,7 +1443,7 @@ type BeaconBlockFulu struct { func (x *BeaconBlockFulu) Reset() { *x = BeaconBlockFulu{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[21] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1401,7 +1456,7 @@ func (x *BeaconBlockFulu) String() string { func (*BeaconBlockFulu) ProtoMessage() {} func (x *BeaconBlockFulu) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[21] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1414,7 +1469,7 @@ func (x *BeaconBlockFulu) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockFulu.ProtoReflect.Descriptor instead. func (*BeaconBlockFulu) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{21} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{22} } func (x *BeaconBlockFulu) GetSlot() *wrapperspb.UInt64Value { @@ -1452,6 +1507,85 @@ func (x *BeaconBlockFulu) GetBody() *BeaconBlockBodyFulu { return nil } +type BeaconBlockGloas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + ProposerIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=proposer_index,proto3" json:"proposer_index,omitempty"` + ParentRoot string `protobuf:"bytes,3,opt,name=parent_root,proto3" json:"parent_root,omitempty"` + StateRoot string `protobuf:"bytes,4,opt,name=state_root,proto3" json:"state_root,omitempty"` + Body *BeaconBlockBodyGloas `protobuf:"bytes,5,opt,name=body,proto3" json:"body,omitempty"` +} + +func (x *BeaconBlockGloas) Reset() { + *x = BeaconBlockGloas{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BeaconBlockGloas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BeaconBlockGloas) ProtoMessage() {} + +func (x *BeaconBlockGloas) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BeaconBlockGloas.ProtoReflect.Descriptor instead. +func (*BeaconBlockGloas) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{23} +} + +func (x *BeaconBlockGloas) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *BeaconBlockGloas) GetProposerIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ProposerIndex + } + return nil +} + +func (x *BeaconBlockGloas) GetParentRoot() string { + if x != nil { + return x.ParentRoot + } + return "" +} + +func (x *BeaconBlockGloas) GetStateRoot() string { + if x != nil { + return x.StateRoot + } + return "" +} + +func (x *BeaconBlockGloas) GetBody() *BeaconBlockBodyGloas { + if x != nil { + return x.Body + } + return nil +} + type BlindedBeaconBlockCapella struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1467,7 +1601,7 @@ type BlindedBeaconBlockCapella struct { func (x *BlindedBeaconBlockCapella) Reset() { *x = BlindedBeaconBlockCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[22] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1480,7 +1614,7 @@ func (x *BlindedBeaconBlockCapella) String() string { func (*BlindedBeaconBlockCapella) ProtoMessage() {} func (x *BlindedBeaconBlockCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[22] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1493,7 +1627,7 @@ func (x *BlindedBeaconBlockCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockCapella.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{22} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{24} } func (x *BlindedBeaconBlockCapella) GetSlot() uint64 { @@ -1546,7 +1680,7 @@ type BlindedBeaconBlockCapellaV2 struct { func (x *BlindedBeaconBlockCapellaV2) Reset() { *x = BlindedBeaconBlockCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[23] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1559,7 +1693,7 @@ func (x *BlindedBeaconBlockCapellaV2) String() string { func (*BlindedBeaconBlockCapellaV2) ProtoMessage() {} func (x *BlindedBeaconBlockCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[23] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1572,7 +1706,7 @@ func (x *BlindedBeaconBlockCapellaV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockCapellaV2.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{23} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{25} } func (x *BlindedBeaconBlockCapellaV2) GetSlot() *wrapperspb.UInt64Value { @@ -1625,7 +1759,7 @@ type BeaconBlockAltair struct { func (x *BeaconBlockAltair) Reset() { *x = BeaconBlockAltair{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[24] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1638,7 +1772,7 @@ func (x *BeaconBlockAltair) String() string { func (*BeaconBlockAltair) ProtoMessage() {} func (x *BeaconBlockAltair) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[24] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1651,7 +1785,7 @@ func (x *BeaconBlockAltair) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockAltair.ProtoReflect.Descriptor instead. func (*BeaconBlockAltair) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{24} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{26} } func (x *BeaconBlockAltair) GetSlot() uint64 { @@ -1704,7 +1838,7 @@ type BeaconBlockAltairV2 struct { func (x *BeaconBlockAltairV2) Reset() { *x = BeaconBlockAltairV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[25] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1717,7 +1851,7 @@ func (x *BeaconBlockAltairV2) String() string { func (*BeaconBlockAltairV2) ProtoMessage() {} func (x *BeaconBlockAltairV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[25] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1730,7 +1864,7 @@ func (x *BeaconBlockAltairV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockAltairV2.ProtoReflect.Descriptor instead. func (*BeaconBlockAltairV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{25} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{27} } func (x *BeaconBlockAltairV2) GetSlot() *wrapperspb.UInt64Value { @@ -1788,7 +1922,7 @@ type BeaconBlockBodyBellatrix struct { func (x *BeaconBlockBodyBellatrix) Reset() { *x = BeaconBlockBodyBellatrix{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[26] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1801,7 +1935,7 @@ func (x *BeaconBlockBodyBellatrix) String() string { func (*BeaconBlockBodyBellatrix) ProtoMessage() {} func (x *BeaconBlockBodyBellatrix) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[26] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1814,7 +1948,7 @@ func (x *BeaconBlockBodyBellatrix) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyBellatrix.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyBellatrix) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{26} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{28} } func (x *BeaconBlockBodyBellatrix) GetRandaoReveal() string { @@ -1907,7 +2041,7 @@ type BeaconBlockBodyBellatrixV2 struct { func (x *BeaconBlockBodyBellatrixV2) Reset() { *x = BeaconBlockBodyBellatrixV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[27] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1920,7 +2054,7 @@ func (x *BeaconBlockBodyBellatrixV2) String() string { func (*BeaconBlockBodyBellatrixV2) ProtoMessage() {} func (x *BeaconBlockBodyBellatrixV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[27] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1933,7 +2067,7 @@ func (x *BeaconBlockBodyBellatrixV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyBellatrixV2.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyBellatrixV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{27} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{29} } func (x *BeaconBlockBodyBellatrixV2) GetRandaoReveal() string { @@ -2026,7 +2160,7 @@ type BlindedBeaconBlockBodyBellatrix struct { func (x *BlindedBeaconBlockBodyBellatrix) Reset() { *x = BlindedBeaconBlockBodyBellatrix{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[28] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2039,7 +2173,7 @@ func (x *BlindedBeaconBlockBodyBellatrix) String() string { func (*BlindedBeaconBlockBodyBellatrix) ProtoMessage() {} func (x *BlindedBeaconBlockBodyBellatrix) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[28] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2052,7 +2186,7 @@ func (x *BlindedBeaconBlockBodyBellatrix) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockBodyBellatrix.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBodyBellatrix) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{28} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{30} } func (x *BlindedBeaconBlockBodyBellatrix) GetRandaoReveal() string { @@ -2145,7 +2279,7 @@ type BlindedBeaconBlockBodyBellatrixV2 struct { func (x *BlindedBeaconBlockBodyBellatrixV2) Reset() { *x = BlindedBeaconBlockBodyBellatrixV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[29] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2158,7 +2292,7 @@ func (x *BlindedBeaconBlockBodyBellatrixV2) String() string { func (*BlindedBeaconBlockBodyBellatrixV2) ProtoMessage() {} func (x *BlindedBeaconBlockBodyBellatrixV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[29] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2171,7 +2305,7 @@ func (x *BlindedBeaconBlockBodyBellatrixV2) ProtoReflect() protoreflect.Message // Deprecated: Use BlindedBeaconBlockBodyBellatrixV2.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBodyBellatrixV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{29} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{31} } func (x *BlindedBeaconBlockBodyBellatrixV2) GetRandaoReveal() string { @@ -2265,7 +2399,7 @@ type BeaconBlockBodyCapella struct { func (x *BeaconBlockBodyCapella) Reset() { *x = BeaconBlockBodyCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[30] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2278,7 +2412,7 @@ func (x *BeaconBlockBodyCapella) String() string { func (*BeaconBlockBodyCapella) ProtoMessage() {} func (x *BeaconBlockBodyCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[30] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2291,7 +2425,7 @@ func (x *BeaconBlockBodyCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyCapella.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{30} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{32} } func (x *BeaconBlockBodyCapella) GetRandaoReveal() string { @@ -2392,7 +2526,7 @@ type BeaconBlockBodyCapellaV2 struct { func (x *BeaconBlockBodyCapellaV2) Reset() { *x = BeaconBlockBodyCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[31] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2405,7 +2539,7 @@ func (x *BeaconBlockBodyCapellaV2) String() string { func (*BeaconBlockBodyCapellaV2) ProtoMessage() {} func (x *BeaconBlockBodyCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[31] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2418,7 +2552,7 @@ func (x *BeaconBlockBodyCapellaV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyCapellaV2.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{31} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{33} } func (x *BeaconBlockBodyCapellaV2) GetRandaoReveal() string { @@ -2520,7 +2654,7 @@ type BeaconBlockBodyDeneb struct { func (x *BeaconBlockBodyDeneb) Reset() { *x = BeaconBlockBodyDeneb{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[32] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2533,7 +2667,7 @@ func (x *BeaconBlockBodyDeneb) String() string { func (*BeaconBlockBodyDeneb) ProtoMessage() {} func (x *BeaconBlockBodyDeneb) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[32] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2546,7 +2680,7 @@ func (x *BeaconBlockBodyDeneb) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyDeneb.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyDeneb) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{32} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{34} } func (x *BeaconBlockBodyDeneb) GetRandaoReveal() string { @@ -2656,7 +2790,7 @@ type BeaconBlockBodyElectra struct { func (x *BeaconBlockBodyElectra) Reset() { *x = BeaconBlockBodyElectra{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[33] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2669,7 +2803,7 @@ func (x *BeaconBlockBodyElectra) String() string { func (*BeaconBlockBodyElectra) ProtoMessage() {} func (x *BeaconBlockBodyElectra) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[33] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2682,7 +2816,7 @@ func (x *BeaconBlockBodyElectra) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyElectra.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyElectra) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{33} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{35} } func (x *BeaconBlockBodyElectra) GetRandaoReveal() string { @@ -2799,7 +2933,7 @@ type BeaconBlockBodyFulu struct { func (x *BeaconBlockBodyFulu) Reset() { *x = BeaconBlockBodyFulu{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[34] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2812,7 +2946,7 @@ func (x *BeaconBlockBodyFulu) String() string { func (*BeaconBlockBodyFulu) ProtoMessage() {} func (x *BeaconBlockBodyFulu) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[34] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2825,7 +2959,7 @@ func (x *BeaconBlockBodyFulu) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyFulu.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyFulu) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{34} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{36} } func (x *BeaconBlockBodyFulu) GetRandaoReveal() string { @@ -2919,6 +3053,170 @@ func (x *BeaconBlockBodyFulu) GetExecutionRequests() *v1.ElectraExecutionRequest return nil } +type BeaconBlockBodyGloas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RandaoReveal string `protobuf:"bytes,1,opt,name=randao_reveal,proto3" json:"randao_reveal,omitempty"` + Eth1Data *v1.Eth1Data `protobuf:"bytes,2,opt,name=eth1_data,proto3" json:"eth1_data,omitempty"` + Graffiti string `protobuf:"bytes,3,opt,name=graffiti,proto3" json:"graffiti,omitempty"` + ProposerSlashings []*v1.ProposerSlashing `protobuf:"bytes,4,rep,name=proposer_slashings,proto3" json:"proposer_slashings,omitempty"` + AttesterSlashings []*v1.AttesterSlashing `protobuf:"bytes,5,rep,name=attester_slashings,proto3" json:"attester_slashings,omitempty"` + Attestations []*v1.Attestation `protobuf:"bytes,6,rep,name=attestations,proto3" json:"attestations,omitempty"` + Deposits []*v1.Deposit `protobuf:"bytes,7,rep,name=deposits,proto3" json:"deposits,omitempty"` + VoluntaryExits []*v1.SignedVoluntaryExit `protobuf:"bytes,8,rep,name=voluntary_exits,proto3" json:"voluntary_exits,omitempty"` + SyncAggregate *v1.SyncAggregate `protobuf:"bytes,9,opt,name=sync_aggregate,proto3" json:"sync_aggregate,omitempty"` + // Pre-ePBS: execution payload inline in block body. + ExecutionPayload *v1.ExecutionPayloadGloas `protobuf:"bytes,10,opt,name=execution_payload,proto3" json:"execution_payload,omitempty"` + BlsToExecutionChanges []*SignedBLSToExecutionChange `protobuf:"bytes,11,rep,name=bls_to_execution_changes,proto3" json:"bls_to_execution_changes,omitempty"` + // Pre-ePBS: blob KZG commitments inline in block body. + BlobKzgCommitments []string `protobuf:"bytes,12,rep,name=blob_kzg_commitments,proto3" json:"blob_kzg_commitments,omitempty"` + // Pre-ePBS: execution requests inline in block body. + ExecutionRequests *v1.ElectraExecutionRequests `protobuf:"bytes,13,opt,name=execution_requests,proto3" json:"execution_requests,omitempty"` + // EIP-7732 ePBS: Builder's bid (replaces execution_payload when ePBS is active). + SignedExecutionPayloadBid *v1.SignedExecutionPayloadBid `protobuf:"bytes,14,opt,name=signed_execution_payload_bid,proto3" json:"signed_execution_payload_bid,omitempty"` + // EIP-7732 ePBS: Aggregated PTC attestations (max 4 per block). + PayloadAttestations []*v1.PayloadAttestation `protobuf:"bytes,15,rep,name=payload_attestations,proto3" json:"payload_attestations,omitempty"` +} + +func (x *BeaconBlockBodyGloas) Reset() { + *x = BeaconBlockBodyGloas{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BeaconBlockBodyGloas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BeaconBlockBodyGloas) ProtoMessage() {} + +func (x *BeaconBlockBodyGloas) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BeaconBlockBodyGloas.ProtoReflect.Descriptor instead. +func (*BeaconBlockBodyGloas) Descriptor() ([]byte, []int) { + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{37} +} + +func (x *BeaconBlockBodyGloas) GetRandaoReveal() string { + if x != nil { + return x.RandaoReveal + } + return "" +} + +func (x *BeaconBlockBodyGloas) GetEth1Data() *v1.Eth1Data { + if x != nil { + return x.Eth1Data + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetGraffiti() string { + if x != nil { + return x.Graffiti + } + return "" +} + +func (x *BeaconBlockBodyGloas) GetProposerSlashings() []*v1.ProposerSlashing { + if x != nil { + return x.ProposerSlashings + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetAttesterSlashings() []*v1.AttesterSlashing { + if x != nil { + return x.AttesterSlashings + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetAttestations() []*v1.Attestation { + if x != nil { + return x.Attestations + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetDeposits() []*v1.Deposit { + if x != nil { + return x.Deposits + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetVoluntaryExits() []*v1.SignedVoluntaryExit { + if x != nil { + return x.VoluntaryExits + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetSyncAggregate() *v1.SyncAggregate { + if x != nil { + return x.SyncAggregate + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetExecutionPayload() *v1.ExecutionPayloadGloas { + if x != nil { + return x.ExecutionPayload + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetBlsToExecutionChanges() []*SignedBLSToExecutionChange { + if x != nil { + return x.BlsToExecutionChanges + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetBlobKzgCommitments() []string { + if x != nil { + return x.BlobKzgCommitments + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetExecutionRequests() *v1.ElectraExecutionRequests { + if x != nil { + return x.ExecutionRequests + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetSignedExecutionPayloadBid() *v1.SignedExecutionPayloadBid { + if x != nil { + return x.SignedExecutionPayloadBid + } + return nil +} + +func (x *BeaconBlockBodyGloas) GetPayloadAttestations() []*v1.PayloadAttestation { + if x != nil { + return x.PayloadAttestations + } + return nil +} + type BlindedBeaconBlockBodyCapella struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2940,7 +3238,7 @@ type BlindedBeaconBlockBodyCapella struct { func (x *BlindedBeaconBlockBodyCapella) Reset() { *x = BlindedBeaconBlockBodyCapella{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[35] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2953,7 +3251,7 @@ func (x *BlindedBeaconBlockBodyCapella) String() string { func (*BlindedBeaconBlockBodyCapella) ProtoMessage() {} func (x *BlindedBeaconBlockBodyCapella) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[35] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2966,7 +3264,7 @@ func (x *BlindedBeaconBlockBodyCapella) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockBodyCapella.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBodyCapella) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{35} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{38} } func (x *BlindedBeaconBlockBodyCapella) GetRandaoReveal() string { @@ -3067,7 +3365,7 @@ type BlindedBeaconBlockBodyCapellaV2 struct { func (x *BlindedBeaconBlockBodyCapellaV2) Reset() { *x = BlindedBeaconBlockBodyCapellaV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[36] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3080,7 +3378,7 @@ func (x *BlindedBeaconBlockBodyCapellaV2) String() string { func (*BlindedBeaconBlockBodyCapellaV2) ProtoMessage() {} func (x *BlindedBeaconBlockBodyCapellaV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[36] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3093,7 +3391,7 @@ func (x *BlindedBeaconBlockBodyCapellaV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BlindedBeaconBlockBodyCapellaV2.ProtoReflect.Descriptor instead. func (*BlindedBeaconBlockBodyCapellaV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{36} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{39} } func (x *BlindedBeaconBlockBodyCapellaV2) GetRandaoReveal() string { @@ -3193,7 +3491,7 @@ type BeaconBlockBodyAltair struct { func (x *BeaconBlockBodyAltair) Reset() { *x = BeaconBlockBodyAltair{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[37] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3206,7 +3504,7 @@ func (x *BeaconBlockBodyAltair) String() string { func (*BeaconBlockBodyAltair) ProtoMessage() {} func (x *BeaconBlockBodyAltair) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[37] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3219,7 +3517,7 @@ func (x *BeaconBlockBodyAltair) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyAltair.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyAltair) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{37} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{40} } func (x *BeaconBlockBodyAltair) GetRandaoReveal() string { @@ -3305,7 +3603,7 @@ type BeaconBlockBodyAltairV2 struct { func (x *BeaconBlockBodyAltairV2) Reset() { *x = BeaconBlockBodyAltairV2{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[38] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3318,7 +3616,7 @@ func (x *BeaconBlockBodyAltairV2) String() string { func (*BeaconBlockBodyAltairV2) ProtoMessage() {} func (x *BeaconBlockBodyAltairV2) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[38] + mi := &file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3331,7 +3629,7 @@ func (x *BeaconBlockBodyAltairV2) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlockBodyAltairV2.ProtoReflect.Descriptor instead. func (*BeaconBlockBodyAltairV2) Descriptor() ([]byte, []int) { - return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{38} + return file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP(), []int{41} } func (x *BeaconBlockBodyAltairV2) GetRandaoReveal() string { @@ -3414,143 +3712,125 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x32, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x77, 0x0a, 0x1a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, - 0x72, 0x69, 0x78, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, - 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x7b, - 0x0a, 0x1c, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x3d, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, - 0x69, 0x78, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x73, 0x0a, 0x18, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x22, 0x77, 0x0a, 0x1a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x3b, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, - 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x16, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, - 0x6e, 0x65, 0x62, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, - 0x6e, 0x65, 0x62, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x22, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, + 0x76, 0x32, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x77, 0x0a, 0x1a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x3b, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x7b, 0x0a, 0x1c, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, + 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x73, 0x0a, 0x18, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, + 0x61, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, + 0x6c, 0x6c, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x73, 0x0a, 0x18, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, - 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, - 0x6d, 0x0a, 0x15, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x77, 0x0a, 0x1a, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, + 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x85, - 0x01, 0x0a, 0x21, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, + 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x37, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x73, 0x0a, 0x18, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, + 0x12, 0x39, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x65, 0x63, 0x74, + 0x72, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6d, 0x0a, 0x15, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x75, + 0x6c, 0x75, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, + 0x75, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6c, 0x6f, + 0x61, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6c, 0x6f, + 0x61, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x21, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, + 0x42, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x22, 0x89, 0x01, 0x0a, 0x23, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, + 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x12, 0x42, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x23, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x44, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, - 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x1f, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, - 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, - 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x40, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x21, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x42, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, - 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, - 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x71, - 0x0a, 0x17, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x81, 0x01, + 0x0a, 0x1f, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, + 0x61, 0x12, 0x40, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x22, 0x75, 0x0a, 0x19, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x12, 0x3a, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, - 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x14, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x39, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8f, 0x02, 0x0a, 0x16, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, - 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x3b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xdd, 0x01, 0x0a, - 0x1b, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x65, 0x22, 0x85, 0x01, 0x0a, 0x21, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, + 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x42, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, + 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x71, 0x0a, 0x17, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, + 0x74, 0x61, 0x69, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, + 0x6c, 0x74, 0x61, 0x69, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x75, 0x0a, 0x19, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x14, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, @@ -3559,13 +3839,74 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x62, 0x6f, - 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, - 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x9d, 0x02, 0x0a, - 0x1d, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x30, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8f, 0x02, 0x0a, 0x16, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, + 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, + 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x1b, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, + 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x9d, 0x02, 0x0a, 0x1d, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, + 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, + 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xcb, 0x01, 0x0a, 0x12, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8b, 0x02, 0x0a, 0x14, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, @@ -3577,75 +3918,61 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, - 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xcb, 0x01, 0x0a, - 0x12, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, - 0x6c, 0x6c, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x04, 0x62, + 0x6f, 0x64, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x10, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x44, 0x65, + 0x6e, 0x65, 0x62, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x87, 0x02, 0x0a, 0x12, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, + 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x52, 0x04, 0x62, + 0x6f, 0x64, 0x79, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x12, 0x37, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, - 0x65, 0x6c, 0x6c, 0x61, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8b, 0x02, 0x0a, 0x14, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, - 0x61, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x0a, - 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, - 0x56, 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x10, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x30, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, - 0x6f, 0x64, 0x79, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x87, - 0x02, 0x0a, 0x12, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, - 0x65, 0x63, 0x74, 0x72, 0x61, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x37, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, - 0x72, 0x61, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x12, 0x30, 0x0a, 0x04, + 0x74, 0x12, 0x34, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x75, 0x6c, + 0x75, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x10, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, @@ -3657,113 +3984,73 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, - 0x64, 0x79, 0x46, 0x75, 0x6c, 0x75, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xd9, 0x01, 0x0a, - 0x19, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, - 0x6c, 0x61, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x99, 0x02, 0x0a, 0x1b, 0x42, 0x6c, 0x69, - 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, - 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, - 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x04, - 0x62, 0x6f, 0x64, 0x79, 0x22, 0xc9, 0x01, 0x0a, 0x11, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x26, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x22, 0x89, 0x02, 0x0a, 0x13, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, - 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xfc, 0x04, 0x0a, - 0x18, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, - 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, - 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, - 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, - 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, - 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, - 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, - 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, - 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, - 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, - 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, - 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, - 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x4b, - 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x80, 0x05, 0x0a, 0x1a, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, - 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, + 0x64, 0x79, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xd9, 0x01, + 0x0a, 0x19, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, + 0x6c, 0x6c, 0x61, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x99, 0x02, 0x0a, 0x1b, 0x42, 0x6c, + 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xc9, 0x01, 0x0a, 0x11, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x22, 0x89, 0x02, 0x0a, 0x13, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, + 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xfc, 0x04, + 0x0a, 0x18, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, + 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, @@ -3797,14 +4084,137 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, - 0x4d, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, + 0x4b, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x32, 0x52, 0x11, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x97, - 0x05, 0x0a, 0x1f, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, - 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, + 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x80, 0x05, 0x0a, + 0x1a, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, + 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, + 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, + 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, + 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, + 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, + 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, + 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, + 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, + 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x32, 0x52, 0x11, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x97, 0x05, 0x0a, 0x1f, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, + 0x72, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, + 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, + 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, + 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, + 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, + 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, + 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, + 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, + 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x9b, 0x05, 0x0a, 0x21, 0x42, 0x6c, + 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, + 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, + 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, + 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, + 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, + 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x32, 0x52, 0x18, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xe6, 0x05, 0x0a, 0x16, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, + 0x6c, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, @@ -3837,56 +4247,116 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x18, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x9b, 0x05, 0x0a, 0x21, 0x42, 0x6c, 0x69, - 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, - 0x6f, 0x64, 0x79, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x12, 0x24, - 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, - 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, - 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, - 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, - 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, - 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, - 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, - 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, - 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x32, 0x52, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xe6, 0x05, 0x0a, 0x16, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, + 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x22, 0xea, 0x05, 0x0a, 0x18, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x24, 0x0a, + 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, + 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, + 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, + 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, + 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, + 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, + 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x70, 0x65, + 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, + 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x96, 0x06, + 0x0a, 0x14, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, + 0x79, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, + 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, + 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, + 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, + 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, + 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, + 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, + 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, + 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, + 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xf1, 0x06, 0x0a, 0x16, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, @@ -3924,204 +4394,6 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, - 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, - 0xea, 0x05, 0x0a, 0x18, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, - 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, - 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, - 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, - 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, - 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, - 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, - 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, - 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, - 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x12, 0x54, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x70, 0x65, 0x6c, - 0x6c, 0x61, 0x56, 0x32, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, - 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, - 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x96, 0x06, 0x0a, - 0x14, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, - 0x44, 0x65, 0x6e, 0x65, 0x62, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, - 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, - 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, - 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, - 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, - 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, - 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, - 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, - 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, - 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, - 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x12, 0x32, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xf1, 0x06, 0x0a, 0x16, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, - 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, - 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, - 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, - 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, - 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, - 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x32, - 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x6c, - 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x55, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x65, - 0x63, 0x74, 0x72, 0x61, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xee, 0x06, 0x0a, 0x13, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x75, 0x6c, - 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, - 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, - 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, - 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, - 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, - 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, @@ -4138,58 +4410,9 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x81, 0x06, 0x0a, 0x1d, 0x42, - 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x24, 0x0a, 0x0d, - 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, - 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, - 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, - 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, - 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, - 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, - 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, - 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x12, 0x66, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x52, - 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x85, - 0x06, 0x0a, 0x1f, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, - 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, + 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xee, 0x06, 0x0a, 0x13, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x75, + 0x6c, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, @@ -4222,93 +4445,264 @@ var file_pkg_proto_eth_v2_beacon_block_proto_rawDesc = []byte{ 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, + 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x32, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, + 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xae, 0x08, 0x0a, 0x14, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x47, + 0x6c, 0x6f, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, + 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, + 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, + 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, + 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, + 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, + 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, + 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x62, + 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x32, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, + 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x6a, 0x0a, 0x1c, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x52, 0x1c, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x12, 0x53, 0x0a, 0x14, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x81, 0x06, 0x0a, + 0x1d, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x12, 0x24, + 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, + 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, + 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, + 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, + 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, + 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, + 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x12, 0x66, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, + 0x61, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x18, 0x62, + 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x22, 0x85, 0x06, 0x0a, 0x1f, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x61, 0x70, 0x65, 0x6c, + 0x6c, 0x61, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, + 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, + 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, + 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, + 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, + 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, + 0x45, 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, + 0x65, 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x18, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x61, - 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x62, 0x6c, - 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xac, 0x04, 0x0a, 0x15, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, - 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, - 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x67, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, - 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, - 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, - 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0xae, 0x04, 0x0a, 0x17, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, - 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, - 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, - 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, + 0x64, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x18, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, + 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xac, 0x04, 0x0a, 0x15, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, + 0x69, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, + 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, + 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, 0x31, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, - 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, - 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, - 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, - 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x74, 0x68, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, + 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, + 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, + 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x22, 0xae, 0x04, 0x0a, 0x17, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x41, 0x6c, 0x74, 0x61, 0x69, + 0x72, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x5f, 0x72, 0x65, + 0x76, 0x65, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x64, + 0x61, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x74, 0x68, + 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x31, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x74, 0x68, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, + 0x0a, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x67, 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, + 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, + 0x78, 0x69, 0x74, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, + 0x78, 0x69, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, + 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4323,7 +4717,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_rawDescGZIP() []byte { return file_pkg_proto_eth_v2_beacon_block_proto_rawDescData } -var file_pkg_proto_eth_v2_beacon_block_proto_msgTypes = make([]protoimpl.MessageInfo, 39) +var file_pkg_proto_eth_v2_beacon_block_proto_msgTypes = make([]protoimpl.MessageInfo, 42) var file_pkg_proto_eth_v2_beacon_block_proto_goTypes = []any{ (*SignedBeaconBlockBellatrix)(nil), // 0: xatu.eth.v2.SignedBeaconBlockBellatrix (*SignedBeaconBlockBellatrixV2)(nil), // 1: xatu.eth.v2.SignedBeaconBlockBellatrixV2 @@ -4332,218 +4726,240 @@ var file_pkg_proto_eth_v2_beacon_block_proto_goTypes = []any{ (*SignedBeaconBlockDeneb)(nil), // 4: xatu.eth.v2.SignedBeaconBlockDeneb (*SignedBeaconBlockElectra)(nil), // 5: xatu.eth.v2.SignedBeaconBlockElectra (*SignedBeaconBlockFulu)(nil), // 6: xatu.eth.v2.SignedBeaconBlockFulu - (*SignedBlindedBeaconBlockBellatrix)(nil), // 7: xatu.eth.v2.SignedBlindedBeaconBlockBellatrix - (*SignedBlindedBeaconBlockBellatrixV2)(nil), // 8: xatu.eth.v2.SignedBlindedBeaconBlockBellatrixV2 - (*SignedBlindedBeaconBlockCapella)(nil), // 9: xatu.eth.v2.SignedBlindedBeaconBlockCapella - (*SignedBlindedBeaconBlockCapellaV2)(nil), // 10: xatu.eth.v2.SignedBlindedBeaconBlockCapellaV2 - (*SignedBeaconBlockAltair)(nil), // 11: xatu.eth.v2.SignedBeaconBlockAltair - (*SignedBeaconBlockAltairV2)(nil), // 12: xatu.eth.v2.SignedBeaconBlockAltairV2 - (*BeaconBlockBellatrix)(nil), // 13: xatu.eth.v2.BeaconBlockBellatrix - (*BeaconBlockBellatrixV2)(nil), // 14: xatu.eth.v2.BeaconBlockBellatrixV2 - (*BlindedBeaconBlockBellatrix)(nil), // 15: xatu.eth.v2.BlindedBeaconBlockBellatrix - (*BlindedBeaconBlockBellatrixV2)(nil), // 16: xatu.eth.v2.BlindedBeaconBlockBellatrixV2 - (*BeaconBlockCapella)(nil), // 17: xatu.eth.v2.BeaconBlockCapella - (*BeaconBlockCapellaV2)(nil), // 18: xatu.eth.v2.BeaconBlockCapellaV2 - (*BeaconBlockDeneb)(nil), // 19: xatu.eth.v2.BeaconBlockDeneb - (*BeaconBlockElectra)(nil), // 20: xatu.eth.v2.BeaconBlockElectra - (*BeaconBlockFulu)(nil), // 21: xatu.eth.v2.BeaconBlockFulu - (*BlindedBeaconBlockCapella)(nil), // 22: xatu.eth.v2.BlindedBeaconBlockCapella - (*BlindedBeaconBlockCapellaV2)(nil), // 23: xatu.eth.v2.BlindedBeaconBlockCapellaV2 - (*BeaconBlockAltair)(nil), // 24: xatu.eth.v2.BeaconBlockAltair - (*BeaconBlockAltairV2)(nil), // 25: xatu.eth.v2.BeaconBlockAltairV2 - (*BeaconBlockBodyBellatrix)(nil), // 26: xatu.eth.v2.BeaconBlockBodyBellatrix - (*BeaconBlockBodyBellatrixV2)(nil), // 27: xatu.eth.v2.BeaconBlockBodyBellatrixV2 - (*BlindedBeaconBlockBodyBellatrix)(nil), // 28: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix - (*BlindedBeaconBlockBodyBellatrixV2)(nil), // 29: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2 - (*BeaconBlockBodyCapella)(nil), // 30: xatu.eth.v2.BeaconBlockBodyCapella - (*BeaconBlockBodyCapellaV2)(nil), // 31: xatu.eth.v2.BeaconBlockBodyCapellaV2 - (*BeaconBlockBodyDeneb)(nil), // 32: xatu.eth.v2.BeaconBlockBodyDeneb - (*BeaconBlockBodyElectra)(nil), // 33: xatu.eth.v2.BeaconBlockBodyElectra - (*BeaconBlockBodyFulu)(nil), // 34: xatu.eth.v2.BeaconBlockBodyFulu - (*BlindedBeaconBlockBodyCapella)(nil), // 35: xatu.eth.v2.BlindedBeaconBlockBodyCapella - (*BlindedBeaconBlockBodyCapellaV2)(nil), // 36: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2 - (*BeaconBlockBodyAltair)(nil), // 37: xatu.eth.v2.BeaconBlockBodyAltair - (*BeaconBlockBodyAltairV2)(nil), // 38: xatu.eth.v2.BeaconBlockBodyAltairV2 - (*wrapperspb.UInt64Value)(nil), // 39: google.protobuf.UInt64Value - (*v1.Eth1Data)(nil), // 40: xatu.eth.v1.Eth1Data - (*v1.ProposerSlashing)(nil), // 41: xatu.eth.v1.ProposerSlashing - (*v1.AttesterSlashing)(nil), // 42: xatu.eth.v1.AttesterSlashing - (*v1.Attestation)(nil), // 43: xatu.eth.v1.Attestation - (*v1.Deposit)(nil), // 44: xatu.eth.v1.Deposit - (*v1.SignedVoluntaryExit)(nil), // 45: xatu.eth.v1.SignedVoluntaryExit - (*v1.SyncAggregate)(nil), // 46: xatu.eth.v1.SyncAggregate - (*v1.ExecutionPayload)(nil), // 47: xatu.eth.v1.ExecutionPayload - (*v1.ExecutionPayloadV2)(nil), // 48: xatu.eth.v1.ExecutionPayloadV2 - (*v1.ExecutionPayloadHeader)(nil), // 49: xatu.eth.v1.ExecutionPayloadHeader - (*v1.ExecutionPayloadHeaderV2)(nil), // 50: xatu.eth.v1.ExecutionPayloadHeaderV2 - (*v1.ExecutionPayloadCapella)(nil), // 51: xatu.eth.v1.ExecutionPayloadCapella - (*SignedBLSToExecutionChange)(nil), // 52: xatu.eth.v2.SignedBLSToExecutionChange - (*v1.ExecutionPayloadCapellaV2)(nil), // 53: xatu.eth.v1.ExecutionPayloadCapellaV2 - (*v1.ExecutionPayloadDeneb)(nil), // 54: xatu.eth.v1.ExecutionPayloadDeneb - (*v1.ExecutionPayloadElectra)(nil), // 55: xatu.eth.v1.ExecutionPayloadElectra - (*v1.ElectraExecutionRequests)(nil), // 56: xatu.eth.v1.ElectraExecutionRequests - (*v1.ExecutionPayloadHeaderCapella)(nil), // 57: xatu.eth.v1.ExecutionPayloadHeaderCapella - (*v1.ExecutionPayloadHeaderCapellaV2)(nil), // 58: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 + (*SignedBeaconBlockGloas)(nil), // 7: xatu.eth.v2.SignedBeaconBlockGloas + (*SignedBlindedBeaconBlockBellatrix)(nil), // 8: xatu.eth.v2.SignedBlindedBeaconBlockBellatrix + (*SignedBlindedBeaconBlockBellatrixV2)(nil), // 9: xatu.eth.v2.SignedBlindedBeaconBlockBellatrixV2 + (*SignedBlindedBeaconBlockCapella)(nil), // 10: xatu.eth.v2.SignedBlindedBeaconBlockCapella + (*SignedBlindedBeaconBlockCapellaV2)(nil), // 11: xatu.eth.v2.SignedBlindedBeaconBlockCapellaV2 + (*SignedBeaconBlockAltair)(nil), // 12: xatu.eth.v2.SignedBeaconBlockAltair + (*SignedBeaconBlockAltairV2)(nil), // 13: xatu.eth.v2.SignedBeaconBlockAltairV2 + (*BeaconBlockBellatrix)(nil), // 14: xatu.eth.v2.BeaconBlockBellatrix + (*BeaconBlockBellatrixV2)(nil), // 15: xatu.eth.v2.BeaconBlockBellatrixV2 + (*BlindedBeaconBlockBellatrix)(nil), // 16: xatu.eth.v2.BlindedBeaconBlockBellatrix + (*BlindedBeaconBlockBellatrixV2)(nil), // 17: xatu.eth.v2.BlindedBeaconBlockBellatrixV2 + (*BeaconBlockCapella)(nil), // 18: xatu.eth.v2.BeaconBlockCapella + (*BeaconBlockCapellaV2)(nil), // 19: xatu.eth.v2.BeaconBlockCapellaV2 + (*BeaconBlockDeneb)(nil), // 20: xatu.eth.v2.BeaconBlockDeneb + (*BeaconBlockElectra)(nil), // 21: xatu.eth.v2.BeaconBlockElectra + (*BeaconBlockFulu)(nil), // 22: xatu.eth.v2.BeaconBlockFulu + (*BeaconBlockGloas)(nil), // 23: xatu.eth.v2.BeaconBlockGloas + (*BlindedBeaconBlockCapella)(nil), // 24: xatu.eth.v2.BlindedBeaconBlockCapella + (*BlindedBeaconBlockCapellaV2)(nil), // 25: xatu.eth.v2.BlindedBeaconBlockCapellaV2 + (*BeaconBlockAltair)(nil), // 26: xatu.eth.v2.BeaconBlockAltair + (*BeaconBlockAltairV2)(nil), // 27: xatu.eth.v2.BeaconBlockAltairV2 + (*BeaconBlockBodyBellatrix)(nil), // 28: xatu.eth.v2.BeaconBlockBodyBellatrix + (*BeaconBlockBodyBellatrixV2)(nil), // 29: xatu.eth.v2.BeaconBlockBodyBellatrixV2 + (*BlindedBeaconBlockBodyBellatrix)(nil), // 30: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix + (*BlindedBeaconBlockBodyBellatrixV2)(nil), // 31: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2 + (*BeaconBlockBodyCapella)(nil), // 32: xatu.eth.v2.BeaconBlockBodyCapella + (*BeaconBlockBodyCapellaV2)(nil), // 33: xatu.eth.v2.BeaconBlockBodyCapellaV2 + (*BeaconBlockBodyDeneb)(nil), // 34: xatu.eth.v2.BeaconBlockBodyDeneb + (*BeaconBlockBodyElectra)(nil), // 35: xatu.eth.v2.BeaconBlockBodyElectra + (*BeaconBlockBodyFulu)(nil), // 36: xatu.eth.v2.BeaconBlockBodyFulu + (*BeaconBlockBodyGloas)(nil), // 37: xatu.eth.v2.BeaconBlockBodyGloas + (*BlindedBeaconBlockBodyCapella)(nil), // 38: xatu.eth.v2.BlindedBeaconBlockBodyCapella + (*BlindedBeaconBlockBodyCapellaV2)(nil), // 39: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2 + (*BeaconBlockBodyAltair)(nil), // 40: xatu.eth.v2.BeaconBlockBodyAltair + (*BeaconBlockBodyAltairV2)(nil), // 41: xatu.eth.v2.BeaconBlockBodyAltairV2 + (*wrapperspb.UInt64Value)(nil), // 42: google.protobuf.UInt64Value + (*v1.Eth1Data)(nil), // 43: xatu.eth.v1.Eth1Data + (*v1.ProposerSlashing)(nil), // 44: xatu.eth.v1.ProposerSlashing + (*v1.AttesterSlashing)(nil), // 45: xatu.eth.v1.AttesterSlashing + (*v1.Attestation)(nil), // 46: xatu.eth.v1.Attestation + (*v1.Deposit)(nil), // 47: xatu.eth.v1.Deposit + (*v1.SignedVoluntaryExit)(nil), // 48: xatu.eth.v1.SignedVoluntaryExit + (*v1.SyncAggregate)(nil), // 49: xatu.eth.v1.SyncAggregate + (*v1.ExecutionPayload)(nil), // 50: xatu.eth.v1.ExecutionPayload + (*v1.ExecutionPayloadV2)(nil), // 51: xatu.eth.v1.ExecutionPayloadV2 + (*v1.ExecutionPayloadHeader)(nil), // 52: xatu.eth.v1.ExecutionPayloadHeader + (*v1.ExecutionPayloadHeaderV2)(nil), // 53: xatu.eth.v1.ExecutionPayloadHeaderV2 + (*v1.ExecutionPayloadCapella)(nil), // 54: xatu.eth.v1.ExecutionPayloadCapella + (*SignedBLSToExecutionChange)(nil), // 55: xatu.eth.v2.SignedBLSToExecutionChange + (*v1.ExecutionPayloadCapellaV2)(nil), // 56: xatu.eth.v1.ExecutionPayloadCapellaV2 + (*v1.ExecutionPayloadDeneb)(nil), // 57: xatu.eth.v1.ExecutionPayloadDeneb + (*v1.ExecutionPayloadElectra)(nil), // 58: xatu.eth.v1.ExecutionPayloadElectra + (*v1.ElectraExecutionRequests)(nil), // 59: xatu.eth.v1.ElectraExecutionRequests + (*v1.ExecutionPayloadGloas)(nil), // 60: xatu.eth.v1.ExecutionPayloadGloas + (*v1.SignedExecutionPayloadBid)(nil), // 61: xatu.eth.v1.SignedExecutionPayloadBid + (*v1.PayloadAttestation)(nil), // 62: xatu.eth.v1.PayloadAttestation + (*v1.ExecutionPayloadHeaderCapella)(nil), // 63: xatu.eth.v1.ExecutionPayloadHeaderCapella + (*v1.ExecutionPayloadHeaderCapellaV2)(nil), // 64: xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 } var file_pkg_proto_eth_v2_beacon_block_proto_depIdxs = []int32{ - 13, // 0: xatu.eth.v2.SignedBeaconBlockBellatrix.message:type_name -> xatu.eth.v2.BeaconBlockBellatrix - 14, // 1: xatu.eth.v2.SignedBeaconBlockBellatrixV2.message:type_name -> xatu.eth.v2.BeaconBlockBellatrixV2 - 17, // 2: xatu.eth.v2.SignedBeaconBlockCapella.message:type_name -> xatu.eth.v2.BeaconBlockCapella - 18, // 3: xatu.eth.v2.SignedBeaconBlockCapellaV2.message:type_name -> xatu.eth.v2.BeaconBlockCapellaV2 - 19, // 4: xatu.eth.v2.SignedBeaconBlockDeneb.message:type_name -> xatu.eth.v2.BeaconBlockDeneb - 20, // 5: xatu.eth.v2.SignedBeaconBlockElectra.message:type_name -> xatu.eth.v2.BeaconBlockElectra - 21, // 6: xatu.eth.v2.SignedBeaconBlockFulu.message:type_name -> xatu.eth.v2.BeaconBlockFulu - 15, // 7: xatu.eth.v2.SignedBlindedBeaconBlockBellatrix.message:type_name -> xatu.eth.v2.BlindedBeaconBlockBellatrix - 16, // 8: xatu.eth.v2.SignedBlindedBeaconBlockBellatrixV2.message:type_name -> xatu.eth.v2.BlindedBeaconBlockBellatrixV2 - 22, // 9: xatu.eth.v2.SignedBlindedBeaconBlockCapella.message:type_name -> xatu.eth.v2.BlindedBeaconBlockCapella - 23, // 10: xatu.eth.v2.SignedBlindedBeaconBlockCapellaV2.message:type_name -> xatu.eth.v2.BlindedBeaconBlockCapellaV2 - 24, // 11: xatu.eth.v2.SignedBeaconBlockAltair.message:type_name -> xatu.eth.v2.BeaconBlockAltair - 25, // 12: xatu.eth.v2.SignedBeaconBlockAltairV2.message:type_name -> xatu.eth.v2.BeaconBlockAltairV2 - 26, // 13: xatu.eth.v2.BeaconBlockBellatrix.body:type_name -> xatu.eth.v2.BeaconBlockBodyBellatrix - 39, // 14: xatu.eth.v2.BeaconBlockBellatrixV2.slot:type_name -> google.protobuf.UInt64Value - 39, // 15: xatu.eth.v2.BeaconBlockBellatrixV2.proposer_index:type_name -> google.protobuf.UInt64Value - 27, // 16: xatu.eth.v2.BeaconBlockBellatrixV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyBellatrixV2 - 28, // 17: xatu.eth.v2.BlindedBeaconBlockBellatrix.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyBellatrix - 39, // 18: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.slot:type_name -> google.protobuf.UInt64Value - 39, // 19: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.proposer_index:type_name -> google.protobuf.UInt64Value - 29, // 20: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2 - 30, // 21: xatu.eth.v2.BeaconBlockCapella.body:type_name -> xatu.eth.v2.BeaconBlockBodyCapella - 39, // 22: xatu.eth.v2.BeaconBlockCapellaV2.slot:type_name -> google.protobuf.UInt64Value - 39, // 23: xatu.eth.v2.BeaconBlockCapellaV2.proposer_index:type_name -> google.protobuf.UInt64Value - 31, // 24: xatu.eth.v2.BeaconBlockCapellaV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyCapellaV2 - 39, // 25: xatu.eth.v2.BeaconBlockDeneb.slot:type_name -> google.protobuf.UInt64Value - 39, // 26: xatu.eth.v2.BeaconBlockDeneb.proposer_index:type_name -> google.protobuf.UInt64Value - 32, // 27: xatu.eth.v2.BeaconBlockDeneb.body:type_name -> xatu.eth.v2.BeaconBlockBodyDeneb - 39, // 28: xatu.eth.v2.BeaconBlockElectra.slot:type_name -> google.protobuf.UInt64Value - 39, // 29: xatu.eth.v2.BeaconBlockElectra.proposer_index:type_name -> google.protobuf.UInt64Value - 33, // 30: xatu.eth.v2.BeaconBlockElectra.body:type_name -> xatu.eth.v2.BeaconBlockBodyElectra - 39, // 31: xatu.eth.v2.BeaconBlockFulu.slot:type_name -> google.protobuf.UInt64Value - 39, // 32: xatu.eth.v2.BeaconBlockFulu.proposer_index:type_name -> google.protobuf.UInt64Value - 34, // 33: xatu.eth.v2.BeaconBlockFulu.body:type_name -> xatu.eth.v2.BeaconBlockBodyFulu - 35, // 34: xatu.eth.v2.BlindedBeaconBlockCapella.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyCapella - 39, // 35: xatu.eth.v2.BlindedBeaconBlockCapellaV2.slot:type_name -> google.protobuf.UInt64Value - 39, // 36: xatu.eth.v2.BlindedBeaconBlockCapellaV2.proposer_index:type_name -> google.protobuf.UInt64Value - 36, // 37: xatu.eth.v2.BlindedBeaconBlockCapellaV2.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2 - 37, // 38: xatu.eth.v2.BeaconBlockAltair.body:type_name -> xatu.eth.v2.BeaconBlockBodyAltair - 39, // 39: xatu.eth.v2.BeaconBlockAltairV2.slot:type_name -> google.protobuf.UInt64Value - 39, // 40: xatu.eth.v2.BeaconBlockAltairV2.proposer_index:type_name -> google.protobuf.UInt64Value - 38, // 41: xatu.eth.v2.BeaconBlockAltairV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyAltairV2 - 40, // 42: xatu.eth.v2.BeaconBlockBodyBellatrix.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 43: xatu.eth.v2.BeaconBlockBodyBellatrix.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 44: xatu.eth.v2.BeaconBlockBodyBellatrix.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 45: xatu.eth.v2.BeaconBlockBodyBellatrix.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 46: xatu.eth.v2.BeaconBlockBodyBellatrix.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 47: xatu.eth.v2.BeaconBlockBodyBellatrix.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 48: xatu.eth.v2.BeaconBlockBodyBellatrix.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 47, // 49: xatu.eth.v2.BeaconBlockBodyBellatrix.execution_payload:type_name -> xatu.eth.v1.ExecutionPayload - 40, // 50: xatu.eth.v2.BeaconBlockBodyBellatrixV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 51: xatu.eth.v2.BeaconBlockBodyBellatrixV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 52: xatu.eth.v2.BeaconBlockBodyBellatrixV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 53: xatu.eth.v2.BeaconBlockBodyBellatrixV2.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 54: xatu.eth.v2.BeaconBlockBodyBellatrixV2.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 55: xatu.eth.v2.BeaconBlockBodyBellatrixV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 56: xatu.eth.v2.BeaconBlockBodyBellatrixV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 48, // 57: xatu.eth.v2.BeaconBlockBodyBellatrixV2.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadV2 - 40, // 58: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 59: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 60: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 61: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 62: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 63: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 64: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 49, // 65: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeader - 40, // 66: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 67: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 68: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 69: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 70: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 71: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 72: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 50, // 73: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderV2 - 40, // 74: xatu.eth.v2.BeaconBlockBodyCapella.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 75: xatu.eth.v2.BeaconBlockBodyCapella.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 76: xatu.eth.v2.BeaconBlockBodyCapella.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 77: xatu.eth.v2.BeaconBlockBodyCapella.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 78: xatu.eth.v2.BeaconBlockBodyCapella.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 79: xatu.eth.v2.BeaconBlockBodyCapella.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 80: xatu.eth.v2.BeaconBlockBodyCapella.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 51, // 81: xatu.eth.v2.BeaconBlockBodyCapella.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadCapella - 52, // 82: xatu.eth.v2.BeaconBlockBodyCapella.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 40, // 83: xatu.eth.v2.BeaconBlockBodyCapellaV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 84: xatu.eth.v2.BeaconBlockBodyCapellaV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 85: xatu.eth.v2.BeaconBlockBodyCapellaV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 86: xatu.eth.v2.BeaconBlockBodyCapellaV2.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 87: xatu.eth.v2.BeaconBlockBodyCapellaV2.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 88: xatu.eth.v2.BeaconBlockBodyCapellaV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 89: xatu.eth.v2.BeaconBlockBodyCapellaV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 53, // 90: xatu.eth.v2.BeaconBlockBodyCapellaV2.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadCapellaV2 - 52, // 91: xatu.eth.v2.BeaconBlockBodyCapellaV2.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 40, // 92: xatu.eth.v2.BeaconBlockBodyDeneb.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 93: xatu.eth.v2.BeaconBlockBodyDeneb.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 94: xatu.eth.v2.BeaconBlockBodyDeneb.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 95: xatu.eth.v2.BeaconBlockBodyDeneb.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 96: xatu.eth.v2.BeaconBlockBodyDeneb.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 97: xatu.eth.v2.BeaconBlockBodyDeneb.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 98: xatu.eth.v2.BeaconBlockBodyDeneb.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 54, // 99: xatu.eth.v2.BeaconBlockBodyDeneb.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadDeneb - 52, // 100: xatu.eth.v2.BeaconBlockBodyDeneb.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 40, // 101: xatu.eth.v2.BeaconBlockBodyElectra.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 102: xatu.eth.v2.BeaconBlockBodyElectra.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 103: xatu.eth.v2.BeaconBlockBodyElectra.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 104: xatu.eth.v2.BeaconBlockBodyElectra.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 105: xatu.eth.v2.BeaconBlockBodyElectra.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 106: xatu.eth.v2.BeaconBlockBodyElectra.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 107: xatu.eth.v2.BeaconBlockBodyElectra.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 55, // 108: xatu.eth.v2.BeaconBlockBodyElectra.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadElectra - 52, // 109: xatu.eth.v2.BeaconBlockBodyElectra.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 56, // 110: xatu.eth.v2.BeaconBlockBodyElectra.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests - 40, // 111: xatu.eth.v2.BeaconBlockBodyFulu.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 112: xatu.eth.v2.BeaconBlockBodyFulu.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 113: xatu.eth.v2.BeaconBlockBodyFulu.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 114: xatu.eth.v2.BeaconBlockBodyFulu.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 115: xatu.eth.v2.BeaconBlockBodyFulu.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 116: xatu.eth.v2.BeaconBlockBodyFulu.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 117: xatu.eth.v2.BeaconBlockBodyFulu.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 55, // 118: xatu.eth.v2.BeaconBlockBodyFulu.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadElectra - 52, // 119: xatu.eth.v2.BeaconBlockBodyFulu.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 56, // 120: xatu.eth.v2.BeaconBlockBodyFulu.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests - 40, // 121: xatu.eth.v2.BlindedBeaconBlockBodyCapella.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 122: xatu.eth.v2.BlindedBeaconBlockBodyCapella.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 123: xatu.eth.v2.BlindedBeaconBlockBodyCapella.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 124: xatu.eth.v2.BlindedBeaconBlockBodyCapella.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 125: xatu.eth.v2.BlindedBeaconBlockBodyCapella.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 126: xatu.eth.v2.BlindedBeaconBlockBodyCapella.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 127: xatu.eth.v2.BlindedBeaconBlockBodyCapella.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 57, // 128: xatu.eth.v2.BlindedBeaconBlockBodyCapella.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderCapella - 52, // 129: xatu.eth.v2.BlindedBeaconBlockBodyCapella.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 40, // 130: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 131: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 132: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 133: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 134: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 135: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 136: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 58, // 137: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 - 52, // 138: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange - 40, // 139: xatu.eth.v2.BeaconBlockBodyAltair.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 140: xatu.eth.v2.BeaconBlockBodyAltair.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 141: xatu.eth.v2.BeaconBlockBodyAltair.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 142: xatu.eth.v2.BeaconBlockBodyAltair.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 143: xatu.eth.v2.BeaconBlockBodyAltair.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 144: xatu.eth.v2.BeaconBlockBodyAltair.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 145: xatu.eth.v2.BeaconBlockBodyAltair.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 40, // 146: xatu.eth.v2.BeaconBlockBodyAltairV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data - 41, // 147: xatu.eth.v2.BeaconBlockBodyAltairV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing - 42, // 148: xatu.eth.v2.BeaconBlockBodyAltairV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing - 43, // 149: xatu.eth.v2.BeaconBlockBodyAltairV2.attestations:type_name -> xatu.eth.v1.Attestation - 44, // 150: xatu.eth.v2.BeaconBlockBodyAltairV2.deposits:type_name -> xatu.eth.v1.Deposit - 45, // 151: xatu.eth.v2.BeaconBlockBodyAltairV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit - 46, // 152: xatu.eth.v2.BeaconBlockBodyAltairV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate - 153, // [153:153] is the sub-list for method output_type - 153, // [153:153] is the sub-list for method input_type - 153, // [153:153] is the sub-list for extension type_name - 153, // [153:153] is the sub-list for extension extendee - 0, // [0:153] is the sub-list for field type_name + 14, // 0: xatu.eth.v2.SignedBeaconBlockBellatrix.message:type_name -> xatu.eth.v2.BeaconBlockBellatrix + 15, // 1: xatu.eth.v2.SignedBeaconBlockBellatrixV2.message:type_name -> xatu.eth.v2.BeaconBlockBellatrixV2 + 18, // 2: xatu.eth.v2.SignedBeaconBlockCapella.message:type_name -> xatu.eth.v2.BeaconBlockCapella + 19, // 3: xatu.eth.v2.SignedBeaconBlockCapellaV2.message:type_name -> xatu.eth.v2.BeaconBlockCapellaV2 + 20, // 4: xatu.eth.v2.SignedBeaconBlockDeneb.message:type_name -> xatu.eth.v2.BeaconBlockDeneb + 21, // 5: xatu.eth.v2.SignedBeaconBlockElectra.message:type_name -> xatu.eth.v2.BeaconBlockElectra + 22, // 6: xatu.eth.v2.SignedBeaconBlockFulu.message:type_name -> xatu.eth.v2.BeaconBlockFulu + 23, // 7: xatu.eth.v2.SignedBeaconBlockGloas.message:type_name -> xatu.eth.v2.BeaconBlockGloas + 16, // 8: xatu.eth.v2.SignedBlindedBeaconBlockBellatrix.message:type_name -> xatu.eth.v2.BlindedBeaconBlockBellatrix + 17, // 9: xatu.eth.v2.SignedBlindedBeaconBlockBellatrixV2.message:type_name -> xatu.eth.v2.BlindedBeaconBlockBellatrixV2 + 24, // 10: xatu.eth.v2.SignedBlindedBeaconBlockCapella.message:type_name -> xatu.eth.v2.BlindedBeaconBlockCapella + 25, // 11: xatu.eth.v2.SignedBlindedBeaconBlockCapellaV2.message:type_name -> xatu.eth.v2.BlindedBeaconBlockCapellaV2 + 26, // 12: xatu.eth.v2.SignedBeaconBlockAltair.message:type_name -> xatu.eth.v2.BeaconBlockAltair + 27, // 13: xatu.eth.v2.SignedBeaconBlockAltairV2.message:type_name -> xatu.eth.v2.BeaconBlockAltairV2 + 28, // 14: xatu.eth.v2.BeaconBlockBellatrix.body:type_name -> xatu.eth.v2.BeaconBlockBodyBellatrix + 42, // 15: xatu.eth.v2.BeaconBlockBellatrixV2.slot:type_name -> google.protobuf.UInt64Value + 42, // 16: xatu.eth.v2.BeaconBlockBellatrixV2.proposer_index:type_name -> google.protobuf.UInt64Value + 29, // 17: xatu.eth.v2.BeaconBlockBellatrixV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyBellatrixV2 + 30, // 18: xatu.eth.v2.BlindedBeaconBlockBellatrix.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyBellatrix + 42, // 19: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.slot:type_name -> google.protobuf.UInt64Value + 42, // 20: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.proposer_index:type_name -> google.protobuf.UInt64Value + 31, // 21: xatu.eth.v2.BlindedBeaconBlockBellatrixV2.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2 + 32, // 22: xatu.eth.v2.BeaconBlockCapella.body:type_name -> xatu.eth.v2.BeaconBlockBodyCapella + 42, // 23: xatu.eth.v2.BeaconBlockCapellaV2.slot:type_name -> google.protobuf.UInt64Value + 42, // 24: xatu.eth.v2.BeaconBlockCapellaV2.proposer_index:type_name -> google.protobuf.UInt64Value + 33, // 25: xatu.eth.v2.BeaconBlockCapellaV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyCapellaV2 + 42, // 26: xatu.eth.v2.BeaconBlockDeneb.slot:type_name -> google.protobuf.UInt64Value + 42, // 27: xatu.eth.v2.BeaconBlockDeneb.proposer_index:type_name -> google.protobuf.UInt64Value + 34, // 28: xatu.eth.v2.BeaconBlockDeneb.body:type_name -> xatu.eth.v2.BeaconBlockBodyDeneb + 42, // 29: xatu.eth.v2.BeaconBlockElectra.slot:type_name -> google.protobuf.UInt64Value + 42, // 30: xatu.eth.v2.BeaconBlockElectra.proposer_index:type_name -> google.protobuf.UInt64Value + 35, // 31: xatu.eth.v2.BeaconBlockElectra.body:type_name -> xatu.eth.v2.BeaconBlockBodyElectra + 42, // 32: xatu.eth.v2.BeaconBlockFulu.slot:type_name -> google.protobuf.UInt64Value + 42, // 33: xatu.eth.v2.BeaconBlockFulu.proposer_index:type_name -> google.protobuf.UInt64Value + 36, // 34: xatu.eth.v2.BeaconBlockFulu.body:type_name -> xatu.eth.v2.BeaconBlockBodyFulu + 42, // 35: xatu.eth.v2.BeaconBlockGloas.slot:type_name -> google.protobuf.UInt64Value + 42, // 36: xatu.eth.v2.BeaconBlockGloas.proposer_index:type_name -> google.protobuf.UInt64Value + 37, // 37: xatu.eth.v2.BeaconBlockGloas.body:type_name -> xatu.eth.v2.BeaconBlockBodyGloas + 38, // 38: xatu.eth.v2.BlindedBeaconBlockCapella.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyCapella + 42, // 39: xatu.eth.v2.BlindedBeaconBlockCapellaV2.slot:type_name -> google.protobuf.UInt64Value + 42, // 40: xatu.eth.v2.BlindedBeaconBlockCapellaV2.proposer_index:type_name -> google.protobuf.UInt64Value + 39, // 41: xatu.eth.v2.BlindedBeaconBlockCapellaV2.body:type_name -> xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2 + 40, // 42: xatu.eth.v2.BeaconBlockAltair.body:type_name -> xatu.eth.v2.BeaconBlockBodyAltair + 42, // 43: xatu.eth.v2.BeaconBlockAltairV2.slot:type_name -> google.protobuf.UInt64Value + 42, // 44: xatu.eth.v2.BeaconBlockAltairV2.proposer_index:type_name -> google.protobuf.UInt64Value + 41, // 45: xatu.eth.v2.BeaconBlockAltairV2.body:type_name -> xatu.eth.v2.BeaconBlockBodyAltairV2 + 43, // 46: xatu.eth.v2.BeaconBlockBodyBellatrix.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 47: xatu.eth.v2.BeaconBlockBodyBellatrix.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 48: xatu.eth.v2.BeaconBlockBodyBellatrix.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 49: xatu.eth.v2.BeaconBlockBodyBellatrix.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 50: xatu.eth.v2.BeaconBlockBodyBellatrix.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 51: xatu.eth.v2.BeaconBlockBodyBellatrix.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 52: xatu.eth.v2.BeaconBlockBodyBellatrix.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 50, // 53: xatu.eth.v2.BeaconBlockBodyBellatrix.execution_payload:type_name -> xatu.eth.v1.ExecutionPayload + 43, // 54: xatu.eth.v2.BeaconBlockBodyBellatrixV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 55: xatu.eth.v2.BeaconBlockBodyBellatrixV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 56: xatu.eth.v2.BeaconBlockBodyBellatrixV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 57: xatu.eth.v2.BeaconBlockBodyBellatrixV2.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 58: xatu.eth.v2.BeaconBlockBodyBellatrixV2.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 59: xatu.eth.v2.BeaconBlockBodyBellatrixV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 60: xatu.eth.v2.BeaconBlockBodyBellatrixV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 51, // 61: xatu.eth.v2.BeaconBlockBodyBellatrixV2.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadV2 + 43, // 62: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 63: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 64: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 65: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 66: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 67: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 68: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 52, // 69: xatu.eth.v2.BlindedBeaconBlockBodyBellatrix.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeader + 43, // 70: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 71: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 72: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 73: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 74: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 75: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 76: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 53, // 77: xatu.eth.v2.BlindedBeaconBlockBodyBellatrixV2.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderV2 + 43, // 78: xatu.eth.v2.BeaconBlockBodyCapella.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 79: xatu.eth.v2.BeaconBlockBodyCapella.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 80: xatu.eth.v2.BeaconBlockBodyCapella.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 81: xatu.eth.v2.BeaconBlockBodyCapella.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 82: xatu.eth.v2.BeaconBlockBodyCapella.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 83: xatu.eth.v2.BeaconBlockBodyCapella.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 84: xatu.eth.v2.BeaconBlockBodyCapella.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 54, // 85: xatu.eth.v2.BeaconBlockBodyCapella.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadCapella + 55, // 86: xatu.eth.v2.BeaconBlockBodyCapella.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 43, // 87: xatu.eth.v2.BeaconBlockBodyCapellaV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 88: xatu.eth.v2.BeaconBlockBodyCapellaV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 89: xatu.eth.v2.BeaconBlockBodyCapellaV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 90: xatu.eth.v2.BeaconBlockBodyCapellaV2.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 91: xatu.eth.v2.BeaconBlockBodyCapellaV2.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 92: xatu.eth.v2.BeaconBlockBodyCapellaV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 93: xatu.eth.v2.BeaconBlockBodyCapellaV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 56, // 94: xatu.eth.v2.BeaconBlockBodyCapellaV2.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadCapellaV2 + 55, // 95: xatu.eth.v2.BeaconBlockBodyCapellaV2.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 43, // 96: xatu.eth.v2.BeaconBlockBodyDeneb.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 97: xatu.eth.v2.BeaconBlockBodyDeneb.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 98: xatu.eth.v2.BeaconBlockBodyDeneb.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 99: xatu.eth.v2.BeaconBlockBodyDeneb.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 100: xatu.eth.v2.BeaconBlockBodyDeneb.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 101: xatu.eth.v2.BeaconBlockBodyDeneb.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 102: xatu.eth.v2.BeaconBlockBodyDeneb.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 57, // 103: xatu.eth.v2.BeaconBlockBodyDeneb.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadDeneb + 55, // 104: xatu.eth.v2.BeaconBlockBodyDeneb.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 43, // 105: xatu.eth.v2.BeaconBlockBodyElectra.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 106: xatu.eth.v2.BeaconBlockBodyElectra.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 107: xatu.eth.v2.BeaconBlockBodyElectra.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 108: xatu.eth.v2.BeaconBlockBodyElectra.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 109: xatu.eth.v2.BeaconBlockBodyElectra.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 110: xatu.eth.v2.BeaconBlockBodyElectra.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 111: xatu.eth.v2.BeaconBlockBodyElectra.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 58, // 112: xatu.eth.v2.BeaconBlockBodyElectra.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadElectra + 55, // 113: xatu.eth.v2.BeaconBlockBodyElectra.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 59, // 114: xatu.eth.v2.BeaconBlockBodyElectra.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests + 43, // 115: xatu.eth.v2.BeaconBlockBodyFulu.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 116: xatu.eth.v2.BeaconBlockBodyFulu.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 117: xatu.eth.v2.BeaconBlockBodyFulu.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 118: xatu.eth.v2.BeaconBlockBodyFulu.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 119: xatu.eth.v2.BeaconBlockBodyFulu.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 120: xatu.eth.v2.BeaconBlockBodyFulu.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 121: xatu.eth.v2.BeaconBlockBodyFulu.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 58, // 122: xatu.eth.v2.BeaconBlockBodyFulu.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadElectra + 55, // 123: xatu.eth.v2.BeaconBlockBodyFulu.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 59, // 124: xatu.eth.v2.BeaconBlockBodyFulu.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests + 43, // 125: xatu.eth.v2.BeaconBlockBodyGloas.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 126: xatu.eth.v2.BeaconBlockBodyGloas.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 127: xatu.eth.v2.BeaconBlockBodyGloas.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 128: xatu.eth.v2.BeaconBlockBodyGloas.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 129: xatu.eth.v2.BeaconBlockBodyGloas.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 130: xatu.eth.v2.BeaconBlockBodyGloas.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 131: xatu.eth.v2.BeaconBlockBodyGloas.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 60, // 132: xatu.eth.v2.BeaconBlockBodyGloas.execution_payload:type_name -> xatu.eth.v1.ExecutionPayloadGloas + 55, // 133: xatu.eth.v2.BeaconBlockBodyGloas.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 59, // 134: xatu.eth.v2.BeaconBlockBodyGloas.execution_requests:type_name -> xatu.eth.v1.ElectraExecutionRequests + 61, // 135: xatu.eth.v2.BeaconBlockBodyGloas.signed_execution_payload_bid:type_name -> xatu.eth.v1.SignedExecutionPayloadBid + 62, // 136: xatu.eth.v2.BeaconBlockBodyGloas.payload_attestations:type_name -> xatu.eth.v1.PayloadAttestation + 43, // 137: xatu.eth.v2.BlindedBeaconBlockBodyCapella.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 138: xatu.eth.v2.BlindedBeaconBlockBodyCapella.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 139: xatu.eth.v2.BlindedBeaconBlockBodyCapella.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 140: xatu.eth.v2.BlindedBeaconBlockBodyCapella.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 141: xatu.eth.v2.BlindedBeaconBlockBodyCapella.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 142: xatu.eth.v2.BlindedBeaconBlockBodyCapella.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 143: xatu.eth.v2.BlindedBeaconBlockBodyCapella.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 63, // 144: xatu.eth.v2.BlindedBeaconBlockBodyCapella.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderCapella + 55, // 145: xatu.eth.v2.BlindedBeaconBlockBodyCapella.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 43, // 146: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 147: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 148: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 149: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 150: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 151: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 152: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 64, // 153: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.execution_payload_header:type_name -> xatu.eth.v1.ExecutionPayloadHeaderCapellaV2 + 55, // 154: xatu.eth.v2.BlindedBeaconBlockBodyCapellaV2.bls_to_execution_changes:type_name -> xatu.eth.v2.SignedBLSToExecutionChange + 43, // 155: xatu.eth.v2.BeaconBlockBodyAltair.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 156: xatu.eth.v2.BeaconBlockBodyAltair.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 157: xatu.eth.v2.BeaconBlockBodyAltair.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 158: xatu.eth.v2.BeaconBlockBodyAltair.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 159: xatu.eth.v2.BeaconBlockBodyAltair.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 160: xatu.eth.v2.BeaconBlockBodyAltair.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 161: xatu.eth.v2.BeaconBlockBodyAltair.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 43, // 162: xatu.eth.v2.BeaconBlockBodyAltairV2.eth1_data:type_name -> xatu.eth.v1.Eth1Data + 44, // 163: xatu.eth.v2.BeaconBlockBodyAltairV2.proposer_slashings:type_name -> xatu.eth.v1.ProposerSlashing + 45, // 164: xatu.eth.v2.BeaconBlockBodyAltairV2.attester_slashings:type_name -> xatu.eth.v1.AttesterSlashing + 46, // 165: xatu.eth.v2.BeaconBlockBodyAltairV2.attestations:type_name -> xatu.eth.v1.Attestation + 47, // 166: xatu.eth.v2.BeaconBlockBodyAltairV2.deposits:type_name -> xatu.eth.v1.Deposit + 48, // 167: xatu.eth.v2.BeaconBlockBodyAltairV2.voluntary_exits:type_name -> xatu.eth.v1.SignedVoluntaryExit + 49, // 168: xatu.eth.v2.BeaconBlockBodyAltairV2.sync_aggregate:type_name -> xatu.eth.v1.SyncAggregate + 169, // [169:169] is the sub-list for method output_type + 169, // [169:169] is the sub-list for method input_type + 169, // [169:169] is the sub-list for extension type_name + 169, // [169:169] is the sub-list for extension extendee + 0, // [0:169] is the sub-list for field type_name } func init() { file_pkg_proto_eth_v2_beacon_block_proto_init() } @@ -4638,7 +5054,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*SignedBlindedBeaconBlockBellatrix); i { + switch v := v.(*SignedBeaconBlockGloas); i { case 0: return &v.state case 1: @@ -4650,7 +5066,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*SignedBlindedBeaconBlockBellatrixV2); i { + switch v := v.(*SignedBlindedBeaconBlockBellatrix); i { case 0: return &v.state case 1: @@ -4662,7 +5078,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*SignedBlindedBeaconBlockCapella); i { + switch v := v.(*SignedBlindedBeaconBlockBellatrixV2); i { case 0: return &v.state case 1: @@ -4674,7 +5090,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*SignedBlindedBeaconBlockCapellaV2); i { + switch v := v.(*SignedBlindedBeaconBlockCapella); i { case 0: return &v.state case 1: @@ -4686,7 +5102,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*SignedBeaconBlockAltair); i { + switch v := v.(*SignedBlindedBeaconBlockCapellaV2); i { case 0: return &v.state case 1: @@ -4698,7 +5114,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SignedBeaconBlockAltairV2); i { + switch v := v.(*SignedBeaconBlockAltair); i { case 0: return &v.state case 1: @@ -4710,7 +5126,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBellatrix); i { + switch v := v.(*SignedBeaconBlockAltairV2); i { case 0: return &v.state case 1: @@ -4722,7 +5138,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBellatrixV2); i { + switch v := v.(*BeaconBlockBellatrix); i { case 0: return &v.state case 1: @@ -4734,7 +5150,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBellatrix); i { + switch v := v.(*BeaconBlockBellatrixV2); i { case 0: return &v.state case 1: @@ -4746,7 +5162,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBellatrixV2); i { + switch v := v.(*BlindedBeaconBlockBellatrix); i { case 0: return &v.state case 1: @@ -4758,7 +5174,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockCapella); i { + switch v := v.(*BlindedBeaconBlockBellatrixV2); i { case 0: return &v.state case 1: @@ -4770,7 +5186,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockCapellaV2); i { + switch v := v.(*BeaconBlockCapella); i { case 0: return &v.state case 1: @@ -4782,7 +5198,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockDeneb); i { + switch v := v.(*BeaconBlockCapellaV2); i { case 0: return &v.state case 1: @@ -4794,7 +5210,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockElectra); i { + switch v := v.(*BeaconBlockDeneb); i { case 0: return &v.state case 1: @@ -4806,7 +5222,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockFulu); i { + switch v := v.(*BeaconBlockElectra); i { case 0: return &v.state case 1: @@ -4818,7 +5234,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockCapella); i { + switch v := v.(*BeaconBlockFulu); i { case 0: return &v.state case 1: @@ -4830,7 +5246,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockCapellaV2); i { + switch v := v.(*BeaconBlockGloas); i { case 0: return &v.state case 1: @@ -4842,7 +5258,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockAltair); i { + switch v := v.(*BlindedBeaconBlockCapella); i { case 0: return &v.state case 1: @@ -4854,7 +5270,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockAltairV2); i { + switch v := v.(*BlindedBeaconBlockCapellaV2); i { case 0: return &v.state case 1: @@ -4866,7 +5282,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyBellatrix); i { + switch v := v.(*BeaconBlockAltair); i { case 0: return &v.state case 1: @@ -4878,7 +5294,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyBellatrixV2); i { + switch v := v.(*BeaconBlockAltairV2); i { case 0: return &v.state case 1: @@ -4890,7 +5306,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBodyBellatrix); i { + switch v := v.(*BeaconBlockBodyBellatrix); i { case 0: return &v.state case 1: @@ -4902,7 +5318,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBodyBellatrixV2); i { + switch v := v.(*BeaconBlockBodyBellatrixV2); i { case 0: return &v.state case 1: @@ -4914,7 +5330,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyCapella); i { + switch v := v.(*BlindedBeaconBlockBodyBellatrix); i { case 0: return &v.state case 1: @@ -4926,7 +5342,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyCapellaV2); i { + switch v := v.(*BlindedBeaconBlockBodyBellatrixV2); i { case 0: return &v.state case 1: @@ -4938,7 +5354,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyDeneb); i { + switch v := v.(*BeaconBlockBodyCapella); i { case 0: return &v.state case 1: @@ -4950,7 +5366,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyElectra); i { + switch v := v.(*BeaconBlockBodyCapellaV2); i { case 0: return &v.state case 1: @@ -4962,7 +5378,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyFulu); i { + switch v := v.(*BeaconBlockBodyDeneb); i { case 0: return &v.state case 1: @@ -4974,7 +5390,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBodyCapella); i { + switch v := v.(*BeaconBlockBodyElectra); i { case 0: return &v.state case 1: @@ -4986,7 +5402,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*BlindedBeaconBlockBodyCapellaV2); i { + switch v := v.(*BeaconBlockBodyFulu); i { case 0: return &v.state case 1: @@ -4998,7 +5414,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*BeaconBlockBodyAltair); i { + switch v := v.(*BeaconBlockBodyGloas); i { case 0: return &v.state case 1: @@ -5010,6 +5426,42 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { } } file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*BlindedBeaconBlockBodyCapella); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*BlindedBeaconBlockBodyCapellaV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*BeaconBlockBodyAltair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_eth_v2_beacon_block_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*BeaconBlockBodyAltairV2); i { case 0: return &v.state @@ -5028,7 +5480,7 @@ func file_pkg_proto_eth_v2_beacon_block_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_proto_eth_v2_beacon_block_proto_rawDesc, NumEnums: 0, - NumMessages: 39, + NumMessages: 42, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/proto/eth/v2/beacon_block.proto b/pkg/proto/eth/v2/beacon_block.proto index dd452d6d5..5bf3db234 100644 --- a/pkg/proto/eth/v2/beacon_block.proto +++ b/pkg/proto/eth/v2/beacon_block.proto @@ -12,6 +12,8 @@ import "google/protobuf/descriptor.proto"; import "pkg/proto/eth/v1/attestation.proto"; import "pkg/proto/eth/v1/beacon_block.proto"; import "pkg/proto/eth/v1/execution_engine.proto"; +import "pkg/proto/eth/v1/execution_payload_bid.proto"; +import "pkg/proto/eth/v1/payload_attestation.proto"; import "pkg/proto/eth/v2/withdrawals.proto"; import "pkg/proto/eth/v1/execution_requests.proto"; @@ -57,6 +59,12 @@ message SignedBeaconBlockFulu { string signature = 2; } +message SignedBeaconBlockGloas { + BeaconBlockGloas message = 1; + + string signature = 2; +} + message SignedBlindedBeaconBlockBellatrix { BlindedBeaconBlockBellatrix message = 1; @@ -207,6 +215,19 @@ message BeaconBlockFulu { BeaconBlockBodyFulu body = 5; } +message BeaconBlockGloas { + google.protobuf.UInt64Value slot = 1 [ json_name = "slot" ]; + + google.protobuf.UInt64Value proposer_index = 2 + [ json_name = "proposer_index" ]; + + string parent_root = 3 [ json_name = "parent_root" ]; + + string state_root = 4 [ json_name = "state_root" ]; + + BeaconBlockBodyGloas body = 5; +} + message BlindedBeaconBlockCapella { uint64 slot = 1; @@ -513,12 +534,58 @@ message BeaconBlockBodyFulu { repeated SignedBLSToExecutionChange bls_to_execution_changes = 11 [ json_name = "bls_to_execution_changes" ]; - repeated string blob_kzg_commitments = 12 + repeated string blob_kzg_commitments = 12 [ json_name = "blob_kzg_commitments" ]; - + v1.ElectraExecutionRequests execution_requests = 13 [ json_name = "execution_requests" ]; } +message BeaconBlockBodyGloas { + string randao_reveal = 1 [ json_name = "randao_reveal" ]; + + v1.Eth1Data eth1_data = 2 [ json_name = "eth1_data" ]; + + string graffiti = 3; + + repeated v1.ProposerSlashing proposer_slashings = 4 + [ json_name = "proposer_slashings" ]; + + repeated v1.AttesterSlashing attester_slashings = 5 + [ json_name = "attester_slashings" ]; + + repeated v1.Attestation attestations = 6; + + repeated v1.Deposit deposits = 7; + + repeated v1.SignedVoluntaryExit voluntary_exits = 8 + [ json_name = "voluntary_exits" ]; + + v1.SyncAggregate sync_aggregate = 9 [ json_name = "sync_aggregate" ]; + + // Pre-ePBS: execution payload inline in block body. + v1.ExecutionPayloadGloas execution_payload = 10 + [ json_name = "execution_payload" ]; + + repeated SignedBLSToExecutionChange bls_to_execution_changes = 11 + [ json_name = "bls_to_execution_changes" ]; + + // Pre-ePBS: blob KZG commitments inline in block body. + repeated string blob_kzg_commitments = 12 + [ json_name = "blob_kzg_commitments" ]; + + // Pre-ePBS: execution requests inline in block body. + v1.ElectraExecutionRequests execution_requests = 13 + [ json_name = "execution_requests" ]; + + // EIP-7732 ePBS: Builder's bid (replaces execution_payload when ePBS is active). + v1.SignedExecutionPayloadBid signed_execution_payload_bid = 14 + [ json_name = "signed_execution_payload_bid" ]; + + // EIP-7732 ePBS: Aggregated PTC attestations (max 4 per block). + repeated v1.PayloadAttestation payload_attestations = 15 + [ json_name = "payload_attestations" ]; +} + message BlindedBeaconBlockBodyCapella { string randao_reveal = 1 [ json_name = "randao_reveal" ]; diff --git a/pkg/proto/eth/v2/events.pb.go b/pkg/proto/eth/v2/events.pb.go index 036471439..7e94bf3ba 100644 --- a/pkg/proto/eth/v2/events.pb.go +++ b/pkg/proto/eth/v2/events.pb.go @@ -33,6 +33,7 @@ const ( BlockVersion_DENEB BlockVersion = 5 BlockVersion_ELECTRA BlockVersion = 6 BlockVersion_FULU BlockVersion = 7 + BlockVersion_GLOAS BlockVersion = 8 ) // Enum value maps for BlockVersion. @@ -46,6 +47,7 @@ var ( 5: "DENEB", 6: "ELECTRA", 7: "FULU", + 8: "GLOAS", } BlockVersion_value = map[string]int32{ "UNKNOWN": 0, @@ -56,6 +58,7 @@ var ( "DENEB": 5, "ELECTRA": 6, "FULU": 7, + "GLOAS": 8, } ) @@ -100,6 +103,7 @@ type EventBlock struct { // *EventBlock_DenebBlock // *EventBlock_ElectraBlock // *EventBlock_FuluBlock + // *EventBlock_GloasBlock Message isEventBlock_Message `protobuf_oneof:"message"` Signature string `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` Version BlockVersion `protobuf:"varint,6,opt,name=version,proto3,enum=xatu.eth.v2.BlockVersion" json:"version,omitempty"` @@ -193,6 +197,13 @@ func (x *EventBlock) GetFuluBlock() *BeaconBlockFulu { return nil } +func (x *EventBlock) GetGloasBlock() *BeaconBlockGloas { + if x, ok := x.GetMessage().(*EventBlock_GloasBlock); ok { + return x.GloasBlock + } + return nil +} + func (x *EventBlock) GetSignature() string { if x != nil { return x.Signature @@ -239,6 +250,10 @@ type EventBlock_FuluBlock struct { FuluBlock *BeaconBlockFulu `protobuf:"bytes,9,opt,name=fulu_block,json=FULU,proto3,oneof"` } +type EventBlock_GloasBlock struct { + GloasBlock *BeaconBlockGloas `protobuf:"bytes,10,opt,name=gloas_block,json=GLOAS,proto3,oneof"` +} + func (*EventBlock_Phase0Block) isEventBlock_Message() {} func (*EventBlock_AltairBlock) isEventBlock_Message() {} @@ -253,6 +268,8 @@ func (*EventBlock_ElectraBlock) isEventBlock_Message() {} func (*EventBlock_FuluBlock) isEventBlock_Message() {} +func (*EventBlock_GloasBlock) isEventBlock_Message() {} + type EventBlockV2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -267,6 +284,7 @@ type EventBlockV2 struct { // *EventBlockV2_DenebBlock // *EventBlockV2_ElectraBlock // *EventBlockV2_FuluBlock + // *EventBlockV2_GloasBlock Message isEventBlockV2_Message `protobuf_oneof:"message"` Signature string `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` Version BlockVersion `protobuf:"varint,6,opt,name=version,proto3,enum=xatu.eth.v2.BlockVersion" json:"version,omitempty"` @@ -360,6 +378,13 @@ func (x *EventBlockV2) GetFuluBlock() *BeaconBlockFulu { return nil } +func (x *EventBlockV2) GetGloasBlock() *BeaconBlockGloas { + if x, ok := x.GetMessage().(*EventBlockV2_GloasBlock); ok { + return x.GloasBlock + } + return nil +} + func (x *EventBlockV2) GetSignature() string { if x != nil { return x.Signature @@ -406,6 +431,10 @@ type EventBlockV2_FuluBlock struct { FuluBlock *BeaconBlockFulu `protobuf:"bytes,9,opt,name=fulu_block,json=FULU,proto3,oneof"` } +type EventBlockV2_GloasBlock struct { + GloasBlock *BeaconBlockGloas `protobuf:"bytes,10,opt,name=gloas_block,json=GLOAS,proto3,oneof"` +} + func (*EventBlockV2_Phase0Block) isEventBlockV2_Message() {} func (*EventBlockV2_AltairBlock) isEventBlockV2_Message() {} @@ -420,6 +449,8 @@ func (*EventBlockV2_ElectraBlock) isEventBlockV2_Message() {} func (*EventBlockV2_FuluBlock) isEventBlockV2_Message() {} +func (*EventBlockV2_GloasBlock) isEventBlockV2_Message() {} + var File_pkg_proto_eth_v2_events_proto protoreflect.FileDescriptor var file_pkg_proto_eth_v2_events_proto_rawDesc = []byte{ @@ -432,7 +463,7 @@ var file_pkg_proto_eth_v2_events_proto_rawDesc = []byte{ 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x32, 0x2f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x04, 0x0a, 0x0a, 0x45, 0x76, 0x65, + 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x04, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x30, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, @@ -461,59 +492,67 @@ var file_pkg_proto_eth_v2_events_proto_rawDesc = []byte{ 0x0a, 0x66, 0x75, 0x6c, 0x75, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x48, - 0x00, 0x52, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb4, 0x04, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x30, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x30, 0x12, 0x40, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x41, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x41, 0x4c, - 0x54, 0x41, 0x49, 0x52, 0x12, 0x49, 0x0a, 0x0f, 0x62, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, - 0x56, 0x32, 0x48, 0x00, 0x52, 0x09, 0x42, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x52, 0x49, 0x58, 0x12, - 0x43, 0x0a, 0x0d, 0x63, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x00, 0x52, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x12, 0x3b, 0x0a, 0x0b, 0x67, 0x6c, 0x6f, 0x61, 0x73, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x48, 0x00, 0x52, 0x05, 0x47, + 0x4c, 0x4f, 0x41, 0x53, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0xf1, 0x04, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x56, 0x32, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x30, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x50, 0x48, 0x41, 0x53, 0x45, 0x30, 0x12, + 0x40, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, + 0x6c, 0x74, 0x61, 0x69, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x41, 0x4c, 0x54, 0x41, 0x49, + 0x52, 0x12, 0x49, 0x0a, 0x0f, 0x62, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x32, 0x48, + 0x00, 0x52, 0x09, 0x42, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x52, 0x49, 0x58, 0x12, 0x43, 0x0a, 0x0d, + 0x63, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x70, + 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x48, 0x00, 0x52, 0x07, 0x43, 0x41, 0x50, 0x45, 0x4c, 0x4c, + 0x41, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x6e, 0x65, 0x62, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x43, 0x61, 0x70, 0x65, 0x6c, 0x6c, 0x61, 0x56, 0x32, 0x48, 0x00, 0x52, 0x07, 0x43, 0x41, 0x50, - 0x45, 0x4c, 0x4c, 0x41, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x6e, 0x65, 0x62, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6e, 0x65, 0x62, 0x48, 0x00, 0x52, 0x05, 0x44, 0x45, 0x4e, 0x45, - 0x42, 0x12, 0x41, 0x0a, 0x0d, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x48, 0x00, 0x52, 0x07, 0x45, 0x4c, 0x45, - 0x43, 0x54, 0x52, 0x41, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x75, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x46, 0x75, 0x6c, 0x75, 0x48, 0x00, 0x52, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x71, 0x0a, 0x0c, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x41, - 0x53, 0x45, 0x30, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x54, 0x41, 0x49, 0x52, 0x10, - 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x52, 0x49, 0x58, 0x10, 0x03, - 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x41, 0x50, 0x45, 0x4c, 0x4c, 0x41, 0x10, 0x04, 0x12, 0x09, 0x0a, - 0x05, 0x44, 0x45, 0x4e, 0x45, 0x42, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4c, 0x45, 0x43, - 0x54, 0x52, 0x41, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x10, 0x07, 0x42, - 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, - 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x32, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x44, 0x65, 0x6e, 0x65, 0x62, 0x48, 0x00, 0x52, 0x05, 0x44, 0x45, 0x4e, 0x45, 0x42, 0x12, 0x41, + 0x0a, 0x0d, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, + 0x6c, 0x65, 0x63, 0x74, 0x72, 0x61, 0x48, 0x00, 0x52, 0x07, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x52, + 0x41, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x75, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, + 0x75, 0x6c, 0x75, 0x48, 0x00, 0x52, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x12, 0x3b, 0x0a, 0x0b, 0x67, + 0x6c, 0x6f, 0x61, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6c, 0x6f, 0x61, 0x73, 0x48, + 0x00, 0x52, 0x05, 0x47, 0x4c, 0x4f, 0x41, 0x53, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x7c, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x41, 0x53, 0x45, 0x30, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x54, 0x41, 0x49, 0x52, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x42, + 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x52, 0x49, 0x58, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x41, + 0x50, 0x45, 0x4c, 0x4c, 0x41, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x4e, 0x45, 0x42, + 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x52, 0x41, 0x10, 0x06, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x55, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x4c, 0x4f, + 0x41, 0x53, 0x10, 0x08, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, + 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, + 0x68, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -541,10 +580,11 @@ var file_pkg_proto_eth_v2_events_proto_goTypes = []any{ (*BeaconBlockDeneb)(nil), // 7: xatu.eth.v2.BeaconBlockDeneb (*BeaconBlockElectra)(nil), // 8: xatu.eth.v2.BeaconBlockElectra (*BeaconBlockFulu)(nil), // 9: xatu.eth.v2.BeaconBlockFulu - (*v1.BeaconBlockV2)(nil), // 10: xatu.eth.v1.BeaconBlockV2 - (*BeaconBlockAltairV2)(nil), // 11: xatu.eth.v2.BeaconBlockAltairV2 - (*BeaconBlockBellatrixV2)(nil), // 12: xatu.eth.v2.BeaconBlockBellatrixV2 - (*BeaconBlockCapellaV2)(nil), // 13: xatu.eth.v2.BeaconBlockCapellaV2 + (*BeaconBlockGloas)(nil), // 10: xatu.eth.v2.BeaconBlockGloas + (*v1.BeaconBlockV2)(nil), // 11: xatu.eth.v1.BeaconBlockV2 + (*BeaconBlockAltairV2)(nil), // 12: xatu.eth.v2.BeaconBlockAltairV2 + (*BeaconBlockBellatrixV2)(nil), // 13: xatu.eth.v2.BeaconBlockBellatrixV2 + (*BeaconBlockCapellaV2)(nil), // 14: xatu.eth.v2.BeaconBlockCapellaV2 } var file_pkg_proto_eth_v2_events_proto_depIdxs = []int32{ 3, // 0: xatu.eth.v2.EventBlock.phase0_block:type_name -> xatu.eth.v1.BeaconBlock @@ -554,20 +594,22 @@ var file_pkg_proto_eth_v2_events_proto_depIdxs = []int32{ 7, // 4: xatu.eth.v2.EventBlock.deneb_block:type_name -> xatu.eth.v2.BeaconBlockDeneb 8, // 5: xatu.eth.v2.EventBlock.electra_block:type_name -> xatu.eth.v2.BeaconBlockElectra 9, // 6: xatu.eth.v2.EventBlock.fulu_block:type_name -> xatu.eth.v2.BeaconBlockFulu - 0, // 7: xatu.eth.v2.EventBlock.version:type_name -> xatu.eth.v2.BlockVersion - 10, // 8: xatu.eth.v2.EventBlockV2.phase0_block:type_name -> xatu.eth.v1.BeaconBlockV2 - 11, // 9: xatu.eth.v2.EventBlockV2.altair_block:type_name -> xatu.eth.v2.BeaconBlockAltairV2 - 12, // 10: xatu.eth.v2.EventBlockV2.bellatrix_block:type_name -> xatu.eth.v2.BeaconBlockBellatrixV2 - 13, // 11: xatu.eth.v2.EventBlockV2.capella_block:type_name -> xatu.eth.v2.BeaconBlockCapellaV2 - 7, // 12: xatu.eth.v2.EventBlockV2.deneb_block:type_name -> xatu.eth.v2.BeaconBlockDeneb - 8, // 13: xatu.eth.v2.EventBlockV2.electra_block:type_name -> xatu.eth.v2.BeaconBlockElectra - 9, // 14: xatu.eth.v2.EventBlockV2.fulu_block:type_name -> xatu.eth.v2.BeaconBlockFulu - 0, // 15: xatu.eth.v2.EventBlockV2.version:type_name -> xatu.eth.v2.BlockVersion - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 10, // 7: xatu.eth.v2.EventBlock.gloas_block:type_name -> xatu.eth.v2.BeaconBlockGloas + 0, // 8: xatu.eth.v2.EventBlock.version:type_name -> xatu.eth.v2.BlockVersion + 11, // 9: xatu.eth.v2.EventBlockV2.phase0_block:type_name -> xatu.eth.v1.BeaconBlockV2 + 12, // 10: xatu.eth.v2.EventBlockV2.altair_block:type_name -> xatu.eth.v2.BeaconBlockAltairV2 + 13, // 11: xatu.eth.v2.EventBlockV2.bellatrix_block:type_name -> xatu.eth.v2.BeaconBlockBellatrixV2 + 14, // 12: xatu.eth.v2.EventBlockV2.capella_block:type_name -> xatu.eth.v2.BeaconBlockCapellaV2 + 7, // 13: xatu.eth.v2.EventBlockV2.deneb_block:type_name -> xatu.eth.v2.BeaconBlockDeneb + 8, // 14: xatu.eth.v2.EventBlockV2.electra_block:type_name -> xatu.eth.v2.BeaconBlockElectra + 9, // 15: xatu.eth.v2.EventBlockV2.fulu_block:type_name -> xatu.eth.v2.BeaconBlockFulu + 10, // 16: xatu.eth.v2.EventBlockV2.gloas_block:type_name -> xatu.eth.v2.BeaconBlockGloas + 0, // 17: xatu.eth.v2.EventBlockV2.version:type_name -> xatu.eth.v2.BlockVersion + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_pkg_proto_eth_v2_events_proto_init() } @@ -610,6 +652,7 @@ func file_pkg_proto_eth_v2_events_proto_init() { (*EventBlock_DenebBlock)(nil), (*EventBlock_ElectraBlock)(nil), (*EventBlock_FuluBlock)(nil), + (*EventBlock_GloasBlock)(nil), } file_pkg_proto_eth_v2_events_proto_msgTypes[1].OneofWrappers = []any{ (*EventBlockV2_Phase0Block)(nil), @@ -619,6 +662,7 @@ func file_pkg_proto_eth_v2_events_proto_init() { (*EventBlockV2_DenebBlock)(nil), (*EventBlockV2_ElectraBlock)(nil), (*EventBlockV2_FuluBlock)(nil), + (*EventBlockV2_GloasBlock)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/pkg/proto/eth/v2/events.proto b/pkg/proto/eth/v2/events.proto index 15189b428..d6ed435e6 100644 --- a/pkg/proto/eth/v2/events.proto +++ b/pkg/proto/eth/v2/events.proto @@ -24,6 +24,8 @@ enum BlockVersion { ELECTRA = 6; FULU = 7; + + GLOAS = 8; } message EventBlock { @@ -41,6 +43,8 @@ message EventBlock { v2.BeaconBlockElectra electra_block = 8 [ json_name = "ELECTRA" ]; v2.BeaconBlockFulu fulu_block = 9 [ json_name = "FULU" ]; + + v2.BeaconBlockGloas gloas_block = 10 [ json_name = "GLOAS" ]; } string signature = 5; @@ -62,7 +66,9 @@ message EventBlockV2 { v2.BeaconBlockElectra electra_block = 8 [ json_name = "ELECTRA" ]; - v2.BeaconBlockFulu fulu_block = 9 [ json_name = "FULU" ]; + v2.BeaconBlockFulu fulu_block = 9 [ json_name = "FULU" ]; + + v2.BeaconBlockGloas gloas_block = 10 [ json_name = "GLOAS" ]; } string signature = 5; diff --git a/pkg/proto/libp2p/gossipsub/eth.pb.go b/pkg/proto/libp2p/gossipsub/eth.pb.go index 252c3a8d9..0f2e550a1 100644 --- a/pkg/proto/libp2p/gossipsub/eth.pb.go +++ b/pkg/proto/libp2p/gossipsub/eth.pb.go @@ -266,6 +266,354 @@ func (x *DataColumnSidecar) GetBlockRoot() *wrapperspb.StringValue { return nil } +// ExecutionPayloadEnvelope is a summary of a SignedExecutionPayloadEnvelope +// received on the execution_payload gossipsub topic. +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + BuilderIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=builder_index,proto3" json:"builder_index,omitempty"` + BeaconBlockRoot *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=beacon_block_root,proto3" json:"beacon_block_root,omitempty"` + BlockHash *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=block_hash,proto3" json:"block_hash,omitempty"` + StateRoot *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=state_root,proto3" json:"state_root,omitempty"` +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescGZIP(), []int{3} +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBuilderIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.BuilderIndex + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BeaconBlockRoot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBlockHash() *wrapperspb.StringValue { + if x != nil { + return x.BlockHash + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetStateRoot() *wrapperspb.StringValue { + if x != nil { + return x.StateRoot + } + return nil +} + +// ExecutionPayloadBid is a summary of a SignedExecutionPayloadBid +// received on the execution_payload_bid gossipsub topic. +type ExecutionPayloadBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + BuilderIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=builder_index,proto3" json:"builder_index,omitempty"` + BlockHash *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` + ParentBlockHash *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=parent_block_hash,proto3" json:"parent_block_hash,omitempty"` + Value *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + ExecutionPayment *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=execution_payment,proto3" json:"execution_payment,omitempty"` + FeeRecipient *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=fee_recipient,proto3" json:"fee_recipient,omitempty"` + GasLimit *wrapperspb.UInt64Value `protobuf:"bytes,8,opt,name=gas_limit,proto3" json:"gas_limit,omitempty"` + BlobKzgCommitmentCount *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=blob_kzg_commitment_count,proto3" json:"blob_kzg_commitment_count,omitempty"` +} + +func (x *ExecutionPayloadBid) Reset() { + *x = ExecutionPayloadBid{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionPayloadBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadBid) ProtoMessage() {} + +func (x *ExecutionPayloadBid) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadBid.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadBid) Descriptor() ([]byte, []int) { + return file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescGZIP(), []int{4} +} + +func (x *ExecutionPayloadBid) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadBid) GetBuilderIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.BuilderIndex + } + return nil +} + +func (x *ExecutionPayloadBid) GetBlockHash() *wrapperspb.StringValue { + if x != nil { + return x.BlockHash + } + return nil +} + +func (x *ExecutionPayloadBid) GetParentBlockHash() *wrapperspb.StringValue { + if x != nil { + return x.ParentBlockHash + } + return nil +} + +func (x *ExecutionPayloadBid) GetValue() *wrapperspb.UInt64Value { + if x != nil { + return x.Value + } + return nil +} + +func (x *ExecutionPayloadBid) GetExecutionPayment() *wrapperspb.UInt64Value { + if x != nil { + return x.ExecutionPayment + } + return nil +} + +func (x *ExecutionPayloadBid) GetFeeRecipient() *wrapperspb.StringValue { + if x != nil { + return x.FeeRecipient + } + return nil +} + +func (x *ExecutionPayloadBid) GetGasLimit() *wrapperspb.UInt64Value { + if x != nil { + return x.GasLimit + } + return nil +} + +func (x *ExecutionPayloadBid) GetBlobKzgCommitmentCount() *wrapperspb.UInt32Value { + if x != nil { + return x.BlobKzgCommitmentCount + } + return nil +} + +// PayloadAttestationMessage is a summary of a PayloadAttestationMessage +// received on the payload_attestation_message gossipsub topic. +type PayloadAttestationMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=validator_index,proto3" json:"validator_index,omitempty"` + BeaconBlockRoot *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=beacon_block_root,proto3" json:"beacon_block_root,omitempty"` + PayloadPresent *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=payload_present,proto3" json:"payload_present,omitempty"` + BlobDataAvailable *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=blob_data_available,proto3" json:"blob_data_available,omitempty"` +} + +func (x *PayloadAttestationMessage) Reset() { + *x = PayloadAttestationMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadAttestationMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadAttestationMessage) ProtoMessage() {} + +func (x *PayloadAttestationMessage) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadAttestationMessage.ProtoReflect.Descriptor instead. +func (*PayloadAttestationMessage) Descriptor() ([]byte, []int) { + return file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescGZIP(), []int{5} +} + +func (x *PayloadAttestationMessage) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *PayloadAttestationMessage) GetValidatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ValidatorIndex + } + return nil +} + +func (x *PayloadAttestationMessage) GetBeaconBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BeaconBlockRoot + } + return nil +} + +func (x *PayloadAttestationMessage) GetPayloadPresent() *wrapperspb.BoolValue { + if x != nil { + return x.PayloadPresent + } + return nil +} + +func (x *PayloadAttestationMessage) GetBlobDataAvailable() *wrapperspb.BoolValue { + if x != nil { + return x.BlobDataAvailable + } + return nil +} + +// ProposerPreferences is a summary of a SignedProposerPreferences +// received on the proposer_preferences gossipsub topic. +type ProposerPreferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=validator_index,proto3" json:"validator_index,omitempty"` + FeeRecipient *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=fee_recipient,proto3" json:"fee_recipient,omitempty"` + GasLimit *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=gas_limit,proto3" json:"gas_limit,omitempty"` +} + +func (x *ProposerPreferences) Reset() { + *x = ProposerPreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposerPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposerPreferences) ProtoMessage() {} + +func (x *ProposerPreferences) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposerPreferences.ProtoReflect.Descriptor instead. +func (*ProposerPreferences) Descriptor() ([]byte, []int) { + return file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescGZIP(), []int{6} +} + +func (x *ProposerPreferences) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ProposerPreferences) GetValidatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ValidatorIndex + } + return nil +} + +func (x *ProposerPreferences) GetFeeRecipient() *wrapperspb.StringValue { + if x != nil { + return x.FeeRecipient + } + return nil +} + +func (x *ProposerPreferences) GetGasLimit() *wrapperspb.UInt64Value { + if x != nil { + return x.GasLimit + } + return nil +} + var File_pkg_proto_libp2p_gossipsub_eth_proto protoreflect.FileDescriptor var file_pkg_proto_libp2p_gossipsub_eth_proto_rawDesc = []byte{ @@ -339,11 +687,113 @@ var file_pkg_proto_libp2p_gossipsub_eth_proto_rawDesc = []byte{ 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, - 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xd8, 0x02, 0x0a, 0x18, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4a, 0x0a, 0x11, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x22, 0xf1, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x0d, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x4a, + 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, + 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x66, 0x65, + 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x3a, + 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x5a, 0x0a, 0x19, 0x62, 0x6c, + 0x6f, 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x19, 0x62, 0x6c, 0x6f, + 0x62, 0x5f, 0x6b, 0x7a, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf5, 0x02, 0x0a, 0x19, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4a, + 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x12, 0x4c, 0x0a, 0x13, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8f, + 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x42, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, + 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -358,37 +808,65 @@ func file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescGZIP() []byte { return file_pkg_proto_libp2p_gossipsub_eth_proto_rawDescData } -var file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_pkg_proto_libp2p_gossipsub_eth_proto_goTypes = []any{ - (*BeaconBlock)(nil), // 0: xatu.libp2p.gossipsub.eth.BeaconBlock - (*BlobSidecar)(nil), // 1: xatu.libp2p.gossipsub.eth.BlobSidecar - (*DataColumnSidecar)(nil), // 2: xatu.libp2p.gossipsub.eth.DataColumnSidecar - (*wrapperspb.StringValue)(nil), // 3: google.protobuf.StringValue - (*wrapperspb.UInt64Value)(nil), // 4: google.protobuf.UInt64Value - (*wrapperspb.UInt32Value)(nil), // 5: google.protobuf.UInt32Value + (*BeaconBlock)(nil), // 0: xatu.libp2p.gossipsub.eth.BeaconBlock + (*BlobSidecar)(nil), // 1: xatu.libp2p.gossipsub.eth.BlobSidecar + (*DataColumnSidecar)(nil), // 2: xatu.libp2p.gossipsub.eth.DataColumnSidecar + (*ExecutionPayloadEnvelope)(nil), // 3: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope + (*ExecutionPayloadBid)(nil), // 4: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid + (*PayloadAttestationMessage)(nil), // 5: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage + (*ProposerPreferences)(nil), // 6: xatu.libp2p.gossipsub.eth.ProposerPreferences + (*wrapperspb.StringValue)(nil), // 7: google.protobuf.StringValue + (*wrapperspb.UInt64Value)(nil), // 8: google.protobuf.UInt64Value + (*wrapperspb.UInt32Value)(nil), // 9: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 10: google.protobuf.BoolValue } var file_pkg_proto_libp2p_gossipsub_eth_proto_depIdxs = []int32{ - 3, // 0: xatu.libp2p.gossipsub.eth.BeaconBlock.block:type_name -> google.protobuf.StringValue - 4, // 1: xatu.libp2p.gossipsub.eth.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value - 4, // 2: xatu.libp2p.gossipsub.eth.BeaconBlock.proposer_index:type_name -> google.protobuf.UInt64Value - 4, // 3: xatu.libp2p.gossipsub.eth.BlobSidecar.index:type_name -> google.protobuf.UInt64Value - 4, // 4: xatu.libp2p.gossipsub.eth.BlobSidecar.slot:type_name -> google.protobuf.UInt64Value - 4, // 5: xatu.libp2p.gossipsub.eth.BlobSidecar.proposer_index:type_name -> google.protobuf.UInt64Value - 3, // 6: xatu.libp2p.gossipsub.eth.BlobSidecar.state_root:type_name -> google.protobuf.StringValue - 3, // 7: xatu.libp2p.gossipsub.eth.BlobSidecar.parent_root:type_name -> google.protobuf.StringValue - 3, // 8: xatu.libp2p.gossipsub.eth.BlobSidecar.block_root:type_name -> google.protobuf.StringValue - 4, // 9: xatu.libp2p.gossipsub.eth.DataColumnSidecar.index:type_name -> google.protobuf.UInt64Value - 4, // 10: xatu.libp2p.gossipsub.eth.DataColumnSidecar.slot:type_name -> google.protobuf.UInt64Value - 4, // 11: xatu.libp2p.gossipsub.eth.DataColumnSidecar.proposer_index:type_name -> google.protobuf.UInt64Value - 3, // 12: xatu.libp2p.gossipsub.eth.DataColumnSidecar.state_root:type_name -> google.protobuf.StringValue - 3, // 13: xatu.libp2p.gossipsub.eth.DataColumnSidecar.parent_root:type_name -> google.protobuf.StringValue - 5, // 14: xatu.libp2p.gossipsub.eth.DataColumnSidecar.kzg_commitments_count:type_name -> google.protobuf.UInt32Value - 3, // 15: xatu.libp2p.gossipsub.eth.DataColumnSidecar.block_root:type_name -> google.protobuf.StringValue - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 7, // 0: xatu.libp2p.gossipsub.eth.BeaconBlock.block:type_name -> google.protobuf.StringValue + 8, // 1: xatu.libp2p.gossipsub.eth.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value + 8, // 2: xatu.libp2p.gossipsub.eth.BeaconBlock.proposer_index:type_name -> google.protobuf.UInt64Value + 8, // 3: xatu.libp2p.gossipsub.eth.BlobSidecar.index:type_name -> google.protobuf.UInt64Value + 8, // 4: xatu.libp2p.gossipsub.eth.BlobSidecar.slot:type_name -> google.protobuf.UInt64Value + 8, // 5: xatu.libp2p.gossipsub.eth.BlobSidecar.proposer_index:type_name -> google.protobuf.UInt64Value + 7, // 6: xatu.libp2p.gossipsub.eth.BlobSidecar.state_root:type_name -> google.protobuf.StringValue + 7, // 7: xatu.libp2p.gossipsub.eth.BlobSidecar.parent_root:type_name -> google.protobuf.StringValue + 7, // 8: xatu.libp2p.gossipsub.eth.BlobSidecar.block_root:type_name -> google.protobuf.StringValue + 8, // 9: xatu.libp2p.gossipsub.eth.DataColumnSidecar.index:type_name -> google.protobuf.UInt64Value + 8, // 10: xatu.libp2p.gossipsub.eth.DataColumnSidecar.slot:type_name -> google.protobuf.UInt64Value + 8, // 11: xatu.libp2p.gossipsub.eth.DataColumnSidecar.proposer_index:type_name -> google.protobuf.UInt64Value + 7, // 12: xatu.libp2p.gossipsub.eth.DataColumnSidecar.state_root:type_name -> google.protobuf.StringValue + 7, // 13: xatu.libp2p.gossipsub.eth.DataColumnSidecar.parent_root:type_name -> google.protobuf.StringValue + 9, // 14: xatu.libp2p.gossipsub.eth.DataColumnSidecar.kzg_commitments_count:type_name -> google.protobuf.UInt32Value + 7, // 15: xatu.libp2p.gossipsub.eth.DataColumnSidecar.block_root:type_name -> google.protobuf.StringValue + 8, // 16: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 8, // 17: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope.builder_index:type_name -> google.protobuf.UInt64Value + 7, // 18: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope.beacon_block_root:type_name -> google.protobuf.StringValue + 7, // 19: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope.block_hash:type_name -> google.protobuf.StringValue + 7, // 20: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope.state_root:type_name -> google.protobuf.StringValue + 8, // 21: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.slot:type_name -> google.protobuf.UInt64Value + 8, // 22: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.builder_index:type_name -> google.protobuf.UInt64Value + 7, // 23: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.block_hash:type_name -> google.protobuf.StringValue + 7, // 24: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.parent_block_hash:type_name -> google.protobuf.StringValue + 8, // 25: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.value:type_name -> google.protobuf.UInt64Value + 8, // 26: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.execution_payment:type_name -> google.protobuf.UInt64Value + 7, // 27: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.fee_recipient:type_name -> google.protobuf.StringValue + 8, // 28: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.gas_limit:type_name -> google.protobuf.UInt64Value + 9, // 29: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid.blob_kzg_commitment_count:type_name -> google.protobuf.UInt32Value + 8, // 30: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage.slot:type_name -> google.protobuf.UInt64Value + 8, // 31: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage.validator_index:type_name -> google.protobuf.UInt64Value + 7, // 32: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage.beacon_block_root:type_name -> google.protobuf.StringValue + 10, // 33: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage.payload_present:type_name -> google.protobuf.BoolValue + 10, // 34: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage.blob_data_available:type_name -> google.protobuf.BoolValue + 8, // 35: xatu.libp2p.gossipsub.eth.ProposerPreferences.slot:type_name -> google.protobuf.UInt64Value + 8, // 36: xatu.libp2p.gossipsub.eth.ProposerPreferences.validator_index:type_name -> google.protobuf.UInt64Value + 7, // 37: xatu.libp2p.gossipsub.eth.ProposerPreferences.fee_recipient:type_name -> google.protobuf.StringValue + 8, // 38: xatu.libp2p.gossipsub.eth.ProposerPreferences.gas_limit:type_name -> google.protobuf.UInt64Value + 39, // [39:39] is the sub-list for method output_type + 39, // [39:39] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_pkg_proto_libp2p_gossipsub_eth_proto_init() } @@ -433,6 +911,54 @@ func file_pkg_proto_libp2p_gossipsub_eth_proto_init() { return nil } } + file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionPayloadEnvelope); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionPayloadBid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*PayloadAttestationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_libp2p_gossipsub_eth_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ProposerPreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -440,7 +966,7 @@ func file_pkg_proto_libp2p_gossipsub_eth_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_proto_libp2p_gossipsub_eth_proto_rawDesc, NumEnums: 0, - NumMessages: 3, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/proto/libp2p/gossipsub/eth.proto b/pkg/proto/libp2p/gossipsub/eth.proto index 2d462428c..a3e708cd3 100644 --- a/pkg/proto/libp2p/gossipsub/eth.proto +++ b/pkg/proto/libp2p/gossipsub/eth.proto @@ -30,3 +30,48 @@ message DataColumnSidecar { google.protobuf.UInt32Value kzg_commitments_count = 6 [json_name = "kzg_commitments_count"]; google.protobuf.StringValue block_root = 7 [json_name = "block_root"]; } + +// EIP-7732 ePBS gossipsub types + +// ExecutionPayloadEnvelope is a summary of a SignedExecutionPayloadEnvelope +// received on the execution_payload gossipsub topic. +message ExecutionPayloadEnvelope { + google.protobuf.UInt64Value slot = 1 [json_name = "slot"]; + google.protobuf.UInt64Value builder_index = 2 [json_name = "builder_index"]; + google.protobuf.StringValue beacon_block_root = 3 [json_name = "beacon_block_root"]; + google.protobuf.StringValue block_hash = 4 [json_name = "block_hash"]; + google.protobuf.StringValue state_root = 5 [json_name = "state_root"]; +} + +// ExecutionPayloadBid is a summary of a SignedExecutionPayloadBid +// received on the execution_payload_bid gossipsub topic. +message ExecutionPayloadBid { + google.protobuf.UInt64Value slot = 1 [json_name = "slot"]; + google.protobuf.UInt64Value builder_index = 2 [json_name = "builder_index"]; + google.protobuf.StringValue block_hash = 3 [json_name = "block_hash"]; + google.protobuf.StringValue parent_block_hash = 4 [json_name = "parent_block_hash"]; + google.protobuf.UInt64Value value = 5 [json_name = "value"]; + google.protobuf.UInt64Value execution_payment = 6 [json_name = "execution_payment"]; + google.protobuf.StringValue fee_recipient = 7 [json_name = "fee_recipient"]; + google.protobuf.UInt64Value gas_limit = 8 [json_name = "gas_limit"]; + google.protobuf.UInt32Value blob_kzg_commitment_count = 9 [json_name = "blob_kzg_commitment_count"]; +} + +// PayloadAttestationMessage is a summary of a PayloadAttestationMessage +// received on the payload_attestation_message gossipsub topic. +message PayloadAttestationMessage { + google.protobuf.UInt64Value slot = 1 [json_name = "slot"]; + google.protobuf.UInt64Value validator_index = 2 [json_name = "validator_index"]; + google.protobuf.StringValue beacon_block_root = 3 [json_name = "beacon_block_root"]; + google.protobuf.BoolValue payload_present = 4 [json_name = "payload_present"]; + google.protobuf.BoolValue blob_data_available = 5 [json_name = "blob_data_available"]; +} + +// ProposerPreferences is a summary of a SignedProposerPreferences +// received on the proposer_preferences gossipsub topic. +message ProposerPreferences { + google.protobuf.UInt64Value slot = 1 [json_name = "slot"]; + google.protobuf.UInt64Value validator_index = 2 [json_name = "validator_index"]; + google.protobuf.StringValue fee_recipient = 3 [json_name = "fee_recipient"]; + google.protobuf.UInt64Value gas_limit = 4 [json_name = "gas_limit"]; +} diff --git a/pkg/proto/xatu/coordinator.pb.go b/pkg/proto/xatu/coordinator.pb.go index d08ceb6da..b7e9fce1c 100644 --- a/pkg/proto/xatu/coordinator.pb.go +++ b/pkg/proto/xatu/coordinator.pb.go @@ -39,6 +39,10 @@ const ( CannonType_BEACON_API_ETH_V1_BEACON_COMMITTEE CannonType = 13 CannonType_BEACON_API_ETH_V1_BEACON_SYNC_COMMITTEE CannonType = 14 CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE CannonType = 15 + CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST CannonType = 16 + // EIP-7732 ePBS cannon types + CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION CannonType = 17 + CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID CannonType = 18 ) // Enum value maps for CannonType. @@ -59,6 +63,9 @@ var ( 13: "BEACON_API_ETH_V1_BEACON_COMMITTEE", 14: "BEACON_API_ETH_V1_BEACON_SYNC_COMMITTEE", 15: "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE", + 16: "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST", + 17: "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION", + 18: "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID", } CannonType_value = map[string]int32{ "BEACON_API_ETH_V2_BEACON_BLOCK_VOLUNTARY_EXIT": 0, @@ -76,6 +83,9 @@ var ( "BEACON_API_ETH_V1_BEACON_COMMITTEE": 13, "BEACON_API_ETH_V1_BEACON_SYNC_COMMITTEE": 14, "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE": 15, + "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST": 16, + "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION": 17, + "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID": 18, } ) @@ -2360,6 +2370,148 @@ func (x *CannonLocationEthV2BeaconBlockSyncAggregate) GetBackfillingCheckpointMa return nil } +type CannonLocationEthV2BeaconBlockAccessList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillingCheckpointMarker *BackfillingCheckpointMarker `protobuf:"bytes,1,opt,name=backfilling_checkpoint_marker,json=backfillingCheckpointMarker,proto3" json:"backfilling_checkpoint_marker,omitempty"` +} + +func (x *CannonLocationEthV2BeaconBlockAccessList) Reset() { + *x = CannonLocationEthV2BeaconBlockAccessList{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CannonLocationEthV2BeaconBlockAccessList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CannonLocationEthV2BeaconBlockAccessList) ProtoMessage() {} + +func (x *CannonLocationEthV2BeaconBlockAccessList) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CannonLocationEthV2BeaconBlockAccessList.ProtoReflect.Descriptor instead. +func (*CannonLocationEthV2BeaconBlockAccessList) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{41} +} + +func (x *CannonLocationEthV2BeaconBlockAccessList) GetBackfillingCheckpointMarker() *BackfillingCheckpointMarker { + if x != nil { + return x.BackfillingCheckpointMarker + } + return nil +} + +// EIP-7732 ePBS cannon location types +type CannonLocationEthV2BeaconBlockPayloadAttestation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillingCheckpointMarker *BackfillingCheckpointMarker `protobuf:"bytes,1,opt,name=backfilling_checkpoint_marker,json=backfillingCheckpointMarker,proto3" json:"backfilling_checkpoint_marker,omitempty"` +} + +func (x *CannonLocationEthV2BeaconBlockPayloadAttestation) Reset() { + *x = CannonLocationEthV2BeaconBlockPayloadAttestation{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CannonLocationEthV2BeaconBlockPayloadAttestation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CannonLocationEthV2BeaconBlockPayloadAttestation) ProtoMessage() {} + +func (x *CannonLocationEthV2BeaconBlockPayloadAttestation) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CannonLocationEthV2BeaconBlockPayloadAttestation.ProtoReflect.Descriptor instead. +func (*CannonLocationEthV2BeaconBlockPayloadAttestation) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{42} +} + +func (x *CannonLocationEthV2BeaconBlockPayloadAttestation) GetBackfillingCheckpointMarker() *BackfillingCheckpointMarker { + if x != nil { + return x.BackfillingCheckpointMarker + } + return nil +} + +type CannonLocationEthV2BeaconBlockExecutionPayloadBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackfillingCheckpointMarker *BackfillingCheckpointMarker `protobuf:"bytes,1,opt,name=backfilling_checkpoint_marker,json=backfillingCheckpointMarker,proto3" json:"backfilling_checkpoint_marker,omitempty"` +} + +func (x *CannonLocationEthV2BeaconBlockExecutionPayloadBid) Reset() { + *x = CannonLocationEthV2BeaconBlockExecutionPayloadBid{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CannonLocationEthV2BeaconBlockExecutionPayloadBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CannonLocationEthV2BeaconBlockExecutionPayloadBid) ProtoMessage() {} + +func (x *CannonLocationEthV2BeaconBlockExecutionPayloadBid) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CannonLocationEthV2BeaconBlockExecutionPayloadBid.ProtoReflect.Descriptor instead. +func (*CannonLocationEthV2BeaconBlockExecutionPayloadBid) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{43} +} + +func (x *CannonLocationEthV2BeaconBlockExecutionPayloadBid) GetBackfillingCheckpointMarker() *BackfillingCheckpointMarker { + if x != nil { + return x.BackfillingCheckpointMarker + } + return nil +} + type CannonLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2384,13 +2536,16 @@ type CannonLocation struct { // *CannonLocation_EthV1BeaconCommittee // *CannonLocation_EthV1BeaconSyncCommittee // *CannonLocation_EthV2BeaconBlockSyncAggregate + // *CannonLocation_EthV2BeaconBlockAccessList + // *CannonLocation_EthV2BeaconBlockPayloadAttestation + // *CannonLocation_EthV2BeaconBlockExecutionPayloadBid Data isCannonLocation_Data `protobuf_oneof:"Data"` } func (x *CannonLocation) Reset() { *x = CannonLocation{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[41] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2403,7 +2558,7 @@ func (x *CannonLocation) String() string { func (*CannonLocation) ProtoMessage() {} func (x *CannonLocation) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[41] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2416,7 +2571,7 @@ func (x *CannonLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use CannonLocation.ProtoReflect.Descriptor instead. func (*CannonLocation) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{41} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{44} } func (x *CannonLocation) GetNetworkId() string { @@ -2545,6 +2700,27 @@ func (x *CannonLocation) GetEthV2BeaconBlockSyncAggregate() *CannonLocationEthV2 return nil } +func (x *CannonLocation) GetEthV2BeaconBlockAccessList() *CannonLocationEthV2BeaconBlockAccessList { + if x, ok := x.GetData().(*CannonLocation_EthV2BeaconBlockAccessList); ok { + return x.EthV2BeaconBlockAccessList + } + return nil +} + +func (x *CannonLocation) GetEthV2BeaconBlockPayloadAttestation() *CannonLocationEthV2BeaconBlockPayloadAttestation { + if x, ok := x.GetData().(*CannonLocation_EthV2BeaconBlockPayloadAttestation); ok { + return x.EthV2BeaconBlockPayloadAttestation + } + return nil +} + +func (x *CannonLocation) GetEthV2BeaconBlockExecutionPayloadBid() *CannonLocationEthV2BeaconBlockExecutionPayloadBid { + if x, ok := x.GetData().(*CannonLocation_EthV2BeaconBlockExecutionPayloadBid); ok { + return x.EthV2BeaconBlockExecutionPayloadBid + } + return nil +} + type isCannonLocation_Data interface { isCannonLocation_Data() } @@ -2611,6 +2787,19 @@ type CannonLocation_EthV2BeaconBlockSyncAggregate struct { EthV2BeaconBlockSyncAggregate *CannonLocationEthV2BeaconBlockSyncAggregate `protobuf:"bytes,18,opt,name=eth_v2_beacon_block_sync_aggregate,json=BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE,proto3,oneof"` } +type CannonLocation_EthV2BeaconBlockAccessList struct { + EthV2BeaconBlockAccessList *CannonLocationEthV2BeaconBlockAccessList `protobuf:"bytes,19,opt,name=eth_v2_beacon_block_access_list,json=BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST,proto3,oneof"` +} + +type CannonLocation_EthV2BeaconBlockPayloadAttestation struct { + // EIP-7732 ePBS + EthV2BeaconBlockPayloadAttestation *CannonLocationEthV2BeaconBlockPayloadAttestation `protobuf:"bytes,20,opt,name=eth_v2_beacon_block_payload_attestation,json=BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION,proto3,oneof"` +} + +type CannonLocation_EthV2BeaconBlockExecutionPayloadBid struct { + EthV2BeaconBlockExecutionPayloadBid *CannonLocationEthV2BeaconBlockExecutionPayloadBid `protobuf:"bytes,21,opt,name=eth_v2_beacon_block_execution_payload_bid,json=BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + func (*CannonLocation_EthV2BeaconBlockVoluntaryExit) isCannonLocation_Data() {} func (*CannonLocation_EthV2BeaconBlockProposerSlashing) isCannonLocation_Data() {} @@ -2641,6 +2830,12 @@ func (*CannonLocation_EthV1BeaconSyncCommittee) isCannonLocation_Data() {} func (*CannonLocation_EthV2BeaconBlockSyncAggregate) isCannonLocation_Data() {} +func (*CannonLocation_EthV2BeaconBlockAccessList) isCannonLocation_Data() {} + +func (*CannonLocation_EthV2BeaconBlockPayloadAttestation) isCannonLocation_Data() {} + +func (*CannonLocation_EthV2BeaconBlockExecutionPayloadBid) isCannonLocation_Data() {} + type GetCannonLocationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2653,7 +2848,7 @@ type GetCannonLocationRequest struct { func (x *GetCannonLocationRequest) Reset() { *x = GetCannonLocationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[42] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2666,7 +2861,7 @@ func (x *GetCannonLocationRequest) String() string { func (*GetCannonLocationRequest) ProtoMessage() {} func (x *GetCannonLocationRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[42] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2679,7 +2874,7 @@ func (x *GetCannonLocationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCannonLocationRequest.ProtoReflect.Descriptor instead. func (*GetCannonLocationRequest) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{42} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{45} } func (x *GetCannonLocationRequest) GetNetworkId() string { @@ -2707,7 +2902,7 @@ type GetCannonLocationResponse struct { func (x *GetCannonLocationResponse) Reset() { *x = GetCannonLocationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[43] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2720,7 +2915,7 @@ func (x *GetCannonLocationResponse) String() string { func (*GetCannonLocationResponse) ProtoMessage() {} func (x *GetCannonLocationResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[43] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2733,7 +2928,7 @@ func (x *GetCannonLocationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCannonLocationResponse.ProtoReflect.Descriptor instead. func (*GetCannonLocationResponse) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{43} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{46} } func (x *GetCannonLocationResponse) GetLocation() *CannonLocation { @@ -2754,7 +2949,7 @@ type UpsertCannonLocationRequest struct { func (x *UpsertCannonLocationRequest) Reset() { *x = UpsertCannonLocationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[44] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2767,7 +2962,7 @@ func (x *UpsertCannonLocationRequest) String() string { func (*UpsertCannonLocationRequest) ProtoMessage() {} func (x *UpsertCannonLocationRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[44] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2780,7 +2975,7 @@ func (x *UpsertCannonLocationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertCannonLocationRequest.ProtoReflect.Descriptor instead. func (*UpsertCannonLocationRequest) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{44} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{47} } func (x *UpsertCannonLocationRequest) GetLocation() *CannonLocation { @@ -2799,7 +2994,7 @@ type UpsertCannonLocationResponse struct { func (x *UpsertCannonLocationResponse) Reset() { *x = UpsertCannonLocationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[45] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2812,7 +3007,7 @@ func (x *UpsertCannonLocationResponse) String() string { func (*UpsertCannonLocationResponse) ProtoMessage() {} func (x *UpsertCannonLocationResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[45] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2825,7 +3020,7 @@ func (x *UpsertCannonLocationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertCannonLocationResponse.ProtoReflect.Descriptor instead. func (*UpsertCannonLocationResponse) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{45} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{48} } // Track current slot for consistency processes @@ -2842,7 +3037,7 @@ type RelayMonitorSlotMarker struct { func (x *RelayMonitorSlotMarker) Reset() { *x = RelayMonitorSlotMarker{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[46] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2855,7 +3050,7 @@ func (x *RelayMonitorSlotMarker) String() string { func (*RelayMonitorSlotMarker) ProtoMessage() {} func (x *RelayMonitorSlotMarker) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[46] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2868,7 +3063,7 @@ func (x *RelayMonitorSlotMarker) ProtoReflect() protoreflect.Message { // Deprecated: Use RelayMonitorSlotMarker.ProtoReflect.Descriptor instead. func (*RelayMonitorSlotMarker) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{46} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{49} } func (x *RelayMonitorSlotMarker) GetCurrentSlot() uint64 { @@ -2889,7 +3084,7 @@ type RelayMonitorLocationBidTrace struct { func (x *RelayMonitorLocationBidTrace) Reset() { *x = RelayMonitorLocationBidTrace{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[47] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2902,7 +3097,7 @@ func (x *RelayMonitorLocationBidTrace) String() string { func (*RelayMonitorLocationBidTrace) ProtoMessage() {} func (x *RelayMonitorLocationBidTrace) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[47] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2915,7 +3110,7 @@ func (x *RelayMonitorLocationBidTrace) ProtoReflect() protoreflect.Message { // Deprecated: Use RelayMonitorLocationBidTrace.ProtoReflect.Descriptor instead. func (*RelayMonitorLocationBidTrace) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{47} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{50} } func (x *RelayMonitorLocationBidTrace) GetSlotMarker() *RelayMonitorSlotMarker { @@ -2936,7 +3131,7 @@ type RelayMonitorLocationPayloadDelivered struct { func (x *RelayMonitorLocationPayloadDelivered) Reset() { *x = RelayMonitorLocationPayloadDelivered{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[48] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2949,7 +3144,7 @@ func (x *RelayMonitorLocationPayloadDelivered) String() string { func (*RelayMonitorLocationPayloadDelivered) ProtoMessage() {} func (x *RelayMonitorLocationPayloadDelivered) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[48] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2962,7 +3157,7 @@ func (x *RelayMonitorLocationPayloadDelivered) ProtoReflect() protoreflect.Messa // Deprecated: Use RelayMonitorLocationPayloadDelivered.ProtoReflect.Descriptor instead. func (*RelayMonitorLocationPayloadDelivered) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{48} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{51} } func (x *RelayMonitorLocationPayloadDelivered) GetSlotMarker() *RelayMonitorSlotMarker { @@ -2991,7 +3186,7 @@ type RelayMonitorLocation struct { func (x *RelayMonitorLocation) Reset() { *x = RelayMonitorLocation{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[49] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3004,7 +3199,7 @@ func (x *RelayMonitorLocation) String() string { func (*RelayMonitorLocation) ProtoMessage() {} func (x *RelayMonitorLocation) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[49] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3017,7 +3212,7 @@ func (x *RelayMonitorLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use RelayMonitorLocation.ProtoReflect.Descriptor instead. func (*RelayMonitorLocation) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{49} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{52} } func (x *RelayMonitorLocation) GetMetaNetworkName() string { @@ -3099,7 +3294,7 @@ type GetRelayMonitorLocationRequest struct { func (x *GetRelayMonitorLocationRequest) Reset() { *x = GetRelayMonitorLocationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[50] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3112,7 +3307,7 @@ func (x *GetRelayMonitorLocationRequest) String() string { func (*GetRelayMonitorLocationRequest) ProtoMessage() {} func (x *GetRelayMonitorLocationRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[50] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3125,7 +3320,7 @@ func (x *GetRelayMonitorLocationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRelayMonitorLocationRequest.ProtoReflect.Descriptor instead. func (*GetRelayMonitorLocationRequest) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{50} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{53} } func (x *GetRelayMonitorLocationRequest) GetMetaNetworkName() string { @@ -3167,7 +3362,7 @@ type GetRelayMonitorLocationResponse struct { func (x *GetRelayMonitorLocationResponse) Reset() { *x = GetRelayMonitorLocationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[51] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3375,7 @@ func (x *GetRelayMonitorLocationResponse) String() string { func (*GetRelayMonitorLocationResponse) ProtoMessage() {} func (x *GetRelayMonitorLocationResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[51] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3388,7 @@ func (x *GetRelayMonitorLocationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRelayMonitorLocationResponse.ProtoReflect.Descriptor instead. func (*GetRelayMonitorLocationResponse) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{51} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{54} } func (x *GetRelayMonitorLocationResponse) GetLocation() *RelayMonitorLocation { @@ -3214,7 +3409,7 @@ type UpsertRelayMonitorLocationRequest struct { func (x *UpsertRelayMonitorLocationRequest) Reset() { *x = UpsertRelayMonitorLocationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[52] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3227,7 +3422,7 @@ func (x *UpsertRelayMonitorLocationRequest) String() string { func (*UpsertRelayMonitorLocationRequest) ProtoMessage() {} func (x *UpsertRelayMonitorLocationRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[52] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3240,7 +3435,7 @@ func (x *UpsertRelayMonitorLocationRequest) ProtoReflect() protoreflect.Message // Deprecated: Use UpsertRelayMonitorLocationRequest.ProtoReflect.Descriptor instead. func (*UpsertRelayMonitorLocationRequest) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{52} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{55} } func (x *UpsertRelayMonitorLocationRequest) GetLocation() *RelayMonitorLocation { @@ -3259,7 +3454,7 @@ type UpsertRelayMonitorLocationResponse struct { func (x *UpsertRelayMonitorLocationResponse) Reset() { *x = UpsertRelayMonitorLocationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[53] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3272,7 +3467,7 @@ func (x *UpsertRelayMonitorLocationResponse) String() string { func (*UpsertRelayMonitorLocationResponse) ProtoMessage() {} func (x *UpsertRelayMonitorLocationResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[53] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3285,7 +3480,7 @@ func (x *UpsertRelayMonitorLocationResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UpsertRelayMonitorLocationResponse.ProtoReflect.Descriptor instead. func (*UpsertRelayMonitorLocationResponse) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{53} + return file_pkg_proto_xatu_coordinator_proto_rawDescGZIP(), []int{56} } type ExecutionNodeStatus_Capability struct { @@ -3300,7 +3495,7 @@ type ExecutionNodeStatus_Capability struct { func (x *ExecutionNodeStatus_Capability) Reset() { *x = ExecutionNodeStatus_Capability{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[54] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3313,7 +3508,7 @@ func (x *ExecutionNodeStatus_Capability) String() string { func (*ExecutionNodeStatus_Capability) ProtoMessage() {} func (x *ExecutionNodeStatus_Capability) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[54] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3355,7 +3550,7 @@ type ExecutionNodeStatus_ForkID struct { func (x *ExecutionNodeStatus_ForkID) Reset() { *x = ExecutionNodeStatus_ForkID{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[55] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3368,7 +3563,7 @@ func (x *ExecutionNodeStatus_ForkID) String() string { func (*ExecutionNodeStatus_ForkID) ProtoMessage() {} func (x *ExecutionNodeStatus_ForkID) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[55] + mi := &file_pkg_proto_xatu_coordinator_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3762,395 +3957,463 @@ var file_pkg_proto_xatu_coordinator_proto_rawDesc = []byte{ 0x61, 0x74, 0x75, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x1b, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0xe5, 0x10, 0x0a, - 0x0e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x24, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x6f, 0x6c, - 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, - 0x45, 0x78, 0x69, 0x74, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, - 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x97, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, - 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, - 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x30, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, - 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, - 0x7a, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0x91, 0x01, 0x0a, + 0x28, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x1d, 0x62, 0x61, 0x63, + 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x52, 0x1b, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x22, 0x99, 0x01, 0x0a, 0x30, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x1d, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, + 0x1b, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0x9a, 0x01, 0x0a, + 0x31, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, + 0x69, 0x64, 0x12, 0x65, 0x0a, 0x1d, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x1b, 0x62, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0xb2, 0x14, 0x0a, 0x0e, 0x43, 0x61, + 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, + 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, + 0x74, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x12, 0x97, 0x01, 0x0a, 0x25, + 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, + 0x49, 0x54, 0x12, 0x97, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, 0x7a, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, - 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, + 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x48, 0x00, + 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x12, 0x97, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, + 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, + 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, + 0x4e, 0x47, 0x12, 0xa7, 0x01, 0x0a, 0x2b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, 0x73, 0x5f, 0x74, + 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, + 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6c, + 0x73, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x48, 0x00, 0x52, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, + 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, + 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, 0xa3, 0x01, 0x0a, + 0x29, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, + 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x12, 0x83, 0x01, 0x0a, 0x1e, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, - 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, 0xa7, 0x01, 0x0a, 0x2b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, - 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, - 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, + 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x29, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, + 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x12, 0x63, 0x0a, 0x13, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, + 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x1e, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x77, 0x0a, + 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, + 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, + 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x73, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x42, 0x6c, 0x73, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, - 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, - 0xa3, 0x01, 0x0a, 0x29, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, + 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1f, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, + 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0xa6, 0x01, 0x0a, 0x2a, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x35, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, + 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x72, 0x0a, 0x18, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, + 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, + 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, + 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x12, 0x6f, 0x0a, 0x17, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x65, 0x48, 0x00, 0x52, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x7d, 0x0a, 0x1c, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x48, 0x00, 0x52, + 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x8e, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, + 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x12, 0x85, 0x01, 0x0a, 0x1f, 0x65, 0x74, + 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x83, 0x01, 0x0a, 0x1e, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, - 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x48, 0x00, - 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x12, 0x63, 0x0a, 0x13, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, - 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, - 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x12, 0x77, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x73, 0x0a, 0x1b, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1f, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, - 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0xa6, - 0x01, 0x0a, 0x2a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x12, 0x9d, 0x01, 0x0a, 0x27, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, - 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x72, 0x0a, 0x18, 0x65, 0x74, 0x68, 0x5f, 0x76, - 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x12, 0x6f, 0x0a, 0x17, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x48, 0x00, 0x52, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x7d, 0x0a, 0x1c, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x79, - 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, - 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, - 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x8e, 0x01, 0x0a, 0x22, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, - 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x79, - 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x2d, 0x42, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, - 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x42, 0x06, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, - 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, - 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, - 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, - 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, - 0x6f, 0x74, 0x22, 0x5d, 0x0a, 0x1c, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, - 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x72, 0x22, 0x65, 0x0a, 0x24, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, - 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x6c, - 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, - 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, - 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x50, 0x0a, 0x09, 0x62, 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x17, 0x52, 0x45, 0x4c, - 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x12, 0x68, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1f, 0x52, - 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x59, - 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x42, 0x06, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xc1, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x1f, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x41, + 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x12, 0xa2, 0x01, 0x0a, 0x29, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, + 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x74, 0x68, 0x56, 0x32, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x48, 0x00, + 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, + 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x42, 0x06, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5f, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x4d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, + 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x21, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, + 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3b, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, + 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x22, 0x5d, 0x0a, 0x1c, + 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0b, + 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, + 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x24, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x22, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x83, 0x06, 0x0a, 0x0a, 0x43, 0x61, 0x6e, - 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, - 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, 0x00, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x6c, 0x6f, 0x74, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x09, + 0x62, 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x64, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x17, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, + 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x12, 0x68, + 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, + 0x76, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, + 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x42, 0x06, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x22, 0xc1, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, + 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x5b, 0x0a, 0x21, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x22, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2a, 0xa5, 0x07, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, + 0x49, 0x54, 0x10, 0x00, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, + 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, - 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x01, - 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, + 0x4f, 0x53, 0x49, 0x54, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, + 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x3a, 0x0a, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, - 0x10, 0x03, 0x12, 0x3a, 0x0a, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, + 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x04, 0x12, 0x38, 0x0a, 0x34, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, - 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x04, 0x12, 0x38, - 0x0a, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x10, + 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x09, + 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, + 0x55, 0x54, 0x59, 0x10, 0x0a, 0x12, 0x39, 0x0a, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, + 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, + 0x12, 0x27, 0x0a, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, + 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x0c, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x10, + 0x0d, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x10, 0x0e, 0x12, 0x31, + 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, - 0x52, 0x41, 0x57, 0x41, 0x4c, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, - 0x45, 0x43, 0x41, 0x52, 0x10, 0x09, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x10, 0x0a, 0x12, 0x39, 0x0a, 0x35, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, - 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x0c, 0x12, - 0x26, 0x0a, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, - 0x49, 0x54, 0x54, 0x45, 0x45, 0x10, 0x0d, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, - 0x45, 0x45, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, - 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x2a, 0x1f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x2a, 0x54, - 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x00, 0x12, - 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, - 0x45, 0x44, 0x10, 0x01, 0x32, 0xfb, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, + 0x0f, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x10, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, + 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x11, 0x12, 0x38, 0x0a, 0x34, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, + 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, + 0x44, 0x10, 0x12, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x2a, 0x1f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x50, 0x52, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x41, 0x53, + 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x2a, 0x54, 0x0a, 0x10, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, + 0x0a, 0x17, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, + 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, + 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x59, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x01, + 0x32, 0xfb, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x56, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7d, + 0x0a, 0x1e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, - 0x6c, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x80, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, + 0x12, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, + 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x1e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, - 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x2e, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, + 0x6c, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x6c, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x7d, 0x0a, 0x1e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x65, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x47, 0x65, - 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, - 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, - 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, - 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, - 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x71, 0x0a, 0x1a, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, - 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, - 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, 0x61, 0x74, 0x75, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x1e, + 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2b, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5f, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x68, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x1a, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, + 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, + 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4166,7 +4429,7 @@ func file_pkg_proto_xatu_coordinator_proto_rawDescGZIP() []byte { } var file_pkg_proto_xatu_coordinator_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_pkg_proto_xatu_coordinator_proto_msgTypes = make([]protoimpl.MessageInfo, 56) +var file_pkg_proto_xatu_coordinator_proto_msgTypes = make([]protoimpl.MessageInfo, 59) var file_pkg_proto_xatu_coordinator_proto_goTypes = []any{ (CannonType)(0), // 0: xatu.CannonType (RelayMonitorType)(0), // 1: xatu.RelayMonitorType @@ -4211,30 +4474,33 @@ var file_pkg_proto_xatu_coordinator_proto_goTypes = []any{ (*CannonLocationEthV1BeaconCommittee)(nil), // 40: xatu.CannonLocationEthV1BeaconCommittee (*CannonLocationEthV1BeaconSyncCommittee)(nil), // 41: xatu.CannonLocationEthV1BeaconSyncCommittee (*CannonLocationEthV2BeaconBlockSyncAggregate)(nil), // 42: xatu.CannonLocationEthV2BeaconBlockSyncAggregate - (*CannonLocation)(nil), // 43: xatu.CannonLocation - (*GetCannonLocationRequest)(nil), // 44: xatu.GetCannonLocationRequest - (*GetCannonLocationResponse)(nil), // 45: xatu.GetCannonLocationResponse - (*UpsertCannonLocationRequest)(nil), // 46: xatu.UpsertCannonLocationRequest - (*UpsertCannonLocationResponse)(nil), // 47: xatu.UpsertCannonLocationResponse - (*RelayMonitorSlotMarker)(nil), // 48: xatu.RelayMonitorSlotMarker - (*RelayMonitorLocationBidTrace)(nil), // 49: xatu.RelayMonitorLocationBidTrace - (*RelayMonitorLocationPayloadDelivered)(nil), // 50: xatu.RelayMonitorLocationPayloadDelivered - (*RelayMonitorLocation)(nil), // 51: xatu.RelayMonitorLocation - (*GetRelayMonitorLocationRequest)(nil), // 52: xatu.GetRelayMonitorLocationRequest - (*GetRelayMonitorLocationResponse)(nil), // 53: xatu.GetRelayMonitorLocationResponse - (*UpsertRelayMonitorLocationRequest)(nil), // 54: xatu.UpsertRelayMonitorLocationRequest - (*UpsertRelayMonitorLocationResponse)(nil), // 55: xatu.UpsertRelayMonitorLocationResponse - (*ExecutionNodeStatus_Capability)(nil), // 56: xatu.ExecutionNodeStatus.Capability - (*ExecutionNodeStatus_ForkID)(nil), // 57: xatu.ExecutionNodeStatus.ForkID - (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp + (*CannonLocationEthV2BeaconBlockAccessList)(nil), // 43: xatu.CannonLocationEthV2BeaconBlockAccessList + (*CannonLocationEthV2BeaconBlockPayloadAttestation)(nil), // 44: xatu.CannonLocationEthV2BeaconBlockPayloadAttestation + (*CannonLocationEthV2BeaconBlockExecutionPayloadBid)(nil), // 45: xatu.CannonLocationEthV2BeaconBlockExecutionPayloadBid + (*CannonLocation)(nil), // 46: xatu.CannonLocation + (*GetCannonLocationRequest)(nil), // 47: xatu.GetCannonLocationRequest + (*GetCannonLocationResponse)(nil), // 48: xatu.GetCannonLocationResponse + (*UpsertCannonLocationRequest)(nil), // 49: xatu.UpsertCannonLocationRequest + (*UpsertCannonLocationResponse)(nil), // 50: xatu.UpsertCannonLocationResponse + (*RelayMonitorSlotMarker)(nil), // 51: xatu.RelayMonitorSlotMarker + (*RelayMonitorLocationBidTrace)(nil), // 52: xatu.RelayMonitorLocationBidTrace + (*RelayMonitorLocationPayloadDelivered)(nil), // 53: xatu.RelayMonitorLocationPayloadDelivered + (*RelayMonitorLocation)(nil), // 54: xatu.RelayMonitorLocation + (*GetRelayMonitorLocationRequest)(nil), // 55: xatu.GetRelayMonitorLocationRequest + (*GetRelayMonitorLocationResponse)(nil), // 56: xatu.GetRelayMonitorLocationResponse + (*UpsertRelayMonitorLocationRequest)(nil), // 57: xatu.UpsertRelayMonitorLocationRequest + (*UpsertRelayMonitorLocationResponse)(nil), // 58: xatu.UpsertRelayMonitorLocationResponse + (*ExecutionNodeStatus_Capability)(nil), // 59: xatu.ExecutionNodeStatus.Capability + (*ExecutionNodeStatus_ForkID)(nil), // 60: xatu.ExecutionNodeStatus.ForkID + (*timestamppb.Timestamp)(nil), // 61: google.protobuf.Timestamp } var file_pkg_proto_xatu_coordinator_proto_depIdxs = []int32{ - 56, // 0: xatu.ExecutionNodeStatus.capabilities:type_name -> xatu.ExecutionNodeStatus.Capability - 57, // 1: xatu.ExecutionNodeStatus.fork_id:type_name -> xatu.ExecutionNodeStatus.ForkID + 59, // 0: xatu.ExecutionNodeStatus.capabilities:type_name -> xatu.ExecutionNodeStatus.Capability + 60, // 1: xatu.ExecutionNodeStatus.fork_id:type_name -> xatu.ExecutionNodeStatus.ForkID 6, // 2: xatu.CreateExecutionNodeRecordStatusRequest.status:type_name -> xatu.ExecutionNodeStatus 9, // 3: xatu.CoordinateExecutionNodeRecordsRequest.node_records:type_name -> xatu.CoordinatedNodeRecord - 58, // 4: xatu.ConsensusNodeStatus.finalized_epoch_start_date_time:type_name -> google.protobuf.Timestamp - 58, // 5: xatu.ConsensusNodeStatus.head_slot_start_date_time:type_name -> google.protobuf.Timestamp + 61, // 4: xatu.ConsensusNodeStatus.finalized_epoch_start_date_time:type_name -> google.protobuf.Timestamp + 61, // 5: xatu.ConsensusNodeStatus.head_slot_start_date_time:type_name -> google.protobuf.Timestamp 12, // 6: xatu.CreateConsensusNodeRecordStatusRequest.status:type_name -> xatu.ConsensusNodeStatus 12, // 7: xatu.CreateConsensusNodeRecordStatusesRequest.statuses:type_name -> xatu.ConsensusNodeStatus 9, // 8: xatu.CoordinateConsensusNodeRecordsRequest.node_records:type_name -> xatu.CoordinatedNodeRecord @@ -4253,68 +4519,74 @@ var file_pkg_proto_xatu_coordinator_proto_depIdxs = []int32{ 27, // 21: xatu.CannonLocationEthV1BeaconCommittee.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker 27, // 22: xatu.CannonLocationEthV1BeaconSyncCommittee.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker 27, // 23: xatu.CannonLocationEthV2BeaconBlockSyncAggregate.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker - 0, // 24: xatu.CannonLocation.type:type_name -> xatu.CannonType - 28, // 25: xatu.CannonLocation.eth_v2_beacon_block_voluntary_exit:type_name -> xatu.CannonLocationEthV2BeaconBlockVoluntaryExit - 29, // 26: xatu.CannonLocation.eth_v2_beacon_block_proposer_slashing:type_name -> xatu.CannonLocationEthV2BeaconBlockProposerSlashing - 30, // 27: xatu.CannonLocation.eth_v2_beacon_block_deposit:type_name -> xatu.CannonLocationEthV2BeaconBlockDeposit - 31, // 28: xatu.CannonLocation.eth_v2_beacon_block_attester_slashing:type_name -> xatu.CannonLocationEthV2BeaconBlockAttesterSlashing - 32, // 29: xatu.CannonLocation.eth_v2_beacon_block_bls_to_execution_change:type_name -> xatu.CannonLocationEthV2BeaconBlockBlsToExecutionChange - 33, // 30: xatu.CannonLocation.eth_v2_beacon_block_execution_transaction:type_name -> xatu.CannonLocationEthV2BeaconBlockExecutionTransaction - 34, // 31: xatu.CannonLocation.eth_v2_beacon_block_withdrawal:type_name -> xatu.CannonLocationEthV2BeaconBlockWithdrawal - 35, // 32: xatu.CannonLocation.eth_v2_beacon_block:type_name -> xatu.CannonLocationEthV2BeaconBlock - 36, // 33: xatu.CannonLocation.eth_v1_beacon_blob_sidecar:type_name -> xatu.CannonLocationEthV1BeaconBlobSidecar - 37, // 34: xatu.CannonLocation.eth_v1_beacon_proposer_duty:type_name -> xatu.CannonLocationEthV1BeaconProposerDuty - 38, // 35: xatu.CannonLocation.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.CannonLocationEthV2BeaconBlockElaboratedAttestation - 39, // 36: xatu.CannonLocation.eth_v1_beacon_validators:type_name -> xatu.CannonLocationEthV1BeaconValidators - 40, // 37: xatu.CannonLocation.eth_v1_beacon_committee:type_name -> xatu.CannonLocationEthV1BeaconCommittee - 41, // 38: xatu.CannonLocation.eth_v1_beacon_sync_committee:type_name -> xatu.CannonLocationEthV1BeaconSyncCommittee - 42, // 39: xatu.CannonLocation.eth_v2_beacon_block_sync_aggregate:type_name -> xatu.CannonLocationEthV2BeaconBlockSyncAggregate - 0, // 40: xatu.GetCannonLocationRequest.type:type_name -> xatu.CannonType - 43, // 41: xatu.GetCannonLocationResponse.location:type_name -> xatu.CannonLocation - 43, // 42: xatu.UpsertCannonLocationRequest.location:type_name -> xatu.CannonLocation - 48, // 43: xatu.RelayMonitorLocationBidTrace.slot_marker:type_name -> xatu.RelayMonitorSlotMarker - 48, // 44: xatu.RelayMonitorLocationPayloadDelivered.slot_marker:type_name -> xatu.RelayMonitorSlotMarker - 1, // 45: xatu.RelayMonitorLocation.type:type_name -> xatu.RelayMonitorType - 49, // 46: xatu.RelayMonitorLocation.bid_trace:type_name -> xatu.RelayMonitorLocationBidTrace - 50, // 47: xatu.RelayMonitorLocation.payload_delivered:type_name -> xatu.RelayMonitorLocationPayloadDelivered - 1, // 48: xatu.GetRelayMonitorLocationRequest.type:type_name -> xatu.RelayMonitorType - 51, // 49: xatu.GetRelayMonitorLocationResponse.location:type_name -> xatu.RelayMonitorLocation - 51, // 50: xatu.UpsertRelayMonitorLocationRequest.location:type_name -> xatu.RelayMonitorLocation - 2, // 51: xatu.Coordinator.CreateNodeRecords:input_type -> xatu.CreateNodeRecordsRequest - 4, // 52: xatu.Coordinator.ListStalledExecutionNodeRecords:input_type -> xatu.ListStalledExecutionNodeRecordsRequest - 7, // 53: xatu.Coordinator.CreateExecutionNodeRecordStatus:input_type -> xatu.CreateExecutionNodeRecordStatusRequest - 10, // 54: xatu.Coordinator.CoordinateExecutionNodeRecords:input_type -> xatu.CoordinateExecutionNodeRecordsRequest - 13, // 55: xatu.Coordinator.ListStalledConsensusNodeRecords:input_type -> xatu.ListStalledConsensusNodeRecordsRequest - 15, // 56: xatu.Coordinator.CreateConsensusNodeRecordStatus:input_type -> xatu.CreateConsensusNodeRecordStatusRequest - 17, // 57: xatu.Coordinator.CreateConsensusNodeRecordStatuses:input_type -> xatu.CreateConsensusNodeRecordStatusesRequest - 19, // 58: xatu.Coordinator.CoordinateConsensusNodeRecords:input_type -> xatu.CoordinateConsensusNodeRecordsRequest - 21, // 59: xatu.Coordinator.GetDiscoveryNodeRecord:input_type -> xatu.GetDiscoveryNodeRecordRequest - 23, // 60: xatu.Coordinator.GetDiscoveryExecutionNodeRecord:input_type -> xatu.GetDiscoveryExecutionNodeRecordRequest - 25, // 61: xatu.Coordinator.GetDiscoveryConsensusNodeRecord:input_type -> xatu.GetDiscoveryConsensusNodeRecordRequest - 44, // 62: xatu.Coordinator.GetCannonLocation:input_type -> xatu.GetCannonLocationRequest - 46, // 63: xatu.Coordinator.UpsertCannonLocation:input_type -> xatu.UpsertCannonLocationRequest - 52, // 64: xatu.Coordinator.GetRelayMonitorLocation:input_type -> xatu.GetRelayMonitorLocationRequest - 54, // 65: xatu.Coordinator.UpsertRelayMonitorLocation:input_type -> xatu.UpsertRelayMonitorLocationRequest - 3, // 66: xatu.Coordinator.CreateNodeRecords:output_type -> xatu.CreateNodeRecordsResponse - 5, // 67: xatu.Coordinator.ListStalledExecutionNodeRecords:output_type -> xatu.ListStalledExecutionNodeRecordsResponse - 8, // 68: xatu.Coordinator.CreateExecutionNodeRecordStatus:output_type -> xatu.CreateExecutionNodeRecordStatusResponse - 11, // 69: xatu.Coordinator.CoordinateExecutionNodeRecords:output_type -> xatu.CoordinateExecutionNodeRecordsResponse - 14, // 70: xatu.Coordinator.ListStalledConsensusNodeRecords:output_type -> xatu.ListStalledConsensusNodeRecordsResponse - 16, // 71: xatu.Coordinator.CreateConsensusNodeRecordStatus:output_type -> xatu.CreateConsensusNodeRecordStatusResponse - 18, // 72: xatu.Coordinator.CreateConsensusNodeRecordStatuses:output_type -> xatu.CreateConsensusNodeRecordStatusesResponse - 20, // 73: xatu.Coordinator.CoordinateConsensusNodeRecords:output_type -> xatu.CoordinateConsensusNodeRecordsResponse - 22, // 74: xatu.Coordinator.GetDiscoveryNodeRecord:output_type -> xatu.GetDiscoveryNodeRecordResponse - 24, // 75: xatu.Coordinator.GetDiscoveryExecutionNodeRecord:output_type -> xatu.GetDiscoveryExecutionNodeRecordResponse - 26, // 76: xatu.Coordinator.GetDiscoveryConsensusNodeRecord:output_type -> xatu.GetDiscoveryConsensusNodeRecordResponse - 45, // 77: xatu.Coordinator.GetCannonLocation:output_type -> xatu.GetCannonLocationResponse - 47, // 78: xatu.Coordinator.UpsertCannonLocation:output_type -> xatu.UpsertCannonLocationResponse - 53, // 79: xatu.Coordinator.GetRelayMonitorLocation:output_type -> xatu.GetRelayMonitorLocationResponse - 55, // 80: xatu.Coordinator.UpsertRelayMonitorLocation:output_type -> xatu.UpsertRelayMonitorLocationResponse - 66, // [66:81] is the sub-list for method output_type - 51, // [51:66] is the sub-list for method input_type - 51, // [51:51] is the sub-list for extension type_name - 51, // [51:51] is the sub-list for extension extendee - 0, // [0:51] is the sub-list for field type_name + 27, // 24: xatu.CannonLocationEthV2BeaconBlockAccessList.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker + 27, // 25: xatu.CannonLocationEthV2BeaconBlockPayloadAttestation.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker + 27, // 26: xatu.CannonLocationEthV2BeaconBlockExecutionPayloadBid.backfilling_checkpoint_marker:type_name -> xatu.BackfillingCheckpointMarker + 0, // 27: xatu.CannonLocation.type:type_name -> xatu.CannonType + 28, // 28: xatu.CannonLocation.eth_v2_beacon_block_voluntary_exit:type_name -> xatu.CannonLocationEthV2BeaconBlockVoluntaryExit + 29, // 29: xatu.CannonLocation.eth_v2_beacon_block_proposer_slashing:type_name -> xatu.CannonLocationEthV2BeaconBlockProposerSlashing + 30, // 30: xatu.CannonLocation.eth_v2_beacon_block_deposit:type_name -> xatu.CannonLocationEthV2BeaconBlockDeposit + 31, // 31: xatu.CannonLocation.eth_v2_beacon_block_attester_slashing:type_name -> xatu.CannonLocationEthV2BeaconBlockAttesterSlashing + 32, // 32: xatu.CannonLocation.eth_v2_beacon_block_bls_to_execution_change:type_name -> xatu.CannonLocationEthV2BeaconBlockBlsToExecutionChange + 33, // 33: xatu.CannonLocation.eth_v2_beacon_block_execution_transaction:type_name -> xatu.CannonLocationEthV2BeaconBlockExecutionTransaction + 34, // 34: xatu.CannonLocation.eth_v2_beacon_block_withdrawal:type_name -> xatu.CannonLocationEthV2BeaconBlockWithdrawal + 35, // 35: xatu.CannonLocation.eth_v2_beacon_block:type_name -> xatu.CannonLocationEthV2BeaconBlock + 36, // 36: xatu.CannonLocation.eth_v1_beacon_blob_sidecar:type_name -> xatu.CannonLocationEthV1BeaconBlobSidecar + 37, // 37: xatu.CannonLocation.eth_v1_beacon_proposer_duty:type_name -> xatu.CannonLocationEthV1BeaconProposerDuty + 38, // 38: xatu.CannonLocation.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.CannonLocationEthV2BeaconBlockElaboratedAttestation + 39, // 39: xatu.CannonLocation.eth_v1_beacon_validators:type_name -> xatu.CannonLocationEthV1BeaconValidators + 40, // 40: xatu.CannonLocation.eth_v1_beacon_committee:type_name -> xatu.CannonLocationEthV1BeaconCommittee + 41, // 41: xatu.CannonLocation.eth_v1_beacon_sync_committee:type_name -> xatu.CannonLocationEthV1BeaconSyncCommittee + 42, // 42: xatu.CannonLocation.eth_v2_beacon_block_sync_aggregate:type_name -> xatu.CannonLocationEthV2BeaconBlockSyncAggregate + 43, // 43: xatu.CannonLocation.eth_v2_beacon_block_access_list:type_name -> xatu.CannonLocationEthV2BeaconBlockAccessList + 44, // 44: xatu.CannonLocation.eth_v2_beacon_block_payload_attestation:type_name -> xatu.CannonLocationEthV2BeaconBlockPayloadAttestation + 45, // 45: xatu.CannonLocation.eth_v2_beacon_block_execution_payload_bid:type_name -> xatu.CannonLocationEthV2BeaconBlockExecutionPayloadBid + 0, // 46: xatu.GetCannonLocationRequest.type:type_name -> xatu.CannonType + 46, // 47: xatu.GetCannonLocationResponse.location:type_name -> xatu.CannonLocation + 46, // 48: xatu.UpsertCannonLocationRequest.location:type_name -> xatu.CannonLocation + 51, // 49: xatu.RelayMonitorLocationBidTrace.slot_marker:type_name -> xatu.RelayMonitorSlotMarker + 51, // 50: xatu.RelayMonitorLocationPayloadDelivered.slot_marker:type_name -> xatu.RelayMonitorSlotMarker + 1, // 51: xatu.RelayMonitorLocation.type:type_name -> xatu.RelayMonitorType + 52, // 52: xatu.RelayMonitorLocation.bid_trace:type_name -> xatu.RelayMonitorLocationBidTrace + 53, // 53: xatu.RelayMonitorLocation.payload_delivered:type_name -> xatu.RelayMonitorLocationPayloadDelivered + 1, // 54: xatu.GetRelayMonitorLocationRequest.type:type_name -> xatu.RelayMonitorType + 54, // 55: xatu.GetRelayMonitorLocationResponse.location:type_name -> xatu.RelayMonitorLocation + 54, // 56: xatu.UpsertRelayMonitorLocationRequest.location:type_name -> xatu.RelayMonitorLocation + 2, // 57: xatu.Coordinator.CreateNodeRecords:input_type -> xatu.CreateNodeRecordsRequest + 4, // 58: xatu.Coordinator.ListStalledExecutionNodeRecords:input_type -> xatu.ListStalledExecutionNodeRecordsRequest + 7, // 59: xatu.Coordinator.CreateExecutionNodeRecordStatus:input_type -> xatu.CreateExecutionNodeRecordStatusRequest + 10, // 60: xatu.Coordinator.CoordinateExecutionNodeRecords:input_type -> xatu.CoordinateExecutionNodeRecordsRequest + 13, // 61: xatu.Coordinator.ListStalledConsensusNodeRecords:input_type -> xatu.ListStalledConsensusNodeRecordsRequest + 15, // 62: xatu.Coordinator.CreateConsensusNodeRecordStatus:input_type -> xatu.CreateConsensusNodeRecordStatusRequest + 17, // 63: xatu.Coordinator.CreateConsensusNodeRecordStatuses:input_type -> xatu.CreateConsensusNodeRecordStatusesRequest + 19, // 64: xatu.Coordinator.CoordinateConsensusNodeRecords:input_type -> xatu.CoordinateConsensusNodeRecordsRequest + 21, // 65: xatu.Coordinator.GetDiscoveryNodeRecord:input_type -> xatu.GetDiscoveryNodeRecordRequest + 23, // 66: xatu.Coordinator.GetDiscoveryExecutionNodeRecord:input_type -> xatu.GetDiscoveryExecutionNodeRecordRequest + 25, // 67: xatu.Coordinator.GetDiscoveryConsensusNodeRecord:input_type -> xatu.GetDiscoveryConsensusNodeRecordRequest + 47, // 68: xatu.Coordinator.GetCannonLocation:input_type -> xatu.GetCannonLocationRequest + 49, // 69: xatu.Coordinator.UpsertCannonLocation:input_type -> xatu.UpsertCannonLocationRequest + 55, // 70: xatu.Coordinator.GetRelayMonitorLocation:input_type -> xatu.GetRelayMonitorLocationRequest + 57, // 71: xatu.Coordinator.UpsertRelayMonitorLocation:input_type -> xatu.UpsertRelayMonitorLocationRequest + 3, // 72: xatu.Coordinator.CreateNodeRecords:output_type -> xatu.CreateNodeRecordsResponse + 5, // 73: xatu.Coordinator.ListStalledExecutionNodeRecords:output_type -> xatu.ListStalledExecutionNodeRecordsResponse + 8, // 74: xatu.Coordinator.CreateExecutionNodeRecordStatus:output_type -> xatu.CreateExecutionNodeRecordStatusResponse + 11, // 75: xatu.Coordinator.CoordinateExecutionNodeRecords:output_type -> xatu.CoordinateExecutionNodeRecordsResponse + 14, // 76: xatu.Coordinator.ListStalledConsensusNodeRecords:output_type -> xatu.ListStalledConsensusNodeRecordsResponse + 16, // 77: xatu.Coordinator.CreateConsensusNodeRecordStatus:output_type -> xatu.CreateConsensusNodeRecordStatusResponse + 18, // 78: xatu.Coordinator.CreateConsensusNodeRecordStatuses:output_type -> xatu.CreateConsensusNodeRecordStatusesResponse + 20, // 79: xatu.Coordinator.CoordinateConsensusNodeRecords:output_type -> xatu.CoordinateConsensusNodeRecordsResponse + 22, // 80: xatu.Coordinator.GetDiscoveryNodeRecord:output_type -> xatu.GetDiscoveryNodeRecordResponse + 24, // 81: xatu.Coordinator.GetDiscoveryExecutionNodeRecord:output_type -> xatu.GetDiscoveryExecutionNodeRecordResponse + 26, // 82: xatu.Coordinator.GetDiscoveryConsensusNodeRecord:output_type -> xatu.GetDiscoveryConsensusNodeRecordResponse + 48, // 83: xatu.Coordinator.GetCannonLocation:output_type -> xatu.GetCannonLocationResponse + 50, // 84: xatu.Coordinator.UpsertCannonLocation:output_type -> xatu.UpsertCannonLocationResponse + 56, // 85: xatu.Coordinator.GetRelayMonitorLocation:output_type -> xatu.GetRelayMonitorLocationResponse + 58, // 86: xatu.Coordinator.UpsertRelayMonitorLocation:output_type -> xatu.UpsertRelayMonitorLocationResponse + 72, // [72:87] is the sub-list for method output_type + 57, // [57:72] is the sub-list for method input_type + 57, // [57:57] is the sub-list for extension type_name + 57, // [57:57] is the sub-list for extension extendee + 0, // [0:57] is the sub-list for field type_name } func init() { file_pkg_proto_xatu_coordinator_proto_init() } @@ -4816,7 +5088,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*CannonLocation); i { + switch v := v.(*CannonLocationEthV2BeaconBlockAccessList); i { case 0: return &v.state case 1: @@ -4828,7 +5100,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*GetCannonLocationRequest); i { + switch v := v.(*CannonLocationEthV2BeaconBlockPayloadAttestation); i { case 0: return &v.state case 1: @@ -4840,7 +5112,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*GetCannonLocationResponse); i { + switch v := v.(*CannonLocationEthV2BeaconBlockExecutionPayloadBid); i { case 0: return &v.state case 1: @@ -4852,7 +5124,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*UpsertCannonLocationRequest); i { + switch v := v.(*CannonLocation); i { case 0: return &v.state case 1: @@ -4864,7 +5136,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*UpsertCannonLocationResponse); i { + switch v := v.(*GetCannonLocationRequest); i { case 0: return &v.state case 1: @@ -4876,7 +5148,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*RelayMonitorSlotMarker); i { + switch v := v.(*GetCannonLocationResponse); i { case 0: return &v.state case 1: @@ -4888,7 +5160,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*RelayMonitorLocationBidTrace); i { + switch v := v.(*UpsertCannonLocationRequest); i { case 0: return &v.state case 1: @@ -4900,7 +5172,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*RelayMonitorLocationPayloadDelivered); i { + switch v := v.(*UpsertCannonLocationResponse); i { case 0: return &v.state case 1: @@ -4912,7 +5184,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*RelayMonitorLocation); i { + switch v := v.(*RelayMonitorSlotMarker); i { case 0: return &v.state case 1: @@ -4924,7 +5196,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*GetRelayMonitorLocationRequest); i { + switch v := v.(*RelayMonitorLocationBidTrace); i { case 0: return &v.state case 1: @@ -4936,7 +5208,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*GetRelayMonitorLocationResponse); i { + switch v := v.(*RelayMonitorLocationPayloadDelivered); i { case 0: return &v.state case 1: @@ -4948,7 +5220,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*UpsertRelayMonitorLocationRequest); i { + switch v := v.(*RelayMonitorLocation); i { case 0: return &v.state case 1: @@ -4960,7 +5232,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*UpsertRelayMonitorLocationResponse); i { + switch v := v.(*GetRelayMonitorLocationRequest); i { case 0: return &v.state case 1: @@ -4972,7 +5244,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionNodeStatus_Capability); i { + switch v := v.(*GetRelayMonitorLocationResponse); i { case 0: return &v.state case 1: @@ -4984,6 +5256,42 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } file_pkg_proto_xatu_coordinator_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*UpsertRelayMonitorLocationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_coordinator_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*UpsertRelayMonitorLocationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_coordinator_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionNodeStatus_Capability); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_coordinator_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*ExecutionNodeStatus_ForkID); i { case 0: return &v.state @@ -4996,7 +5304,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { } } } - file_pkg_proto_xatu_coordinator_proto_msgTypes[41].OneofWrappers = []any{ + file_pkg_proto_xatu_coordinator_proto_msgTypes[44].OneofWrappers = []any{ (*CannonLocation_EthV2BeaconBlockVoluntaryExit)(nil), (*CannonLocation_EthV2BeaconBlockProposerSlashing)(nil), (*CannonLocation_EthV2BeaconBlockDeposit)(nil), @@ -5012,8 +5320,11 @@ func file_pkg_proto_xatu_coordinator_proto_init() { (*CannonLocation_EthV1BeaconCommittee)(nil), (*CannonLocation_EthV1BeaconSyncCommittee)(nil), (*CannonLocation_EthV2BeaconBlockSyncAggregate)(nil), + (*CannonLocation_EthV2BeaconBlockAccessList)(nil), + (*CannonLocation_EthV2BeaconBlockPayloadAttestation)(nil), + (*CannonLocation_EthV2BeaconBlockExecutionPayloadBid)(nil), } - file_pkg_proto_xatu_coordinator_proto_msgTypes[49].OneofWrappers = []any{ + file_pkg_proto_xatu_coordinator_proto_msgTypes[52].OneofWrappers = []any{ (*RelayMonitorLocation_BidTrace)(nil), (*RelayMonitorLocation_PayloadDelivered)(nil), } @@ -5023,7 +5334,7 @@ func file_pkg_proto_xatu_coordinator_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_proto_xatu_coordinator_proto_rawDesc, NumEnums: 2, - NumMessages: 56, + NumMessages: 59, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/proto/xatu/coordinator.proto b/pkg/proto/xatu/coordinator.proto index 0ef43a56e..3e7380ee9 100644 --- a/pkg/proto/xatu/coordinator.proto +++ b/pkg/proto/xatu/coordinator.proto @@ -197,6 +197,11 @@ enum CannonType { BEACON_API_ETH_V1_BEACON_COMMITTEE = 13; BEACON_API_ETH_V1_BEACON_SYNC_COMMITTEE = 14; BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE = 15; + BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST = 16; + + // EIP-7732 ePBS cannon types + BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION = 17; + BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID = 18; } message BackfillingCheckpointMarker { @@ -275,6 +280,19 @@ message CannonLocationEthV2BeaconBlockSyncAggregate { BackfillingCheckpointMarker backfilling_checkpoint_marker = 1; } +message CannonLocationEthV2BeaconBlockAccessList { + BackfillingCheckpointMarker backfilling_checkpoint_marker = 1; +} + +// EIP-7732 ePBS cannon location types +message CannonLocationEthV2BeaconBlockPayloadAttestation { + BackfillingCheckpointMarker backfilling_checkpoint_marker = 1; +} + +message CannonLocationEthV2BeaconBlockExecutionPayloadBid { + BackfillingCheckpointMarker backfilling_checkpoint_marker = 1; +} + message CannonLocation { string network_id = 1; CannonType type = 2; @@ -318,6 +336,14 @@ message CannonLocation { [ json_name = "BEACON_API_ETH_V1_BEACON_SYNC_COMMITTEE" ]; CannonLocationEthV2BeaconBlockSyncAggregate eth_v2_beacon_block_sync_aggregate = 18 [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE" ]; + CannonLocationEthV2BeaconBlockAccessList eth_v2_beacon_block_access_list = 19 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" ]; + + // EIP-7732 ePBS + CannonLocationEthV2BeaconBlockPayloadAttestation eth_v2_beacon_block_payload_attestation = 20 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION" ]; + CannonLocationEthV2BeaconBlockExecutionPayloadBid eth_v2_beacon_block_execution_payload_bid = 21 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID" ]; } } diff --git a/pkg/proto/xatu/event_ingester.pb.go b/pkg/proto/xatu/event_ingester.pb.go index c1bde83b0..bdfe23d46 100644 --- a/pkg/proto/xatu/event_ingester.pb.go +++ b/pkg/proto/xatu/event_ingester.pb.go @@ -172,6 +172,20 @@ const ( Event_BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE Event_Name = 86 Event_EXECUTION_BLOCK_METRICS Event_Name = 87 Event_LIBP2P_TRACE_IDENTIFY Event_Name = 88 + Event_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST Event_Name = 89 + // EIP-7732 ePBS: Sentry SSE events + Event_BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD Event_Name = 90 + Event_BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION Event_Name = 91 + Event_BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID Event_Name = 92 + Event_BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES Event_Name = 93 + // EIP-7732 ePBS: Cannon derived events + Event_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION Event_Name = 94 + Event_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID Event_Name = 95 + // EIP-7732 ePBS: P2P gossip events + Event_LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE Event_Name = 96 + Event_LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID Event_Name = 97 + Event_LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE Event_Name = 98 + Event_LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES Event_Name = 99 ) // Enum value maps for Event_Name. @@ -265,6 +279,17 @@ var ( 86: "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE", 87: "EXECUTION_BLOCK_METRICS", 88: "LIBP2P_TRACE_IDENTIFY", + 89: "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST", + 90: "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD", + 91: "BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION", + 92: "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID", + 93: "BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES", + 94: "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION", + 95: "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID", + 96: "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE", + 97: "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID", + 98: "LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE", + 99: "LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES", } Event_Name_value = map[string]int32{ "BEACON_API_ETH_V1_EVENTS_UNKNOWN": 0, @@ -355,6 +380,17 @@ var ( "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE": 86, "EXECUTION_BLOCK_METRICS": 87, "LIBP2P_TRACE_IDENTIFY": 88, + "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST": 89, + "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD": 90, + "BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION": 91, + "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID": 92, + "BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES": 93, + "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION": 94, + "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID": 95, + "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE": 96, + "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID": 97, + "LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE": 98, + "LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES": 99, } ) @@ -2263,6 +2299,17 @@ type ClientMeta struct { // *ClientMeta_EthV1BeaconSyncCommittee // *ClientMeta_EthV2BeaconBlockSyncAggregate // *ClientMeta_Libp2PTraceIdentify + // *ClientMeta_EthV2BeaconBlockAccessList + // *ClientMeta_EthV1EventsExecutionPayload + // *ClientMeta_EthV1EventsPayloadAttestation + // *ClientMeta_EthV1EventsExecutionPayloadBid + // *ClientMeta_EthV1EventsProposerPreferences + // *ClientMeta_EthV2BeaconBlockPayloadAttestation + // *ClientMeta_EthV2BeaconBlockExecutionPayloadBid + // *ClientMeta_Libp2PTraceGossipsubExecutionPayloadEnvelope + // *ClientMeta_Libp2PTraceGossipsubExecutionPayloadBid + // *ClientMeta_Libp2PTraceGossipsubPayloadAttestationMessage + // *ClientMeta_Libp2PTraceGossipsubProposerPreferences AdditionalData isClientMeta_AdditionalData `protobuf_oneof:"AdditionalData"` // ModuleName contains the name of the module that sent the event. ModuleName ModuleName `protobuf:"varint,63,opt,name=module_name,proto3,enum=xatu.ModuleName" json:"module_name,omitempty"` @@ -2932,6 +2979,83 @@ func (x *ClientMeta) GetLibp2PTraceIdentify() *ClientMeta_AdditionalLibP2PTraceI return nil } +func (x *ClientMeta) GetEthV2BeaconBlockAccessList() *ClientMeta_AdditionalEthV2BeaconBlockAccessListData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV2BeaconBlockAccessList); ok { + return x.EthV2BeaconBlockAccessList + } + return nil +} + +func (x *ClientMeta) GetEthV1EventsExecutionPayload() *ClientMeta_AdditionalEthV1EventsExecutionPayloadData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV1EventsExecutionPayload); ok { + return x.EthV1EventsExecutionPayload + } + return nil +} + +func (x *ClientMeta) GetEthV1EventsPayloadAttestation() *ClientMeta_AdditionalEthV1EventsPayloadAttestationData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV1EventsPayloadAttestation); ok { + return x.EthV1EventsPayloadAttestation + } + return nil +} + +func (x *ClientMeta) GetEthV1EventsExecutionPayloadBid() *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV1EventsExecutionPayloadBid); ok { + return x.EthV1EventsExecutionPayloadBid + } + return nil +} + +func (x *ClientMeta) GetEthV1EventsProposerPreferences() *ClientMeta_AdditionalEthV1EventsProposerPreferencesData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV1EventsProposerPreferences); ok { + return x.EthV1EventsProposerPreferences + } + return nil +} + +func (x *ClientMeta) GetEthV2BeaconBlockPayloadAttestation() *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV2BeaconBlockPayloadAttestation); ok { + return x.EthV2BeaconBlockPayloadAttestation + } + return nil +} + +func (x *ClientMeta) GetEthV2BeaconBlockExecutionPayloadBid() *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData { + if x, ok := x.GetAdditionalData().(*ClientMeta_EthV2BeaconBlockExecutionPayloadBid); ok { + return x.EthV2BeaconBlockExecutionPayloadBid + } + return nil +} + +func (x *ClientMeta) GetLibp2PTraceGossipsubExecutionPayloadEnvelope() *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData { + if x, ok := x.GetAdditionalData().(*ClientMeta_Libp2PTraceGossipsubExecutionPayloadEnvelope); ok { + return x.Libp2PTraceGossipsubExecutionPayloadEnvelope + } + return nil +} + +func (x *ClientMeta) GetLibp2PTraceGossipsubExecutionPayloadBid() *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData { + if x, ok := x.GetAdditionalData().(*ClientMeta_Libp2PTraceGossipsubExecutionPayloadBid); ok { + return x.Libp2PTraceGossipsubExecutionPayloadBid + } + return nil +} + +func (x *ClientMeta) GetLibp2PTraceGossipsubPayloadAttestationMessage() *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData { + if x, ok := x.GetAdditionalData().(*ClientMeta_Libp2PTraceGossipsubPayloadAttestationMessage); ok { + return x.Libp2PTraceGossipsubPayloadAttestationMessage + } + return nil +} + +func (x *ClientMeta) GetLibp2PTraceGossipsubProposerPreferences() *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData { + if x, ok := x.GetAdditionalData().(*ClientMeta_Libp2PTraceGossipsubProposerPreferences); ok { + return x.Libp2PTraceGossipsubProposerPreferences + } + return nil +} + func (x *ClientMeta) GetModuleName() ModuleName { if x != nil { return x.ModuleName @@ -3386,6 +3510,55 @@ type ClientMeta_Libp2PTraceIdentify struct { Libp2PTraceIdentify *ClientMeta_AdditionalLibP2PTraceIdentifyData `protobuf:"bytes,94,opt,name=libp2p_trace_identify,json=LIBP2P_TRACE_IDENTIFY,proto3,oneof"` } +type ClientMeta_EthV2BeaconBlockAccessList struct { + // AdditionalEthV2BeaconBlockAccessListData contains additional data on + // block access list entries derived from beacon blocks. + EthV2BeaconBlockAccessList *ClientMeta_AdditionalEthV2BeaconBlockAccessListData `protobuf:"bytes,95,opt,name=eth_v2_beacon_block_access_list,json=BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST,proto3,oneof"` +} + +type ClientMeta_EthV1EventsExecutionPayload struct { + // EIP-7732 ePBS: Sentry SSE additional data + EthV1EventsExecutionPayload *ClientMeta_AdditionalEthV1EventsExecutionPayloadData `protobuf:"bytes,96,opt,name=eth_v1_events_execution_payload,json=BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD,proto3,oneof"` +} + +type ClientMeta_EthV1EventsPayloadAttestation struct { + EthV1EventsPayloadAttestation *ClientMeta_AdditionalEthV1EventsPayloadAttestationData `protobuf:"bytes,97,opt,name=eth_v1_events_payload_attestation,json=BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION,proto3,oneof"` +} + +type ClientMeta_EthV1EventsExecutionPayloadBid struct { + EthV1EventsExecutionPayloadBid *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData `protobuf:"bytes,98,opt,name=eth_v1_events_execution_payload_bid,json=BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type ClientMeta_EthV1EventsProposerPreferences struct { + EthV1EventsProposerPreferences *ClientMeta_AdditionalEthV1EventsProposerPreferencesData `protobuf:"bytes,99,opt,name=eth_v1_events_proposer_preferences,json=BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES,proto3,oneof"` +} + +type ClientMeta_EthV2BeaconBlockPayloadAttestation struct { + // EIP-7732 ePBS: Cannon additional data + EthV2BeaconBlockPayloadAttestation *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData `protobuf:"bytes,100,opt,name=eth_v2_beacon_block_payload_attestation,json=BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION,proto3,oneof"` +} + +type ClientMeta_EthV2BeaconBlockExecutionPayloadBid struct { + EthV2BeaconBlockExecutionPayloadBid *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData `protobuf:"bytes,101,opt,name=eth_v2_beacon_block_execution_payload_bid,json=BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type ClientMeta_Libp2PTraceGossipsubExecutionPayloadEnvelope struct { + // EIP-7732 ePBS: LibP2P gossip additional data + Libp2PTraceGossipsubExecutionPayloadEnvelope *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData `protobuf:"bytes,102,opt,name=libp2p_trace_gossipsub_execution_payload_envelope,json=LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE,proto3,oneof"` +} + +type ClientMeta_Libp2PTraceGossipsubExecutionPayloadBid struct { + Libp2PTraceGossipsubExecutionPayloadBid *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData `protobuf:"bytes,103,opt,name=libp2p_trace_gossipsub_execution_payload_bid,json=LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type ClientMeta_Libp2PTraceGossipsubPayloadAttestationMessage struct { + Libp2PTraceGossipsubPayloadAttestationMessage *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData `protobuf:"bytes,104,opt,name=libp2p_trace_gossipsub_payload_attestation_message,json=LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE,proto3,oneof"` +} + +type ClientMeta_Libp2PTraceGossipsubProposerPreferences struct { + Libp2PTraceGossipsubProposerPreferences *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData `protobuf:"bytes,105,opt,name=libp2p_trace_gossipsub_proposer_preferences,json=LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES,proto3,oneof"` +} + func (*ClientMeta_EthV1EventsAttestation) isClientMeta_AdditionalData() {} func (*ClientMeta_EthV1EventsHead) isClientMeta_AdditionalData() {} @@ -3548,6 +3721,28 @@ func (*ClientMeta_EthV2BeaconBlockSyncAggregate) isClientMeta_AdditionalData() { func (*ClientMeta_Libp2PTraceIdentify) isClientMeta_AdditionalData() {} +func (*ClientMeta_EthV2BeaconBlockAccessList) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV1EventsExecutionPayload) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV1EventsPayloadAttestation) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV1EventsExecutionPayloadBid) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV1EventsProposerPreferences) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV2BeaconBlockPayloadAttestation) isClientMeta_AdditionalData() {} + +func (*ClientMeta_EthV2BeaconBlockExecutionPayloadBid) isClientMeta_AdditionalData() {} + +func (*ClientMeta_Libp2PTraceGossipsubExecutionPayloadEnvelope) isClientMeta_AdditionalData() {} + +func (*ClientMeta_Libp2PTraceGossipsubExecutionPayloadBid) isClientMeta_AdditionalData() {} + +func (*ClientMeta_Libp2PTraceGossipsubPayloadAttestationMessage) isClientMeta_AdditionalData() {} + +func (*ClientMeta_Libp2PTraceGossipsubProposerPreferences) isClientMeta_AdditionalData() {} + type ServerMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4143,6 +4338,17 @@ type DecoratedEvent struct { // *DecoratedEvent_EthV1BeaconSyncCommittee // *DecoratedEvent_EthV2BeaconBlockSyncAggregate // *DecoratedEvent_ExecutionBlockMetrics + // *DecoratedEvent_EthV2BeaconBlockAccessList + // *DecoratedEvent_EthV1EventsExecutionPayload + // *DecoratedEvent_EthV1EventsPayloadAttestation + // *DecoratedEvent_EthV1EventsExecutionPayloadBid + // *DecoratedEvent_EthV1EventsProposerPreferences + // *DecoratedEvent_EthV2BeaconBlockPayloadAttestation + // *DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid + // *DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope + // *DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid + // *DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage + // *DecoratedEvent_Libp2PTraceGossipsubProposerPreferences Data isDecoratedEvent_Data `protobuf_oneof:"data"` } @@ -4812,6 +5018,83 @@ func (x *DecoratedEvent) GetExecutionBlockMetrics() *ExecutionBlockMetrics { return nil } +func (x *DecoratedEvent) GetEthV2BeaconBlockAccessList() *v1.BlockAccessListChange { + if x, ok := x.GetData().(*DecoratedEvent_EthV2BeaconBlockAccessList); ok { + return x.EthV2BeaconBlockAccessList + } + return nil +} + +func (x *DecoratedEvent) GetEthV1EventsExecutionPayload() *v1.SignedExecutionPayloadEnvelope { + if x, ok := x.GetData().(*DecoratedEvent_EthV1EventsExecutionPayload); ok { + return x.EthV1EventsExecutionPayload + } + return nil +} + +func (x *DecoratedEvent) GetEthV1EventsPayloadAttestation() *v1.PayloadAttestationMessage { + if x, ok := x.GetData().(*DecoratedEvent_EthV1EventsPayloadAttestation); ok { + return x.EthV1EventsPayloadAttestation + } + return nil +} + +func (x *DecoratedEvent) GetEthV1EventsExecutionPayloadBid() *v1.SignedExecutionPayloadBid { + if x, ok := x.GetData().(*DecoratedEvent_EthV1EventsExecutionPayloadBid); ok { + return x.EthV1EventsExecutionPayloadBid + } + return nil +} + +func (x *DecoratedEvent) GetEthV1EventsProposerPreferences() *v1.SignedProposerPreferences { + if x, ok := x.GetData().(*DecoratedEvent_EthV1EventsProposerPreferences); ok { + return x.EthV1EventsProposerPreferences + } + return nil +} + +func (x *DecoratedEvent) GetEthV2BeaconBlockPayloadAttestation() *v1.PayloadAttestation { + if x, ok := x.GetData().(*DecoratedEvent_EthV2BeaconBlockPayloadAttestation); ok { + return x.EthV2BeaconBlockPayloadAttestation + } + return nil +} + +func (x *DecoratedEvent) GetEthV2BeaconBlockExecutionPayloadBid() *v1.SignedExecutionPayloadBid { + if x, ok := x.GetData().(*DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid); ok { + return x.EthV2BeaconBlockExecutionPayloadBid + } + return nil +} + +func (x *DecoratedEvent) GetLibp2PTraceGossipsubExecutionPayloadEnvelope() *gossipsub.ExecutionPayloadEnvelope { + if x, ok := x.GetData().(*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope); ok { + return x.Libp2PTraceGossipsubExecutionPayloadEnvelope + } + return nil +} + +func (x *DecoratedEvent) GetLibp2PTraceGossipsubExecutionPayloadBid() *gossipsub.ExecutionPayloadBid { + if x, ok := x.GetData().(*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid); ok { + return x.Libp2PTraceGossipsubExecutionPayloadBid + } + return nil +} + +func (x *DecoratedEvent) GetLibp2PTraceGossipsubPayloadAttestationMessage() *gossipsub.PayloadAttestationMessage { + if x, ok := x.GetData().(*DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage); ok { + return x.Libp2PTraceGossipsubPayloadAttestationMessage + } + return nil +} + +func (x *DecoratedEvent) GetLibp2PTraceGossipsubProposerPreferences() *gossipsub.ProposerPreferences { + if x, ok := x.GetData().(*DecoratedEvent_Libp2PTraceGossipsubProposerPreferences); ok { + return x.Libp2PTraceGossipsubProposerPreferences + } + return nil +} + type isDecoratedEvent_Data interface { isDecoratedEvent_Data() } @@ -5173,6 +5456,53 @@ type DecoratedEvent_ExecutionBlockMetrics struct { ExecutionBlockMetrics *ExecutionBlockMetrics `protobuf:"bytes,209,opt,name=execution_block_metrics,json=EXECUTION_BLOCK_METRICS,proto3,oneof"` } +type DecoratedEvent_EthV2BeaconBlockAccessList struct { + EthV2BeaconBlockAccessList *v1.BlockAccessListChange `protobuf:"bytes,210,opt,name=eth_v2_beacon_block_access_list,json=BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST,proto3,oneof"` +} + +type DecoratedEvent_EthV1EventsExecutionPayload struct { + // EIP-7732 ePBS: Sentry SSE events + EthV1EventsExecutionPayload *v1.SignedExecutionPayloadEnvelope `protobuf:"bytes,211,opt,name=eth_v1_events_execution_payload,json=BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD,proto3,oneof"` +} + +type DecoratedEvent_EthV1EventsPayloadAttestation struct { + EthV1EventsPayloadAttestation *v1.PayloadAttestationMessage `protobuf:"bytes,212,opt,name=eth_v1_events_payload_attestation,json=BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION,proto3,oneof"` +} + +type DecoratedEvent_EthV1EventsExecutionPayloadBid struct { + EthV1EventsExecutionPayloadBid *v1.SignedExecutionPayloadBid `protobuf:"bytes,213,opt,name=eth_v1_events_execution_payload_bid,json=BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type DecoratedEvent_EthV1EventsProposerPreferences struct { + EthV1EventsProposerPreferences *v1.SignedProposerPreferences `protobuf:"bytes,214,opt,name=eth_v1_events_proposer_preferences,json=BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES,proto3,oneof"` +} + +type DecoratedEvent_EthV2BeaconBlockPayloadAttestation struct { + // EIP-7732 ePBS: Cannon derived events + EthV2BeaconBlockPayloadAttestation *v1.PayloadAttestation `protobuf:"bytes,215,opt,name=eth_v2_beacon_block_payload_attestation,json=BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION,proto3,oneof"` +} + +type DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid struct { + EthV2BeaconBlockExecutionPayloadBid *v1.SignedExecutionPayloadBid `protobuf:"bytes,216,opt,name=eth_v2_beacon_block_execution_payload_bid,json=BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope struct { + // EIP-7732 ePBS: P2P gossip events (use gossipsub summary types) + Libp2PTraceGossipsubExecutionPayloadEnvelope *gossipsub.ExecutionPayloadEnvelope `protobuf:"bytes,217,opt,name=libp2p_trace_gossipsub_execution_payload_envelope,json=LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE,proto3,oneof"` +} + +type DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid struct { + Libp2PTraceGossipsubExecutionPayloadBid *gossipsub.ExecutionPayloadBid `protobuf:"bytes,218,opt,name=libp2p_trace_gossipsub_execution_payload_bid,json=LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID,proto3,oneof"` +} + +type DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage struct { + Libp2PTraceGossipsubPayloadAttestationMessage *gossipsub.PayloadAttestationMessage `protobuf:"bytes,219,opt,name=libp2p_trace_gossipsub_payload_attestation_message,json=LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE,proto3,oneof"` +} + +type DecoratedEvent_Libp2PTraceGossipsubProposerPreferences struct { + Libp2PTraceGossipsubProposerPreferences *gossipsub.ProposerPreferences `protobuf:"bytes,220,opt,name=libp2p_trace_gossipsub_proposer_preferences,json=LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES,proto3,oneof"` +} + func (*DecoratedEvent_EthV1EventsAttestation) isDecoratedEvent_Data() {} func (*DecoratedEvent_EthV1EventsBlock) isDecoratedEvent_Data() {} @@ -5345,6 +5675,28 @@ func (*DecoratedEvent_EthV2BeaconBlockSyncAggregate) isDecoratedEvent_Data() {} func (*DecoratedEvent_ExecutionBlockMetrics) isDecoratedEvent_Data() {} +func (*DecoratedEvent_EthV2BeaconBlockAccessList) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV1EventsExecutionPayload) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV1EventsPayloadAttestation) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV1EventsExecutionPayloadBid) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV1EventsProposerPreferences) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV2BeaconBlockPayloadAttestation) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage) isDecoratedEvent_Data() {} + +func (*DecoratedEvent_Libp2PTraceGossipsubProposerPreferences) isDecoratedEvent_Data() {} + type ClientMeta_Ethereum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -8187,24 +8539,24 @@ func (x *ClientMeta_AdditionalEthV2BeaconBlockWithdrawalData) GetBlock() *BlockI return nil } -type ClientMeta_AttestationDataSnapshot struct { +// AdditionalEthV2BeaconBlockAccessListData contains additional data on +// block access list entries derived from beacon blocks. +type ClientMeta_AdditionalEthV2BeaconBlockAccessListData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // RequestedAtSlotStartDiffMs is the difference how far in to the slot the - // sentry was when it requested the attestation data snapshot (in - // milliseconds). - RequestedAtSlotStartDiffMs *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=requested_at_slot_start_diff_ms,proto3" json:"requested_at_slot_start_diff_ms,omitempty"` - // RequestDurationMs is the duration of the attestation data snapshot - // request (in milliseconds). - RequestDurationMs *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=request_duration_ms,proto3" json:"request_duration_ms,omitempty"` - // Timestamp is the timestamp of the attestation data snapshot. - Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Block contains the information about the block that we are deriving the + // access list from. + Block *BlockIdentifier `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` + // Execution block number from the execution payload. + BlockNumber *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + // Execution block hash from the execution payload (hex encoded). + BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` } -func (x *ClientMeta_AttestationDataSnapshot) Reset() { - *x = ClientMeta_AttestationDataSnapshot{} +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) Reset() { + *x = ClientMeta_AdditionalEthV2BeaconBlockAccessListData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8212,13 +8564,13 @@ func (x *ClientMeta_AttestationDataSnapshot) Reset() { } } -func (x *ClientMeta_AttestationDataSnapshot) String() string { +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AttestationDataSnapshot) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV2BeaconBlockAccessListData) ProtoMessage() {} -func (x *ClientMeta_AttestationDataSnapshot) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8230,52 +8582,46 @@ func (x *ClientMeta_AttestationDataSnapshot) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AttestationDataSnapshot.ProtoReflect.Descriptor instead. -func (*ClientMeta_AttestationDataSnapshot) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV2BeaconBlockAccessListData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV2BeaconBlockAccessListData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 43} } -func (x *ClientMeta_AttestationDataSnapshot) GetRequestedAtSlotStartDiffMs() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) GetBlock() *BlockIdentifier { if x != nil { - return x.RequestedAtSlotStartDiffMs + return x.Block } return nil } -func (x *ClientMeta_AttestationDataSnapshot) GetRequestDurationMs() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) GetBlockNumber() *wrapperspb.UInt64Value { if x != nil { - return x.RequestDurationMs + return x.BlockNumber } return nil } -func (x *ClientMeta_AttestationDataSnapshot) GetTimestamp() *timestamppb.Timestamp { +func (x *ClientMeta_AdditionalEthV2BeaconBlockAccessListData) GetBlockHash() string { if x != nil { - return x.Timestamp + return x.BlockHash } - return nil + return "" } -type ClientMeta_AdditionalEthV1ValidatorAttestationDataData struct { +// AdditionalEthV1EventsExecutionPayloadData contains additional data about +// execution payload envelope arrivals from the beacon API SSE. +type ClientMeta_AdditionalEthV1EventsExecutionPayloadData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Source contains information for the best currently justified checkpoint. - Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - // Target contains information of the block at the start of the current - // epoch. - Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - // Epoch contains the epoch information for the beacon committee. - Epoch *EpochV2 `protobuf:"bytes,3,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the beacon committee. - Slot *SlotV2 `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` - // AttestationDataSnapshot is the snapshot of the attestation data - Snapshot *ClientMeta_AttestationDataSnapshot `protobuf:"bytes,5,opt,name=Snapshot,json=snapshot,proto3" json:"Snapshot,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) Reset() { - *x = ClientMeta_AdditionalEthV1ValidatorAttestationDataData{} +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsExecutionPayloadData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8283,13 +8629,13 @@ func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsExecutionPayloadData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8301,62 +8647,46 @@ func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1ValidatorAttestationDataData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV1EventsExecutionPayloadData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsExecutionPayloadData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 44} } -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { - if x != nil { - return x.Source - } - return nil -} - -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { - if x != nil { - return x.Target - } - return nil -} - -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSnapshot() *ClientMeta_AttestationDataSnapshot { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadData) GetPropagation() *PropagationV2 { if x != nil { - return x.Snapshot + return x.Propagation } return nil } -type ClientMeta_AdditionalEthV1EventsBlobSidecarData struct { +// AdditionalEthV1EventsPayloadAttestationData contains additional data about +// individual PTC payload attestation messages from the beacon API SSE. +type ClientMeta_AdditionalEthV1EventsPayloadAttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the blob sidecar. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the blob sidecar. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // Propagation contains information about the propagation of the blob - // sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) Reset() { - *x = ClientMeta_AdditionalEthV1EventsBlobSidecarData{} +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsPayloadAttestationData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8364,13 +8694,13 @@ func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1EventsBlobSidecarData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsPayloadAttestationData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8382,48 +8712,46 @@ func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) ProtoReflect() protore return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1EventsBlobSidecarData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1EventsBlobSidecarData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV1EventsPayloadAttestationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsPayloadAttestationData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 45} } -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetPropagation() *PropagationV2 { +func (x *ClientMeta_AdditionalEthV1EventsPayloadAttestationData) GetPropagation() *PropagationV2 { if x != nil { return x.Propagation } return nil } -type ClientMeta_AdditionalEthV1EventsDataColumnSidecarData struct { +// AdditionalEthV1EventsExecutionPayloadBidData contains additional data about +// builder bids from the beacon API SSE. +type ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the data column sidecar. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the data column sidecar. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // Propagation contains information about the propagation of the data column - // sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) Reset() { - *x = ClientMeta_AdditionalEthV1EventsDataColumnSidecarData{} +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8431,13 +8759,13 @@ func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8449,51 +8777,46 @@ func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1EventsDataColumnSidecarData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 46} } -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetPropagation() *PropagationV2 { +func (x *ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData) GetPropagation() *PropagationV2 { if x != nil { return x.Propagation } return nil } -type ClientMeta_AdditionalEthV1BeaconBlobSidecarData struct { +// AdditionalEthV1EventsProposerPreferencesData contains additional data about +// proposer preferences from the beacon API SSE. +type ClientMeta_AdditionalEthV1EventsProposerPreferencesData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the blob sidecar. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the blob sidecar. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // DataSize contains the size of the blob sidecar in bytes. - DataSize *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=data_size,proto3" json:"data_size,omitempty"` - // VersionedHash is the versioned hash for the blob sidecar. - VersionedHash string `protobuf:"bytes,4,opt,name=versioned_hash,proto3" json:"versioned_hash,omitempty"` - // DataEmptySize contains the amount of empty bytes of the blob sidecar. - DataEmptySize *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=data_empty_size,proto3" json:"data_empty_size,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) Reset() { - *x = ClientMeta_AdditionalEthV1BeaconBlobSidecarData{} +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsProposerPreferencesData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8501,13 +8824,13 @@ func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsProposerPreferencesData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8519,76 +8842,44 @@ func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) ProtoReflect() protore return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1BeaconBlobSidecarData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV1EventsProposerPreferencesData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsProposerPreferencesData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 47} } -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetDataSize() *wrapperspb.UInt64Value { - if x != nil { - return x.DataSize - } - return nil -} - -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetVersionedHash() string { - if x != nil { - return x.VersionedHash - } - return "" -} - -func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetDataEmptySize() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalEthV1EventsProposerPreferencesData) GetPropagation() *PropagationV2 { if x != nil { - return x.DataEmptySize + return x.Propagation } return nil } -type ClientMeta_AdditionalBeaconP2PAttestationData struct { +// AdditionalEthV2BeaconBlockPayloadAttestationData contains additional data +// about aggregated PTC payload attestations derived from cannon blocks. +type ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Source contains information for the best currently justified checkpoint. - Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - // Target contains information of the block at the start of the current - // epoch. - Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - // Slot contains the slot information for the attestation. - Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` - // Epoch contains the epoch information for the attestation. - Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Propagation contains information about the propagation of the - // attestation. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // AttestingValidator contains data about the validator that created the - // attestation. Note: only available for unaggregated attestations. - AttestingValidator *AttestingValidatorV2 `protobuf:"bytes,6,opt,name=attesting_validator,proto3" json:"attesting_validator,omitempty"` - // Peer contains information on the peer that sent us the attestation. - Peer *libp2p.Peer `protobuf:"bytes,7,opt,name=peer,proto3" json:"peer,omitempty"` - // Subnet is the subnet that the attestation was sent on. - Subnet *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=subnet,proto3" json:"subnet,omitempty"` - // Validated is if the attestation was validated. - Validated *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=validated,proto3" json:"validated,omitempty"` + Block *BlockIdentifier `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` } -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) Reset() { - *x = ClientMeta_AdditionalBeaconP2PAttestationData{} +func (x *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) Reset() { + *x = ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8596,13 +8887,13 @@ func (x *ClientMeta_AdditionalBeaconP2PAttestationData) Reset() { } } -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) String() string { +func (x *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalBeaconP2PAttestationData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) ProtoMessage() {} -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8614,91 +8905,30 @@ func (x *ClientMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalBeaconP2PAttestationData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalBeaconP2PAttestationData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 48} } -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { - if x != nil { - return x.Source - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { - if x != nil { - return x.Target - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetAttestingValidator() *AttestingValidatorV2 { - if x != nil { - return x.AttestingValidator - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetPeer() *libp2p.Peer { - if x != nil { - return x.Peer - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSubnet() *wrapperspb.UInt32Value { - if x != nil { - return x.Subnet - } - return nil -} - -func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetValidated() *wrapperspb.BoolValue { +func (x *ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData) GetBlock() *BlockIdentifier { if x != nil { - return x.Validated + return x.Block } return nil } -type ClientMeta_AdditionalEthV1ProposerDutyData struct { +// AdditionalEthV2BeaconBlockExecutionPayloadBidData contains additional data +// about the winning execution payload bid derived from cannon blocks. +type ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the proposer duty. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the proposer duty. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // StateID is the state ID when the proposer duty was requested. - // This can be used to determine if the proposer duty was canonical - // by checking if the state_id is 'finalized'. - StateId string `protobuf:"bytes,3,opt,name=state_id,proto3" json:"state_id,omitempty"` + Block *BlockIdentifier `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` } -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) Reset() { - *x = ClientMeta_AdditionalEthV1ProposerDutyData{} +func (x *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) Reset() { + *x = ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8706,13 +8936,13 @@ func (x *ClientMeta_AdditionalEthV1ProposerDutyData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) String() string { +func (x *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1ProposerDutyData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8724,55 +8954,38 @@ func (x *ClientMeta_AdditionalEthV1ProposerDutyData) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1ProposerDutyData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1ProposerDutyData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 49} } -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch - } - return nil -} - -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData) GetBlock() *BlockIdentifier { if x != nil { - return x.Slot + return x.Block } return nil } -func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetStateId() string { - if x != nil { - return x.StateId - } - return "" -} - -type ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData struct { +// AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData contains additional +// data about execution payload envelope gossip from libp2p. +type ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Block contains the information about the block that we are deriving the - // elaborated attestation from. - Block *BlockIdentifier `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` - // PositionInBlock is the position of the attestation in the block. - PositionInBlock *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=position_in_block,proto3" json:"position_in_block,omitempty"` - // Epoch contains the epoch information for the slot of the attestation. - Epoch *EpochV2 `protobuf:"bytes,3,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the slot of the attestation. - Slot *SlotV2 `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` - // Source contains information for source of the attestation. - Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` - // Target contains information of the block at the start of the current - // epoch. - Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,6,opt,name=target,proto3" json:"target,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) Reset() { - *x = ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8780,13 +8993,13 @@ func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) Reset() } } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8798,64 +9011,94 @@ func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) ProtoRe return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 50} } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetBlock() *BlockIdentifier { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetEpoch() *EpochV2 { if x != nil { - return x.Block + return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetPositionInBlock() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetSlot() *SlotV2 { if x != nil { - return x.PositionInBlock + return x.Slot } return nil } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetWallclockEpoch() *EpochV2 { if x != nil { - return x.Epoch + return x.WallclockEpoch } return nil } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetWallclockSlot() *SlotV2 { if x != nil { - return x.Slot + return x.WallclockSlot } return nil } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetPropagation() *PropagationV2 { if x != nil { - return x.Source + return x.Propagation } return nil } -func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Target + return x.Metadata } return nil } -// AdditionalLibP2PTraceAddPeerData: Holds additional data for an add peer event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceAddPeerData struct { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData) GetMessageId() *wrapperspb.StringValue { + if x != nil { + return x.MessageId + } + return nil +} + +// AdditionalLibP2PTraceGossipSubExecutionPayloadBidData contains additional +// data about builder bid gossip from libp2p. +type ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceAddPeerData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8863,13 +9106,13 @@ func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) Reset() { } } -func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceAddPeerData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8881,140 +9124,109 @@ func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceAddPeerData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceAddPeerData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 51} } -func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceRemovePeerData: Holds additional data for a remove peer event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRemovePeerData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRemovePeerData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientMeta_AdditionalLibP2PTraceRemovePeerData) ProtoMessage() {} - -func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[80] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRemovePeerData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRemovePeerData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 52} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceRecvRPCData: Holds additional data for a receive RPC event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRecvRPCData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRecvRPCData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientMeta_AdditionalLibP2PTraceRecvRPCData) ProtoMessage() {} - -func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[81] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRecvRPCData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRecvRPCData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 53} + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData) GetMessageId() *wrapperspb.StringValue { if x != nil { - return x.Metadata + return x.MessageId } return nil } -// AdditionalLibP2PTraceSendRPCData: Holds additional data for a send RPC event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceSendRPCData struct { +// AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData contains additional +// data about PTC attestation gossip from libp2p. +type ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceSendRPCData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[82] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceSendRPCData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[82] +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9025,92 +9237,109 @@ func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceSendRPCData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceSendRPCData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 54} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 52} } -func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceDropRPCData: Holds additional data for a drop RPC event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceDropRPCData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceDropRPCData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil } -func (*ClientMeta_AdditionalLibP2PTraceDropRPCData) ProtoMessage() {} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetMetadata() *libp2p.TraceEventMetadata { + if x != nil { + return x.Metadata + } + return nil +} -func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[83] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDropRPCData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceDropRPCData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 55} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData) GetMessageId() *wrapperspb.StringValue { if x != nil { - return x.Metadata + return x.MessageId } return nil } -// AdditionalLibP2PTraceRPCMetaControlIHaveData: Holds additional data for a RPC meta control i have event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData struct { +// AdditionalLibP2PTraceGossipSubProposerPreferencesData contains additional +// data about proposer preferences gossip from libp2p. +type ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[84] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[84] +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9121,92 +9350,107 @@ func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 56} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 53} } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceRPCMetaControlIWantData: Holds additional data for a RPC meta control i want event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) ProtoMessage() {} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetMetadata() *libp2p.TraceEventMetadata { + if x != nil { + return x.Metadata + } + return nil +} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[85] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 57} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData) GetMessageId() *wrapperspb.StringValue { if x != nil { - return x.Metadata + return x.MessageId } return nil } -// AdditionalLibP2PTraceRPCMetaControlIDontWantData: Holds additional data for a RPC meta control i dont want event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData struct { +type ClientMeta_AttestationDataSnapshot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // RequestedAtSlotStartDiffMs is the difference how far in to the slot the + // sentry was when it requested the attestation data snapshot (in + // milliseconds). + RequestedAtSlotStartDiffMs *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=requested_at_slot_start_diff_ms,proto3" json:"requested_at_slot_start_diff_ms,omitempty"` + // RequestDurationMs is the duration of the attestation data snapshot + // request (in milliseconds). + RequestDurationMs *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=request_duration_ms,proto3" json:"request_duration_ms,omitempty"` + // Timestamp is the timestamp of the attestation data snapshot. + Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData{} +func (x *ClientMeta_AttestationDataSnapshot) Reset() { + *x = ClientMeta_AttestationDataSnapshot{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[86] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) String() string { +func (x *ClientMeta_AttestationDataSnapshot) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) ProtoMessage() {} +func (*ClientMeta_AttestationDataSnapshot) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[86] +func (x *ClientMeta_AttestationDataSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9217,44 +9461,67 @@ func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) ProtoRefle return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 58} +// Deprecated: Use ClientMeta_AttestationDataSnapshot.ProtoReflect.Descriptor instead. +func (*ClientMeta_AttestationDataSnapshot) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 54} } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AttestationDataSnapshot) GetRequestedAtSlotStartDiffMs() *wrapperspb.UInt64Value { if x != nil { - return x.Metadata + return x.RequestedAtSlotStartDiffMs } return nil } -// AdditionalLibP2PTraceRPCMetaControlGraftData: Holds additional data for a RPC meta control graft event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData struct { +func (x *ClientMeta_AttestationDataSnapshot) GetRequestDurationMs() *wrapperspb.UInt64Value { + if x != nil { + return x.RequestDurationMs + } + return nil +} + +func (x *ClientMeta_AttestationDataSnapshot) GetTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +type ClientMeta_AdditionalEthV1ValidatorAttestationDataData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Source contains information for the best currently justified checkpoint. + Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Target contains information of the block at the start of the current + // epoch. + Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` + // Epoch contains the epoch information for the beacon committee. + Epoch *EpochV2 `protobuf:"bytes,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the beacon committee. + Slot *SlotV2 `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + // AttestationDataSnapshot is the snapshot of the attestation data + Snapshot *ClientMeta_AttestationDataSnapshot `protobuf:"bytes,5,opt,name=Snapshot,json=snapshot,proto3" json:"Snapshot,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData{} +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) Reset() { + *x = ClientMeta_AdditionalEthV1ValidatorAttestationDataData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[87] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) String() string { +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[87] +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9265,92 +9532,77 @@ func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 59} +// Deprecated: Use ClientMeta_AdditionalEthV1ValidatorAttestationDataData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 55} } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { if x != nil { - return x.Metadata + return x.Source } return nil } -// AdditionalLibP2PTraceRPCMetaControlPruneData: Holds additional data for a RPC meta control prune event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { + if x != nil { + return x.Target } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) ProtoMessage() {} - -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[88] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetEpoch() *EpochV2 { + if x != nil { + return x.Epoch } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 60} +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1ValidatorAttestationDataData) GetSnapshot() *ClientMeta_AttestationDataSnapshot { if x != nil { - return x.Metadata + return x.Snapshot } return nil } -// AdditionalLibP2PTraceJoinData: Holds additional data for a join event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceJoinData struct { +type ClientMeta_AdditionalEthV1EventsBlobSidecarData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Epoch contains the epoch information for the blob sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the blob sidecar. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // Propagation contains information about the propagation of the blob + // sidecar. + Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceJoinData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceJoinData{} +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsBlobSidecarData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[89] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceJoinData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceJoinData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsBlobSidecarData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceJoinData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[89] +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9361,44 +9613,63 @@ func (x *ClientMeta_AdditionalLibP2PTraceJoinData) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceJoinData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceJoinData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 61} +// Deprecated: Use ClientMeta_AdditionalEthV1EventsBlobSidecarData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsBlobSidecarData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 56} } -func (x *ClientMeta_AdditionalLibP2PTraceJoinData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceLeaveData: Holds additional data for a leave event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceLeaveData struct { +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ClientMeta_AdditionalEthV1EventsBlobSidecarData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil +} + +type ClientMeta_AdditionalEthV1EventsDataColumnSidecarData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Epoch contains the epoch information for the data column sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the data column sidecar. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // Propagation contains information about the propagation of the data column + // sidecar. + Propagation *PropagationV2 `protobuf:"bytes,3,opt,name=propagation,proto3" json:"propagation,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceLeaveData{} +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) Reset() { + *x = ClientMeta_AdditionalEthV1EventsDataColumnSidecarData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[90] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) String() string { +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceLeaveData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[90] +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9409,44 +9680,66 @@ func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceLeaveData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceLeaveData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 62} +// Deprecated: Use ClientMeta_AdditionalEthV1EventsDataColumnSidecarData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 57} } -func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceGraftData: Holds additional data for a graft event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceGraftData struct { +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ClientMeta_AdditionalEthV1EventsDataColumnSidecarData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil +} + +type ClientMeta_AdditionalEthV1BeaconBlobSidecarData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Epoch contains the epoch information for the blob sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the blob sidecar. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // DataSize contains the size of the blob sidecar in bytes. + DataSize *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=data_size,proto3" json:"data_size,omitempty"` + // VersionedHash is the versioned hash for the blob sidecar. + VersionedHash string `protobuf:"bytes,4,opt,name=versioned_hash,proto3" json:"versioned_hash,omitempty"` + // DataEmptySize contains the amount of empty bytes of the blob sidecar. + DataEmptySize *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=data_empty_size,proto3" json:"data_empty_size,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGraftData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGraftData{} +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) Reset() { + *x = ClientMeta_AdditionalEthV1BeaconBlobSidecarData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[91] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGraftData) String() string { +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGraftData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGraftData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[91] +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9457,92 +9750,91 @@ func (x *ClientMeta_AdditionalLibP2PTraceGraftData) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGraftData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGraftData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 63} +// Deprecated: Use ClientMeta_AdditionalEthV1BeaconBlobSidecarData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 58} } -func (x *ClientMeta_AdditionalLibP2PTraceGraftData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTracePruneData: Holds additional data for a prune event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTracePruneData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTracePruneData) Reset() { - *x = ClientMeta_AdditionalLibP2PTracePruneData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetDataSize() *wrapperspb.UInt64Value { + if x != nil { + return x.DataSize } + return nil } -func (x *ClientMeta_AdditionalLibP2PTracePruneData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientMeta_AdditionalLibP2PTracePruneData) ProtoMessage() {} - -func (x *ClientMeta_AdditionalLibP2PTracePruneData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[92] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetVersionedHash() string { + if x != nil { + return x.VersionedHash } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientMeta_AdditionalLibP2PTracePruneData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTracePruneData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 64} + return "" } -func (x *ClientMeta_AdditionalLibP2PTracePruneData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1BeaconBlobSidecarData) GetDataEmptySize() *wrapperspb.UInt64Value { if x != nil { - return x.Metadata + return x.DataEmptySize } return nil } -// AdditionalLibP2PTraceDuplicateMessageData: Holds additional data for a duplicate message event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceDuplicateMessageData struct { +type ClientMeta_AdditionalBeaconP2PAttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Source contains information for the best currently justified checkpoint. + Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Target contains information of the block at the start of the current + // epoch. + Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` + // Slot contains the slot information for the attestation. + Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` + // Epoch contains the epoch information for the attestation. + Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Propagation contains information about the propagation of the + // attestation. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // AttestingValidator contains data about the validator that created the + // attestation. Note: only available for unaggregated attestations. + AttestingValidator *AttestingValidatorV2 `protobuf:"bytes,6,opt,name=attesting_validator,proto3" json:"attesting_validator,omitempty"` + // Peer contains information on the peer that sent us the attestation. + Peer *libp2p.Peer `protobuf:"bytes,7,opt,name=peer,proto3" json:"peer,omitempty"` + // Subnet is the subnet that the attestation was sent on. + Subnet *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=subnet,proto3" json:"subnet,omitempty"` + // Validated is if the attestation was validated. + Validated *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=validated,proto3" json:"validated,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceDuplicateMessageData{} +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) Reset() { + *x = ClientMeta_AdditionalBeaconP2PAttestationData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[93] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) String() string { +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) ProtoMessage() {} +func (*ClientMeta_AdditionalBeaconP2PAttestationData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[93] +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9553,92 +9845,106 @@ func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) ProtoReflect() pr return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDuplicateMessageData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 65} +// Deprecated: Use ClientMeta_AdditionalBeaconP2PAttestationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalBeaconP2PAttestationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 59} } -func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { if x != nil { - return x.Metadata + return x.Source } return nil } -// AdditionalLibP2PTraceDeliverMessageData: Holds additional data for a deliver message event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceDeliverMessageData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { + if x != nil { + return x.Target + } + return nil +} - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceDeliverMessageData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetEpoch() *EpochV2 { + if x != nil { + return x.Epoch } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil } -func (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData) ProtoMessage() {} +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetAttestingValidator() *AttestingValidatorV2 { + if x != nil { + return x.AttestingValidator + } + return nil +} -func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[94] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetPeer() *libp2p.Peer { + if x != nil { + return x.Peer } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDeliverMessageData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 66} +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetSubnet() *wrapperspb.UInt32Value { + if x != nil { + return x.Subnet + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalBeaconP2PAttestationData) GetValidated() *wrapperspb.BoolValue { if x != nil { - return x.Metadata + return x.Validated } return nil } -// AdditionalLibP2PTracePublishMessageData: Holds additional data for a publish message event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTracePublishMessageData struct { +type ClientMeta_AdditionalEthV1ProposerDutyData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Epoch contains the epoch information for the proposer duty. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the proposer duty. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // StateID is the state ID when the proposer duty was requested. + // This can be used to determine if the proposer duty was canonical + // by checking if the state_id is 'finalized'. + StateId string `protobuf:"bytes,3,opt,name=state_id,proto3" json:"state_id,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) Reset() { - *x = ClientMeta_AdditionalLibP2PTracePublishMessageData{} +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) Reset() { + *x = ClientMeta_AdditionalEthV1ProposerDutyData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[95] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) String() string { +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTracePublishMessageData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1ProposerDutyData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[95] +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9649,44 +9955,70 @@ func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) ProtoReflect() prot return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTracePublishMessageData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTracePublishMessageData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 67} +// Deprecated: Use ClientMeta_AdditionalEthV1ProposerDutyData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1ProposerDutyData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 60} } -func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetEpoch() *EpochV2 { if x != nil { - return x.Metadata + return x.Epoch } return nil } -// AdditionalLibP2PTraceRejectMessageData: Holds additional data for a reject message event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRejectMessageData struct { +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ClientMeta_AdditionalEthV1ProposerDutyData) GetStateId() string { + if x != nil { + return x.StateId + } + return "" +} + +type ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Block contains the information about the block that we are deriving the + // elaborated attestation from. + Block *BlockIdentifier `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` + // PositionInBlock is the position of the attestation in the block. + PositionInBlock *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=position_in_block,proto3" json:"position_in_block,omitempty"` + // Epoch contains the epoch information for the slot of the attestation. + Epoch *EpochV2 `protobuf:"bytes,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the slot of the attestation. + Slot *SlotV2 `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + // Source contains information for source of the attestation. + Source *ClientMeta_AdditionalEthV1AttestationSourceV2Data `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` + // Target contains information of the block at the start of the current + // epoch. + Target *ClientMeta_AdditionalEthV1AttestationTargetV2Data `protobuf:"bytes,6,opt,name=target,proto3" json:"target,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRejectMessageData{} +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) Reset() { + *x = ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[96] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) String() string { +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRejectMessageData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[96] +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9697,68 +10029,55 @@ func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRejectMessageData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRejectMessageData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 68} +// Deprecated: Use ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 61} } -func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetBlock() *BlockIdentifier { if x != nil { - return x.Metadata + return x.Block } return nil } -// AdditionalLibP2PTraceConnectedData: Holds additional data for a connected event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceConnectedData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetPositionInBlock() *wrapperspb.UInt64Value { + if x != nil { + return x.PositionInBlock + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceConnectedData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetEpoch() *EpochV2 { + if x != nil { + return x.Epoch } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientMeta_AdditionalLibP2PTraceConnectedData) ProtoMessage() {} - -func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[97] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceConnectedData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceConnectedData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 69} +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetSource() *ClientMeta_AdditionalEthV1AttestationSourceV2Data { + if x != nil { + return x.Source + } + return nil } -func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData) GetTarget() *ClientMeta_AdditionalEthV1AttestationTargetV2Data { if x != nil { - return x.Metadata + return x.Target } return nil } -// AdditionalLibP2PTraceDisconnectedData: Holds additional data for a disconnected event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceDisconnectedData struct { +// AdditionalLibP2PTraceAddPeerData: Holds additional data for an add peer event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceAddPeerData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9766,23 +10085,23 @@ type ClientMeta_AdditionalLibP2PTraceDisconnectedData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceDisconnectedData{} +func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceAddPeerData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[98] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceDisconnectedData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceAddPeerData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[98] +func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9793,20 +10112,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDisconnectedData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceDisconnectedData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 70} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceAddPeerData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceAddPeerData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 62} } -func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceAddPeerData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceSyntheticHeartbeatData: Holds additional data for a synthetic heartbeat event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData struct { +// AdditionalLibP2PTraceRemovePeerData: Holds additional data for a remove peer event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRemovePeerData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9814,23 +10133,23 @@ type ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData{} +func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRemovePeerData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[99] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRemovePeerData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[99] +func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9841,20 +10160,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 71} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRemovePeerData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRemovePeerData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 63} } -func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceRemovePeerData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceHandleMetadataData: Holds additional data for a handle metadata event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceHandleMetadataData struct { +// AdditionalLibP2PTraceRecvRPCData: Holds additional data for a receive RPC event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRecvRPCData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9862,23 +10181,23 @@ type ClientMeta_AdditionalLibP2PTraceHandleMetadataData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceHandleMetadataData{} +func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRecvRPCData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[100] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRecvRPCData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[100] +func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9889,20 +10208,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) ProtoReflect() prot return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceHandleMetadataData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 72} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRecvRPCData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRecvRPCData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 64} } -func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceRecvRPCData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceHandleStatusData: Holds additional data for a handle status event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceHandleStatusData struct { +// AdditionalLibP2PTraceSendRPCData: Holds additional data for a send RPC event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceSendRPCData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9910,23 +10229,23 @@ type ClientMeta_AdditionalLibP2PTraceHandleStatusData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceHandleStatusData{} +func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceSendRPCData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[101] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceHandleStatusData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceSendRPCData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[101] +func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9937,19 +10256,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceHandleStatusData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceHandleStatusData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 73} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceSendRPCData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceSendRPCData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 65} } -func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceSendRPCData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceIdentifyData struct { +// AdditionalLibP2PTraceDropRPCData: Holds additional data for a drop RPC event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceDropRPCData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9957,23 +10277,23 @@ type ClientMeta_AdditionalLibP2PTraceIdentifyData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceIdentifyData{} +func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceDropRPCData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[102] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceIdentifyData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceDropRPCData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[102] +func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9984,52 +10304,44 @@ func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceIdentifyData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceIdentifyData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 74} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDropRPCData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceDropRPCData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 66} } -func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceDropRPCData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceRpcDataColumnCustodyProbeData: Holds additional data for a custody probe event in LibP2P Trace RPC. -type ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData struct { +// AdditionalLibP2PTraceRPCMetaControlIHaveData: Holds additional data for a RPC meta control i have event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Epoch contains the epoch information for the probe event - Epoch *EpochV2 `protobuf:"bytes,2,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the probe event. - Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockEpoch contains the epoch information for the probe event in the wall clock time when the request was sent. - WallclockEpoch *EpochV2 `protobuf:"bytes,4,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the probe event in the wall clock time when the request was sent. - WallclockSlot *SlotV2 `protobuf:"bytes,5,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData{} +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[103] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[103] +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10040,48 +10352,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) ProtoRef return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 75} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 67} } -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch - } - return nil -} - -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} - -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil -} - -func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot - } - return nil -} - -// AdditionalLibP2PTraceRPCMetaSubscriptionData: Holds additional data for a RPC meta subscription event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData struct { +// AdditionalLibP2PTraceRPCMetaControlIWantData: Holds additional data for a RPC meta control i want event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -10089,23 +10373,23 @@ type ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData{} +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[104] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[104] +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10116,20 +10400,20 @@ func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 76} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 68} } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceRPCMetaMessageData: Holds additional data for a RPC meta message event in LibP2P tracing. -type ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData struct { +// AdditionalLibP2PTraceRPCMetaControlIDontWantData: Holds additional data for a RPC meta control i dont want event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -10137,23 +10421,23 @@ type ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData struct { Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData{} +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[105] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[105] +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10164,61 +10448,44 @@ func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) ProtoReflect() prot return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 77} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 69} } -func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -// AdditionalLibP2PTraceGossipSubBeaconBlockData contains additional data about the gossip sub beacon block event. -type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData struct { +// AdditionalLibP2PTraceRPCMetaControlGraftData: Holds additional data for a RPC meta control graft event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the beacon block. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the beacon block. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockEpoch contains the epoch information for the beacon block in the wall clock time. - WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the beacon block in the wall clock time. - WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Propagation contains information about the propagation of the beacon block. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // Metadata contains additional trace event metadata. - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Topic is the gossip sub topic the beacon block was received on. - Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` - // MessageSize is the size of the beacon block message in bytes. - MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` - // MessageID is a unique identifier for the beacon block message. - MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData{} +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[106] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[106] +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10229,100 +10496,92 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) ProtoReflect( return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 78} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 70} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} +// AdditionalLibP2PTraceRPCMetaControlPruneData: Holds additional data for a RPC meta control prune event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMetadata() *libp2p.TraceEventMetadata { - if x != nil { - return x.Metadata - } - return nil -} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetTopic() *wrapperspb.StringValue { - if x != nil { - return x.Topic +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMessageSize() *wrapperspb.UInt32Value { - if x != nil { - return x.MessageSize - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 71} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMessageId() *wrapperspb.StringValue { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.MessageId + return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData struct { +// AdditionalLibP2PTraceJoinData: Holds additional data for a join event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceJoinData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the source. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData{} +func (x *ClientMeta_AdditionalLibP2PTraceJoinData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceJoinData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[107] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceJoinData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceJoinData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[107] +func (x *ClientMeta_AdditionalLibP2PTraceJoinData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10333,44 +10592,44 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) P return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 79} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceJoinData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceJoinData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 72} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceJoinData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData struct { +// AdditionalLibP2PTraceLeaveData: Holds additional data for a leave event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceLeaveData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the target. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData{} +func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceLeaveData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[108] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceLeaveData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[108] +func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10381,69 +10640,44 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) P return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 80} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceLeaveData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceLeaveData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 73} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceLeaveData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData struct { +// AdditionalLibP2PTraceGraftData: Holds additional data for a graft event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceGraftData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Source contains information for the best currently justified checkpoint. - Source *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - // Target contains information of the block at the start of the current - // epoch. - Target *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - // Slot contains the slot information for the attestation. - Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` - // Epoch contains the epoch information for the attestation. - Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Propagation contains information about the propagation of the - // attestation. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // AttestingValidator contains data about the validator that created the - // attestation. Note: only available for unaggregated attestations. - AttestingValidator *AttestingValidatorV2 `protobuf:"bytes,6,opt,name=attesting_validator,proto3" json:"attesting_validator,omitempty"` - // WallclockEpoch contains the epoch information for the attestation on the wall clock when the attestation was received. - WallclockEpoch *EpochV2 `protobuf:"bytes,7,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the attestation on the wall clock when the attestation was received. - WallclockSlot *SlotV2 `protobuf:"bytes,8,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Metadata contains additional trace event metadata. - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Topic is the gossip sub topic the beacon block was received on. - Topic *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=topic,proto3" json:"topic,omitempty"` - // MessageSize is the size of the beacon block message in bytes. - MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,11,opt,name=message_size,proto3" json:"message_size,omitempty"` - // MessageID is a unique identifier for the beacon block message. - MessageId *wrapperspb.StringValue `protobuf:"bytes,12,opt,name=message_id,proto3" json:"message_id,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData{} +func (x *ClientMeta_AdditionalLibP2PTraceGraftData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGraftData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[109] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGraftData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGraftData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[109] +func (x *ClientMeta_AdditionalLibP2PTraceGraftData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10454,139 +10688,92 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) ProtoRe return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 81} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGraftData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGraftData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 74} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetSource() *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData { +func (x *ClientMeta_AdditionalLibP2PTraceGraftData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Source + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetTarget() *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData { - if x != nil { - return x.Target - } - return nil -} +// AdditionalLibP2PTracePruneData: Holds additional data for a prune event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTracePruneData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch +func (x *ClientMeta_AdditionalLibP2PTracePruneData) Reset() { + *x = ClientMeta_AdditionalLibP2PTracePruneData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation - } - return nil +func (x *ClientMeta_AdditionalLibP2PTracePruneData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetAttestingValidator() *AttestingValidatorV2 { - if x != nil { - return x.AttestingValidator - } - return nil -} +func (*ClientMeta_AdditionalLibP2PTracePruneData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch +func (x *ClientMeta_AdditionalLibP2PTracePruneData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTracePruneData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTracePruneData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 75} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMetadata() *libp2p.TraceEventMetadata { +func (x *ClientMeta_AdditionalLibP2PTracePruneData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetTopic() *wrapperspb.StringValue { - if x != nil { - return x.Topic - } - return nil -} - -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMessageSize() *wrapperspb.UInt32Value { - if x != nil { - return x.MessageSize - } - return nil -} - -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMessageId() *wrapperspb.StringValue { - if x != nil { - return x.MessageId - } - return nil -} - -type ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData struct { +// AdditionalLibP2PTraceDuplicateMessageData: Holds additional data for a duplicate message event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceDuplicateMessageData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the aggregate and proof. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the aggregate and proof. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockEpoch contains the epoch information for the aggregate and proof in the wall clock time. - WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the aggregate and proof in the wall clock time. - WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Propagation contains information about the propagation of the aggregate and proof. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // AggregatorIndex contains the index of the validator who created this aggregate. - AggregatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=aggregator_index,proto3" json:"aggregator_index,omitempty"` - // Metadata contains additional trace event metadata. - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Topic is the gossip sub topic the aggregate and proof was received on. - Topic *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=topic,proto3" json:"topic,omitempty"` - // MessageSize is the size of the aggregate and proof message in bytes. - MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=message_size,proto3" json:"message_size,omitempty"` - // MessageID is a unique identifier for the aggregate and proof message. - MessageId *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=message_id,proto3" json:"message_id,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData{} +func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceDuplicateMessageData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[110] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[110] +func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10597,123 +10784,92 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) ProtoRe return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 82} -} - -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDuplicateMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 76} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceDuplicateMessageData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Slot + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil -} +// AdditionalLibP2PTraceDeliverMessageData: Holds additional data for a deliver message event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceDeliverMessageData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation +func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceDeliverMessageData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetAggregatorIndex() *wrapperspb.UInt64Value { - if x != nil { - return x.AggregatorIndex - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMetadata() *libp2p.TraceEventMetadata { - if x != nil { - return x.Metadata - } - return nil -} +func (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetTopic() *wrapperspb.StringValue { - if x != nil { - return x.Topic +func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMessageSize() *wrapperspb.UInt32Value { - if x != nil { - return x.MessageSize - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDeliverMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 77} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMessageId() *wrapperspb.StringValue { +func (x *ClientMeta_AdditionalLibP2PTraceDeliverMessageData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.MessageId + return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData struct { +// AdditionalLibP2PTracePublishMessageData: Holds additional data for a publish message event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTracePublishMessageData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the blob sidecar. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the blob sidecar. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockEpoch contains the epoch information for the blob sidecar in the wall clock time. - WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the blob sidecar in the wall clock time. - WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Propagation contains information about the propagation of the blob sidecar. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // Metadata contains additional trace event metadata. - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Topic is the gossip sub topic the blob sidecar was received on. - Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` - // MessageSize is the size of the blob sidecar message in bytes. - MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` - // MessageID is a unique identifier for the blob sidecar message. - MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData{} +func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTracePublishMessageData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[111] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) String() string { +func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTracePublishMessageData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[111] +func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10724,116 +10880,92 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) ProtoReflect( return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 83} +// Deprecated: Use ClientMeta_AdditionalLibP2PTracePublishMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTracePublishMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 78} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTracePublishMessageData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} +// AdditionalLibP2PTraceRejectMessageData: Holds additional data for a reject message event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRejectMessageData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot +func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRejectMessageData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMetadata() *libp2p.TraceEventMetadata { - if x != nil { - return x.Metadata - } - return nil -} +func (*ClientMeta_AdditionalLibP2PTraceRejectMessageData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetTopic() *wrapperspb.StringValue { - if x != nil { - return x.Topic +func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMessageSize() *wrapperspb.UInt32Value { - if x != nil { - return x.MessageSize - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRejectMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRejectMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 79} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMessageId() *wrapperspb.StringValue { +func (x *ClientMeta_AdditionalLibP2PTraceRejectMessageData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.MessageId + return x.Metadata } return nil } -type ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData struct { +// AdditionalLibP2PTraceConnectedData: Holds additional data for a connected event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceConnectedData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the data column sidecar. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the data column sidecar. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockEpoch contains the epoch information for the data column sidecar in the wall clock time. - WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // WallclockSlot contains the slot information for the data column sidecar in the wall clock time. - WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Propagation contains information about the propagation of the data column sidecar. - Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` - // Metadata contains additional trace event metadata. - Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Topic is the gossip sub topic the data column sidecar was received on. - Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` - // MessageSize is the size of the data column sidecar message in bytes. - MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` - // MessageID is a unique identifier for the data column sidecar message. - MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) Reset() { - *x = ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData{} +func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceConnectedData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[112] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceConnectedData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[112] +func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10844,100 +10976,92 @@ func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) ProtoRe return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 84} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceConnectedData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceConnectedData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 80} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceConnectedData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} +// AdditionalLibP2PTraceDisconnectedData: Holds additional data for a disconnected event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceDisconnectedData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot +func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceDisconnectedData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetPropagation() *PropagationV2 { - if x != nil { - return x.Propagation - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMetadata() *libp2p.TraceEventMetadata { - if x != nil { - return x.Metadata - } - return nil -} +func (*ClientMeta_AdditionalLibP2PTraceDisconnectedData) ProtoMessage() {} -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetTopic() *wrapperspb.StringValue { - if x != nil { - return x.Topic +func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMessageSize() *wrapperspb.UInt32Value { - if x != nil { - return x.MessageSize - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceDisconnectedData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceDisconnectedData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 81} } -func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMessageId() *wrapperspb.StringValue { +func (x *ClientMeta_AdditionalLibP2PTraceDisconnectedData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.MessageId + return x.Metadata } return nil } -// AdditionalEthV1ValidatorsData contains additional data about the eth v1 validators. -type ClientMeta_AdditionalEthV1ValidatorsData struct { +// AdditionalLibP2PTraceSyntheticHeartbeatData: Holds additional data for a synthetic heartbeat event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalEthV1ValidatorsData) Reset() { - *x = ClientMeta_AdditionalEthV1ValidatorsData{} +func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[113] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalEthV1ValidatorsData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1ValidatorsData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1ValidatorsData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[113] +func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10948,57 +11072,44 @@ func (x *ClientMeta_AdditionalEthV1ValidatorsData) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1ValidatorsData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1ValidatorsData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 85} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 82} } -func (x *ClientMeta_AdditionalEthV1ValidatorsData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -// AdditionalMevRelayBidTraceBuilderBlockSubmissionData contains additional data about the mev relay bid trace event. -type ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData struct { +// AdditionalLibP2PTraceHandleMetadataData: Holds additional data for a handle metadata event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceHandleMetadataData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Relay is the relay that the bid trace is from. - Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` - // Slot is the slot the bid trace is for. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockSlot contains the slot information of when the bid trace was requested. - WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Epoch is the epoch the bid trace is for. - Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` - // WallclockEpoch contains the epoch information of when the bid trace was requested. - WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // RequestedAtSlotTime is the time in the slot when the bid trace was requested. - RequestedAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=requested_at_slot_time,proto3" json:"requested_at_slot_time,omitempty"` - // ResponseAtSlotTime is the time in the slot when the bid trace was responded to. - ResponseAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=response_at_slot_time,proto3" json:"response_at_slot_time,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) Reset() { - *x = ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData{} +func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceHandleMetadataData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[114] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData) ProtoMessage() {} -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[114] +func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11009,99 +11120,91 @@ func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) ProtoR return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 86} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceHandleMetadataData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 83} } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetRelay() *mevrelay.Relay { +func (x *ClientMeta_AdditionalLibP2PTraceHandleMetadataData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Relay + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} +// AdditionalLibP2PTraceHandleStatusData: Holds additional data for a handle status event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceHandleStatusData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetWallclockSlot() *SlotV2 { - if x != nil { - return x.WallclockSlot - } - return nil + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetEpoch() *EpochV2 { - if x != nil { - return x.Epoch +func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceHandleStatusData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetWallclockEpoch() *EpochV2 { - if x != nil { - return x.WallclockEpoch - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetRequestedAtSlotTime() *wrapperspb.UInt64Value { - if x != nil { - return x.RequestedAtSlotTime +func (*ClientMeta_AdditionalLibP2PTraceHandleStatusData) ProtoMessage() {} + +func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetResponseAtSlotTime() *wrapperspb.UInt64Value { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceHandleStatusData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceHandleStatusData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 84} +} + +func (x *ClientMeta_AdditionalLibP2PTraceHandleStatusData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.ResponseAtSlotTime + return x.Metadata } return nil } -// AdditionalMevRelayPayloadDeliveredData contains additional data about the proposer payload delivered event. -type ClientMeta_AdditionalMevRelayPayloadDeliveredData struct { +type ClientMeta_AdditionalLibP2PTraceIdentifyData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Relay is the relay that delivered the payload. - Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` - // Slot is the slot the payload was delivered for. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockSlot contains the slot information of when the payload was delivered. - WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Epoch is the epoch the payload was delivered for. - Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` - // WallclockEpoch contains the epoch information of when the payload was delivered. - WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // RequestedAtSlotTime is the time in the slot when the payload was requested. - RequestedAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=requested_at_slot_time,proto3" json:"requested_at_slot_time,omitempty"` - // ResponseAtSlotTime is the time in the slot when the payload was delivered. - ResponseAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=response_at_slot_time,proto3" json:"response_at_slot_time,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) Reset() { - *x = ClientMeta_AdditionalMevRelayPayloadDeliveredData{} +func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceIdentifyData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[115] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalMevRelayPayloadDeliveredData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceIdentifyData) ProtoMessage() {} -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[115] +func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11112,111 +11215,128 @@ func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalMevRelayPayloadDeliveredData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalMevRelayPayloadDeliveredData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 87} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceIdentifyData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceIdentifyData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 85} } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetRelay() *mevrelay.Relay { +func (x *ClientMeta_AdditionalLibP2PTraceIdentifyData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Relay + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot +// AdditionalLibP2PTraceRpcDataColumnCustodyProbeData: Holds additional data for a custody probe event in LibP2P Trace RPC. +type ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Epoch contains the epoch information for the probe event + Epoch *EpochV2 `protobuf:"bytes,2,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the probe event. + Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockEpoch contains the epoch information for the probe event in the wall clock time when the request was sent. + WallclockEpoch *EpochV2 `protobuf:"bytes,4,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the probe event in the wall clock time when the request was sent. + WallclockSlot *SlotV2 `protobuf:"bytes,5,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` +} + +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetWallclockSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) ProtoMessage() {} + +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 86} +} + +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.WallclockSlot + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetWallclockEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetSlot() *SlotV2 { if x != nil { - return x.WallclockEpoch + return x.Slot } return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetRequestedAtSlotTime() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetWallclockEpoch() *EpochV2 { if x != nil { - return x.RequestedAtSlotTime + return x.WallclockEpoch } return nil } -func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetResponseAtSlotTime() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData) GetWallclockSlot() *SlotV2 { if x != nil { - return x.ResponseAtSlotTime + return x.WallclockSlot } return nil } -// AdditionalEthV3ValidatorBlockData contains additional data about the eth v3 validator block event. -type ClientMeta_AdditionalEthV3ValidatorBlockData struct { +// AdditionalLibP2PTraceRPCMetaSubscriptionData: Holds additional data for a RPC meta subscription event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the block. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the block. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // Version contains information about the version of the block. - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - // TransactionsCount contains the number of transactions in the block - TransactionsCount *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=transactions_count,proto3" json:"transactions_count,omitempty"` - // TransactionsTotalBytes contains the total bytes size of transactions - TransactionsTotalBytes *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=transactions_total_bytes,proto3" json:"transactions_total_bytes,omitempty"` - // CompressedTotalBytesCompressed contains the total bytes size of - // transactions with snappy compression - TransactionsTotalBytesCompressed *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=transactions_total_bytes_compressed,proto3" json:"transactions_total_bytes_compressed,omitempty"` - // TotalBytes contains the total bytes size of block - TotalBytes *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=total_bytes,proto3" json:"total_bytes,omitempty"` - // TotalBytesCompressed contains the total bytes size of block with snappy - // compression - TotalBytesCompressed *wrapperspb.UInt64Value `protobuf:"bytes,8,opt,name=total_bytes_compressed,proto3" json:"total_bytes_compressed,omitempty"` - // ExecutionValue contains the total execution payload value, in Wei. - ExecutionValue string `protobuf:"bytes,9,opt,name=execution_value,proto3" json:"execution_value,omitempty"` - // ConsensusValue represents the rewards paid to the proposer for this block, in Wei. - ConsensusValue string `protobuf:"bytes,10,opt,name=consensus_value,proto3" json:"consensus_value,omitempty"` - // RequestDurationMs is the duration of the produce block request (in milliseconds). - RequestDurationMs *wrapperspb.UInt64Value `protobuf:"bytes,11,opt,name=request_duration_ms,proto3" json:"request_duration_ms,omitempty"` - // RequestedAt is the time the call was made to produce the block. - RequestedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=requested_at,proto3" json:"requested_at,omitempty"` + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) Reset() { - *x = ClientMeta_AdditionalEthV3ValidatorBlockData{} +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[116] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV3ValidatorBlockData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[116] +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11227,117 +11347,94 @@ func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV3ValidatorBlockData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV3ValidatorBlockData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 88} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 87} } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.Epoch + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil +// AdditionalLibP2PTraceRPCMetaMessageData: Holds additional data for a RPC meta message event in LibP2P tracing. +type ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetVersion() string { - if x != nil { - return x.Version +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsCount() *wrapperspb.UInt64Value { - if x != nil { - return x.TransactionsCount - } - return nil +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsTotalBytes() *wrapperspb.UInt64Value { - if x != nil { - return x.TransactionsTotalBytes +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) ProtoMessage() {} + +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsTotalBytesCompressed() *wrapperspb.UInt64Value { - if x != nil { - return x.TransactionsTotalBytesCompressed - } - return nil -} - -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTotalBytes() *wrapperspb.UInt64Value { - if x != nil { - return x.TotalBytes - } - return nil -} - -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTotalBytesCompressed() *wrapperspb.UInt64Value { - if x != nil { - return x.TotalBytesCompressed - } - return nil -} - -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetExecutionValue() string { - if x != nil { - return x.ExecutionValue - } - return "" -} - -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetConsensusValue() string { - if x != nil { - return x.ConsensusValue - } - return "" -} - -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetRequestDurationMs() *wrapperspb.UInt64Value { - if x != nil { - return x.RequestDurationMs - } - return nil +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 88} } -func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetRequestedAt() *timestamppb.Timestamp { +func (x *ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.RequestedAt + return x.Metadata } return nil } -// AdditionalMevRelayValidatorRegistrationData contains additional data about the mev relay validator registration event. -type ClientMeta_AdditionalMevRelayValidatorRegistrationData struct { +// AdditionalLibP2PTraceGossipSubBeaconBlockData contains additional data about the gossip sub beacon block event. +type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Relay is the relay that received the validator registration. - Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` - // Slot is the slot the validator registration was received for. This is derived from the validator registration `timestamp` field. + // Epoch contains the epoch information for the beacon block. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the beacon block. Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` - // WallclockSlot contains the slot information of when the validator registration was received from the relay. - WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` - // Epoch is the epoch the validator registration was received for. This is derived from the validator registration `timestamp` field. - Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` - // WallclockEpoch contains the epoch information of when the validator registration was requested from the relay. - WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` - // ValidatorIndex is the index of the validator that was registered. - ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=validator_index,proto3" json:"validator_index,omitempty"` + // WallclockEpoch contains the epoch information for the beacon block in the wall clock time. + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the beacon block in the wall clock time. + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Propagation contains information about the propagation of the beacon block. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // Metadata contains additional trace event metadata. + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Topic is the gossip sub topic the beacon block was received on. + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + // MessageSize is the size of the beacon block message in bytes. + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + // MessageID is a unique identifier for the beacon block message. + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) Reset() { - *x = ClientMeta_AdditionalMevRelayValidatorRegistrationData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11345,13 +11442,13 @@ func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) Reset() { } } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalMevRelayValidatorRegistrationData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) ProtoMessage() {} -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11363,69 +11460,85 @@ func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalMevRelayValidatorRegistrationData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalMevRelayValidatorRegistrationData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 89} } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetRelay() *mevrelay.Relay { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetEpoch() *EpochV2 { if x != nil { - return x.Relay + return x.Epoch } return nil } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetWallclockSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetWallclockSlot() *SlotV2 { if x != nil { return x.WallclockSlot } return nil } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetPropagation() *PropagationV2 { if x != nil { - return x.Epoch + return x.Propagation } return nil } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetWallclockEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.WallclockEpoch + return x.Metadata } return nil } -func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetValidatorIndex() *wrapperspb.UInt64Value { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetTopic() *wrapperspb.StringValue { if x != nil { - return x.ValidatorIndex + return x.Topic } return nil } -// AdditionalNodeRecordConsensusData contains additional data about the node record consensus event. -type ClientMeta_AdditionalNodeRecordConsensusData struct { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData) GetMessageId() *wrapperspb.StringValue { + if x != nil { + return x.MessageId + } + return nil +} + +type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FinalizedEpoch is the epoch the node record consensus was received for. - FinalizedEpoch *EpochV2 `protobuf:"bytes,2,opt,name=finalized_epoch,json=finalizedEpoch,proto3" json:"finalized_epoch,omitempty"` - // HeadSlot is the slot the node record consensus was received for. - HeadSlot *SlotV2 `protobuf:"bytes,3,opt,name=head_slot,json=headSlot,proto3" json:"head_slot,omitempty"` - // HeadEpoch is the epoch the node record consensus was received for. - HeadEpoch *EpochV2 `protobuf:"bytes,4,opt,name=head_epoch,json=headEpoch,proto3" json:"head_epoch,omitempty"` + // Epoch contains the epoch information for the source. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` } -func (x *ClientMeta_AdditionalNodeRecordConsensusData) Reset() { - *x = ClientMeta_AdditionalNodeRecordConsensusData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11433,13 +11546,13 @@ func (x *ClientMeta_AdditionalNodeRecordConsensusData) Reset() { } } -func (x *ClientMeta_AdditionalNodeRecordConsensusData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalNodeRecordConsensusData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) ProtoMessage() {} -func (x *ClientMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11451,47 +11564,29 @@ func (x *ClientMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalNodeRecordConsensusData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalNodeRecordConsensusData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 90} } -func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetFinalizedEpoch() *EpochV2 { - if x != nil { - return x.FinalizedEpoch - } - return nil -} - -func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetHeadSlot() *SlotV2 { - if x != nil { - return x.HeadSlot - } - return nil -} - -func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetHeadEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData) GetEpoch() *EpochV2 { if x != nil { - return x.HeadEpoch + return x.Epoch } return nil } -// AdditionalConsensusEngineAPINewPayloadData contains additional metadata about the -// engine_newPayload call event. -type ClientMeta_AdditionalConsensusEngineAPINewPayloadData struct { +type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the slot. + // Epoch contains the epoch information for the target. Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` } -func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) Reset() { - *x = ClientMeta_AdditionalConsensusEngineAPINewPayloadData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11499,13 +11594,13 @@ func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) Reset() { } } -func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) ProtoMessage() {} -func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11517,40 +11612,54 @@ func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalConsensusEngineAPINewPayloadData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 91} } -func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) GetSlot() *SlotV2 { - if x != nil { - return x.Slot - } - return nil -} - -// AdditionalConsensusEngineAPIGetBlobsData contains additional metadata about the -// engine_getBlobs call event. -type ClientMeta_AdditionalConsensusEngineAPIGetBlobsData struct { +type ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the slot. - Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information. - Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // Source contains information for the best currently justified checkpoint. + Source *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Target contains information of the block at the start of the current + // epoch. + Target *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` + // Slot contains the slot information for the attestation. + Slot *SlotV2 `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` + // Epoch contains the epoch information for the attestation. + Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Propagation contains information about the propagation of the + // attestation. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // AttestingValidator contains data about the validator that created the + // attestation. Note: only available for unaggregated attestations. + AttestingValidator *AttestingValidatorV2 `protobuf:"bytes,6,opt,name=attesting_validator,proto3" json:"attesting_validator,omitempty"` + // WallclockEpoch contains the epoch information for the attestation on the wall clock when the attestation was received. + WallclockEpoch *EpochV2 `protobuf:"bytes,7,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the attestation on the wall clock when the attestation was received. + WallclockSlot *SlotV2 `protobuf:"bytes,8,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Metadata contains additional trace event metadata. + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Topic is the gossip sub topic the beacon block was received on. + Topic *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=topic,proto3" json:"topic,omitempty"` + // MessageSize is the size of the beacon block message in bytes. + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,11,opt,name=message_size,proto3" json:"message_size,omitempty"` + // MessageID is a unique identifier for the beacon block message. + MessageId *wrapperspb.StringValue `protobuf:"bytes,12,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) Reset() { - *x = ClientMeta_AdditionalConsensusEngineAPIGetBlobsData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11558,13 +11667,13 @@ func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) Reset() { } } -func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) ProtoMessage() {} -func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11576,40 +11685,124 @@ func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) ProtoReflect() pro return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalConsensusEngineAPIGetBlobsData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 92} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 92} } -func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetSource() *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData { if x != nil { - return x.Epoch + return x.Source } return nil } -func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetTarget() *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData { + if x != nil { + return x.Target + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -// AdditionalEthV1BeaconBlobData contains additional metadata about the -// beacon blob event derived from block's blob_kzg_commitments. -type ClientMeta_AdditionalEthV1BeaconBlobData struct { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetEpoch() *EpochV2 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetAttestingValidator() *AttestingValidatorV2 { + if x != nil { + return x.AttestingValidator + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMetadata() *libp2p.TraceEventMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData) GetMessageId() *wrapperspb.StringValue { + if x != nil { + return x.MessageId + } + return nil +} + +type ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch contains the epoch information for the blob. + // Epoch contains the epoch information for the aggregate and proof. Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Slot contains the slot information for the blob. + // Slot contains the slot information for the aggregate and proof. Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockEpoch contains the epoch information for the aggregate and proof in the wall clock time. + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the aggregate and proof in the wall clock time. + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Propagation contains information about the propagation of the aggregate and proof. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // AggregatorIndex contains the index of the validator who created this aggregate. + AggregatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=aggregator_index,proto3" json:"aggregator_index,omitempty"` + // Metadata contains additional trace event metadata. + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Topic is the gossip sub topic the aggregate and proof was received on. + Topic *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=topic,proto3" json:"topic,omitempty"` + // MessageSize is the size of the aggregate and proof message in bytes. + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=message_size,proto3" json:"message_size,omitempty"` + // MessageID is a unique identifier for the aggregate and proof message. + MessageId *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_AdditionalEthV1BeaconBlobData) Reset() { - *x = ClientMeta_AdditionalEthV1BeaconBlobData{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11617,13 +11810,13 @@ func (x *ClientMeta_AdditionalEthV1BeaconBlobData) Reset() { } } -func (x *ClientMeta_AdditionalEthV1BeaconBlobData) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_AdditionalEthV1BeaconBlobData) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) ProtoMessage() {} -func (x *ClientMeta_AdditionalEthV1BeaconBlobData) ProtoReflect() protoreflect.Message { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) ProtoReflect() protoreflect.Message { mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11635,118 +11828,123 @@ func (x *ClientMeta_AdditionalEthV1BeaconBlobData) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_AdditionalEthV1BeaconBlobData.ProtoReflect.Descriptor instead. -func (*ClientMeta_AdditionalEthV1BeaconBlobData) Descriptor() ([]byte, []int) { +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) Descriptor() ([]byte, []int) { return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 93} } -func (x *ClientMeta_AdditionalEthV1BeaconBlobData) GetEpoch() *EpochV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetEpoch() *EpochV2 { if x != nil { return x.Epoch } return nil } -func (x *ClientMeta_AdditionalEthV1BeaconBlobData) GetSlot() *SlotV2 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetSlot() *SlotV2 { if x != nil { return x.Slot } return nil } -type ClientMeta_Ethereum_Network struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name is the name of the network. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // ID is the network ID of the network. - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil } -func (x *ClientMeta_Ethereum_Network) Reset() { - *x = ClientMeta_Ethereum_Network{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot } + return nil } -func (x *ClientMeta_Ethereum_Network) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil } -func (*ClientMeta_Ethereum_Network) ProtoMessage() {} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetAggregatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.AggregatorIndex + } + return nil +} -func (x *ClientMeta_Ethereum_Network) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[122] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMetadata() *libp2p.TraceEventMetadata { + if x != nil { + return x.Metadata } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ClientMeta_Ethereum_Network.ProtoReflect.Descriptor instead. -func (*ClientMeta_Ethereum_Network) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 0} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic + } + return nil } -func (x *ClientMeta_Ethereum_Network) GetName() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMessageSize() *wrapperspb.UInt32Value { if x != nil { - return x.Name + return x.MessageSize } - return "" + return nil } -func (x *ClientMeta_Ethereum_Network) GetId() uint64 { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData) GetMessageId() *wrapperspb.StringValue { if x != nil { - return x.Id + return x.MessageId } - return 0 + return nil } -type ClientMeta_Ethereum_Execution struct { +type ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ForkID is the fork ID of the execution client. - ForkId *ForkID `protobuf:"bytes,1,opt,name=fork_id,proto3" json:"fork_id,omitempty"` - // Implementation is the name of the execution client (e.g., "Geth", "Besu", "Nethermind"). - Implementation string `protobuf:"bytes,2,opt,name=implementation,proto3" json:"implementation,omitempty"` - // Version is the full version string of the execution client. - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - // VersionMajor is the major version number. - VersionMajor string `protobuf:"bytes,4,opt,name=version_major,proto3" json:"version_major,omitempty"` - // VersionMinor is the minor version number. - VersionMinor string `protobuf:"bytes,5,opt,name=version_minor,proto3" json:"version_minor,omitempty"` - // VersionPatch is the patch version number. - VersionPatch string `protobuf:"bytes,6,opt,name=version_patch,proto3" json:"version_patch,omitempty"` + // Epoch contains the epoch information for the blob sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the blob sidecar. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockEpoch contains the epoch information for the blob sidecar in the wall clock time. + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the blob sidecar in the wall clock time. + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Propagation contains information about the propagation of the blob sidecar. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // Metadata contains additional trace event metadata. + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Topic is the gossip sub topic the blob sidecar was received on. + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + // MessageSize is the size of the blob sidecar message in bytes. + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + // MessageID is a unique identifier for the blob sidecar message. + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_Ethereum_Execution) Reset() { - *x = ClientMeta_Ethereum_Execution{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[123] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_Ethereum_Execution) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_Ethereum_Execution) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) ProtoMessage() {} -func (x *ClientMeta_Ethereum_Execution) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[123] +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11757,81 +11955,116 @@ func (x *ClientMeta_Ethereum_Execution) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_Ethereum_Execution.ProtoReflect.Descriptor instead. -func (*ClientMeta_Ethereum_Execution) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 1} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 94} } -func (x *ClientMeta_Ethereum_Execution) GetForkId() *ForkID { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetEpoch() *EpochV2 { if x != nil { - return x.ForkId + return x.Epoch } return nil } -func (x *ClientMeta_Ethereum_Execution) GetImplementation() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetSlot() *SlotV2 { if x != nil { - return x.Implementation + return x.Slot } - return "" + return nil } -func (x *ClientMeta_Ethereum_Execution) GetVersion() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetWallclockEpoch() *EpochV2 { if x != nil { - return x.Version + return x.WallclockEpoch } - return "" + return nil } -func (x *ClientMeta_Ethereum_Execution) GetVersionMajor() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetWallclockSlot() *SlotV2 { if x != nil { - return x.VersionMajor + return x.WallclockSlot } - return "" + return nil } -func (x *ClientMeta_Ethereum_Execution) GetVersionMinor() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetPropagation() *PropagationV2 { if x != nil { - return x.VersionMinor + return x.Propagation } - return "" + return nil } -func (x *ClientMeta_Ethereum_Execution) GetVersionPatch() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMetadata() *libp2p.TraceEventMetadata { if x != nil { - return x.VersionPatch + return x.Metadata } - return "" + return nil } -type ClientMeta_Ethereum_Consensus struct { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData) GetMessageId() *wrapperspb.StringValue { + if x != nil { + return x.MessageId + } + return nil +} + +type ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Implementation is the name of the consensus client. - Implementation string `protobuf:"bytes,1,opt,name=implementation,proto3" json:"implementation,omitempty"` - // Version is the version of the consensus client. - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // Epoch contains the epoch information for the data column sidecar. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the data column sidecar. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockEpoch contains the epoch information for the data column sidecar in the wall clock time. + WallclockEpoch *EpochV2 `protobuf:"bytes,3,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // WallclockSlot contains the slot information for the data column sidecar in the wall clock time. + WallclockSlot *SlotV2 `protobuf:"bytes,4,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Propagation contains information about the propagation of the data column sidecar. + Propagation *PropagationV2 `protobuf:"bytes,5,opt,name=propagation,proto3" json:"propagation,omitempty"` + // Metadata contains additional trace event metadata. + Metadata *libp2p.TraceEventMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Topic is the gossip sub topic the data column sidecar was received on. + Topic *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"` + // MessageSize is the size of the data column sidecar message in bytes. + MessageSize *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=message_size,proto3" json:"message_size,omitempty"` + // MessageID is a unique identifier for the data column sidecar message. + MessageId *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=message_id,proto3" json:"message_id,omitempty"` } -func (x *ClientMeta_Ethereum_Consensus) Reset() { - *x = ClientMeta_Ethereum_Consensus{} +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) Reset() { + *x = ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[124] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClientMeta_Ethereum_Consensus) String() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClientMeta_Ethereum_Consensus) ProtoMessage() {} +func (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) ProtoMessage() {} -func (x *ClientMeta_Ethereum_Consensus) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[124] +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11842,51 +12075,100 @@ func (x *ClientMeta_Ethereum_Consensus) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ClientMeta_Ethereum_Consensus.ProtoReflect.Descriptor instead. -func (*ClientMeta_Ethereum_Consensus) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 2} +// Deprecated: Use ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 95} } -func (x *ClientMeta_Ethereum_Consensus) GetImplementation() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetEpoch() *EpochV2 { if x != nil { - return x.Implementation + return x.Epoch } - return "" + return nil } -func (x *ClientMeta_Ethereum_Consensus) GetVersion() string { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetSlot() *SlotV2 { if x != nil { - return x.Version + return x.Slot } - return "" + return nil } -type ServerMeta_Event struct { +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetPropagation() *PropagationV2 { + if x != nil { + return x.Propagation + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMetadata() *libp2p.TraceEventMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetTopic() *wrapperspb.StringValue { + if x != nil { + return x.Topic + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMessageSize() *wrapperspb.UInt32Value { + if x != nil { + return x.MessageSize + } + return nil +} + +func (x *ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData) GetMessageId() *wrapperspb.StringValue { + if x != nil { + return x.MessageId + } + return nil +} + +// AdditionalEthV1ValidatorsData contains additional data about the eth v1 validators. +type ClientMeta_AdditionalEthV1ValidatorsData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // / DateTime is the date and time of the event as seen by the server. - ReceivedDateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=received_date_time,proto3" json:"received_date_time,omitempty"` + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` } -func (x *ServerMeta_Event) Reset() { - *x = ServerMeta_Event{} +func (x *ClientMeta_AdditionalEthV1ValidatorsData) Reset() { + *x = ClientMeta_AdditionalEthV1ValidatorsData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[125] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_Event) String() string { +func (x *ClientMeta_AdditionalEthV1ValidatorsData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_Event) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1ValidatorsData) ProtoMessage() {} -func (x *ServerMeta_Event) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[125] +func (x *ClientMeta_AdditionalEthV1ValidatorsData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11897,64 +12179,57 @@ func (x *ServerMeta_Event) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_Event.ProtoReflect.Descriptor instead. -func (*ServerMeta_Event) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 0} +// Deprecated: Use ClientMeta_AdditionalEthV1ValidatorsData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1ValidatorsData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 96} } -func (x *ServerMeta_Event) GetReceivedDateTime() *timestamppb.Timestamp { +func (x *ClientMeta_AdditionalEthV1ValidatorsData) GetEpoch() *EpochV2 { if x != nil { - return x.ReceivedDateTime + return x.Epoch } return nil } -type ServerMeta_Geo struct { +// AdditionalMevRelayBidTraceBuilderBlockSubmissionData contains additional data about the mev relay bid trace event. +type ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // City is the city of the client as far as the server is concerned. - City string `protobuf:"bytes,1,opt,name=City,json=city,proto3" json:"City,omitempty"` - // Country is the country of the client as far as the server is concerned. - Country string `protobuf:"bytes,2,opt,name=Country,json=country,proto3" json:"Country,omitempty"` - // CountryCode is the country code of the client as far as the server is - // concerned. - CountryCode string `protobuf:"bytes,3,opt,name=CountryCode,json=country_code,proto3" json:"CountryCode,omitempty"` - // ContinentCode is the continent code of the client as far as the server - // is concerned. - ContinentCode string `protobuf:"bytes,4,opt,name=ContinentCode,json=continent_code,proto3" json:"ContinentCode,omitempty"` - // Latitude is the latitude of the client as far as the server is - // concerned. - Latitude float64 `protobuf:"fixed64,5,opt,name=Latitude,json=latitude,proto3" json:"Latitude,omitempty"` - // Longitude is the longitude of the client as far as the server is - // concerned. - Longitude float64 `protobuf:"fixed64,6,opt,name=Longitude,json=longitude,proto3" json:"Longitude,omitempty"` - // AutonomousSystemNumber is the autonomous system number of the client as - // far as the server is concerned. - AutonomousSystemNumber uint32 `protobuf:"varint,7,opt,name=AutonomousSystemNumber,json=autonomous_system_number,proto3" json:"AutonomousSystemNumber,omitempty"` - // AutonomousSystemOrganization is the autonomous system organization of - // the client as far as the server is concerned. - AutonomousSystemOrganization string `protobuf:"bytes,8,opt,name=AutonomousSystemOrganization,json=autonomous_system_organization,proto3" json:"AutonomousSystemOrganization,omitempty"` + // Relay is the relay that the bid trace is from. + Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` + // Slot is the slot the bid trace is for. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockSlot contains the slot information of when the bid trace was requested. + WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Epoch is the epoch the bid trace is for. + Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // WallclockEpoch contains the epoch information of when the bid trace was requested. + WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // RequestedAtSlotTime is the time in the slot when the bid trace was requested. + RequestedAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=requested_at_slot_time,proto3" json:"requested_at_slot_time,omitempty"` + // ResponseAtSlotTime is the time in the slot when the bid trace was responded to. + ResponseAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=response_at_slot_time,proto3" json:"response_at_slot_time,omitempty"` } -func (x *ServerMeta_Geo) Reset() { - *x = ServerMeta_Geo{} +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) Reset() { + *x = ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[126] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_Geo) String() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_Geo) ProtoMessage() {} +func (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) ProtoMessage() {} -func (x *ServerMeta_Geo) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[126] +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11965,102 +12240,99 @@ func (x *ServerMeta_Geo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_Geo.ProtoReflect.Descriptor instead. -func (*ServerMeta_Geo) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 1} +// Deprecated: Use ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 97} } -func (x *ServerMeta_Geo) GetCity() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetRelay() *mevrelay.Relay { if x != nil { - return x.City + return x.Relay } - return "" + return nil } -func (x *ServerMeta_Geo) GetCountry() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetSlot() *SlotV2 { if x != nil { - return x.Country + return x.Slot } - return "" + return nil } -func (x *ServerMeta_Geo) GetCountryCode() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetWallclockSlot() *SlotV2 { if x != nil { - return x.CountryCode + return x.WallclockSlot } - return "" + return nil } -func (x *ServerMeta_Geo) GetContinentCode() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetEpoch() *EpochV2 { if x != nil { - return x.ContinentCode + return x.Epoch } - return "" -} - -func (x *ServerMeta_Geo) GetLatitude() float64 { - if x != nil { - return x.Latitude - } - return 0 + return nil } -func (x *ServerMeta_Geo) GetLongitude() float64 { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetWallclockEpoch() *EpochV2 { if x != nil { - return x.Longitude + return x.WallclockEpoch } - return 0 + return nil } -func (x *ServerMeta_Geo) GetAutonomousSystemNumber() uint32 { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetRequestedAtSlotTime() *wrapperspb.UInt64Value { if x != nil { - return x.AutonomousSystemNumber + return x.RequestedAtSlotTime } - return 0 + return nil } -func (x *ServerMeta_Geo) GetAutonomousSystemOrganization() string { +func (x *ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData) GetResponseAtSlotTime() *wrapperspb.UInt64Value { if x != nil { - return x.AutonomousSystemOrganization + return x.ResponseAtSlotTime } - return "" + return nil } -type ServerMeta_Client struct { +// AdditionalMevRelayPayloadDeliveredData contains additional data about the proposer payload delivered event. +type ClientMeta_AdditionalMevRelayPayloadDeliveredData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IP is the ip of the client as far as the server is concerned. - IP string `protobuf:"bytes,1,opt,name=IP,json=ip,proto3" json:"IP,omitempty"` - // Geo contains geo information about the client as far as the server is - // concerned. - Geo *ServerMeta_Geo `protobuf:"bytes,2,opt,name=geo,proto3" json:"geo,omitempty"` - // Group contains the group name of the client as far as the server is - // concerned. - Group string `protobuf:"bytes,3,opt,name=Group,json=group,proto3" json:"Group,omitempty"` - // User contains the user name of the client as far as the server is - // concerned. - User string `protobuf:"bytes,4,opt,name=User,json=user,proto3" json:"User,omitempty"` + // Relay is the relay that delivered the payload. + Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` + // Slot is the slot the payload was delivered for. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockSlot contains the slot information of when the payload was delivered. + WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Epoch is the epoch the payload was delivered for. + Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // WallclockEpoch contains the epoch information of when the payload was delivered. + WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // RequestedAtSlotTime is the time in the slot when the payload was requested. + RequestedAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=requested_at_slot_time,proto3" json:"requested_at_slot_time,omitempty"` + // ResponseAtSlotTime is the time in the slot when the payload was delivered. + ResponseAtSlotTime *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=response_at_slot_time,proto3" json:"response_at_slot_time,omitempty"` } -func (x *ServerMeta_Client) Reset() { - *x = ServerMeta_Client{} +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) Reset() { + *x = ClientMeta_AdditionalMevRelayPayloadDeliveredData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[127] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_Client) String() string { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_Client) ProtoMessage() {} +func (*ClientMeta_AdditionalMevRelayPayloadDeliveredData) ProtoMessage() {} -func (x *ServerMeta_Client) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[127] +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12071,112 +12343,111 @@ func (x *ServerMeta_Client) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_Client.ProtoReflect.Descriptor instead. -func (*ServerMeta_Client) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 2} +// Deprecated: Use ClientMeta_AdditionalMevRelayPayloadDeliveredData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalMevRelayPayloadDeliveredData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 98} } -func (x *ServerMeta_Client) GetIP() string { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetRelay() *mevrelay.Relay { if x != nil { - return x.IP + return x.Relay } - return "" + return nil } -func (x *ServerMeta_Client) GetGeo() *ServerMeta_Geo { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetSlot() *SlotV2 { if x != nil { - return x.Geo + return x.Slot } return nil } -func (x *ServerMeta_Client) GetGroup() string { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetWallclockSlot() *SlotV2 { if x != nil { - return x.Group + return x.WallclockSlot } - return "" + return nil } -func (x *ServerMeta_Client) GetUser() string { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetEpoch() *EpochV2 { if x != nil { - return x.User + return x.Epoch } - return "" -} - -type ServerMeta_Peer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Geo contains geo information about the peer - Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` + return nil } -func (x *ServerMeta_Peer) Reset() { - *x = ServerMeta_Peer{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[128] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch } + return nil } -func (x *ServerMeta_Peer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerMeta_Peer) ProtoMessage() {} - -func (x *ServerMeta_Peer) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[128] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetRequestedAtSlotTime() *wrapperspb.UInt64Value { + if x != nil { + return x.RequestedAtSlotTime } - return mi.MessageOf(x) -} - -// Deprecated: Use ServerMeta_Peer.ProtoReflect.Descriptor instead. -func (*ServerMeta_Peer) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 3} + return nil } -func (x *ServerMeta_Peer) GetGeo() *ServerMeta_Geo { +func (x *ClientMeta_AdditionalMevRelayPayloadDeliveredData) GetResponseAtSlotTime() *wrapperspb.UInt64Value { if x != nil { - return x.Geo + return x.ResponseAtSlotTime } return nil } -type ServerMeta_AdditionalBeaconP2PAttestationData struct { +// AdditionalEthV3ValidatorBlockData contains additional data about the eth v3 validator block event. +type ClientMeta_AdditionalEthV3ValidatorBlockData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` + // Epoch contains the epoch information for the block. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the block. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // Version contains information about the version of the block. + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // TransactionsCount contains the number of transactions in the block + TransactionsCount *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=transactions_count,proto3" json:"transactions_count,omitempty"` + // TransactionsTotalBytes contains the total bytes size of transactions + TransactionsTotalBytes *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=transactions_total_bytes,proto3" json:"transactions_total_bytes,omitempty"` + // CompressedTotalBytesCompressed contains the total bytes size of + // transactions with snappy compression + TransactionsTotalBytesCompressed *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=transactions_total_bytes_compressed,proto3" json:"transactions_total_bytes_compressed,omitempty"` + // TotalBytes contains the total bytes size of block + TotalBytes *wrapperspb.UInt64Value `protobuf:"bytes,7,opt,name=total_bytes,proto3" json:"total_bytes,omitempty"` + // TotalBytesCompressed contains the total bytes size of block with snappy + // compression + TotalBytesCompressed *wrapperspb.UInt64Value `protobuf:"bytes,8,opt,name=total_bytes_compressed,proto3" json:"total_bytes_compressed,omitempty"` + // ExecutionValue contains the total execution payload value, in Wei. + ExecutionValue string `protobuf:"bytes,9,opt,name=execution_value,proto3" json:"execution_value,omitempty"` + // ConsensusValue represents the rewards paid to the proposer for this block, in Wei. + ConsensusValue string `protobuf:"bytes,10,opt,name=consensus_value,proto3" json:"consensus_value,omitempty"` + // RequestDurationMs is the duration of the produce block request (in milliseconds). + RequestDurationMs *wrapperspb.UInt64Value `protobuf:"bytes,11,opt,name=request_duration_ms,proto3" json:"request_duration_ms,omitempty"` + // RequestedAt is the time the call was made to produce the block. + RequestedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=requested_at,proto3" json:"requested_at,omitempty"` } -func (x *ServerMeta_AdditionalBeaconP2PAttestationData) Reset() { - *x = ServerMeta_AdditionalBeaconP2PAttestationData{} +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) Reset() { + *x = ClientMeta_AdditionalEthV3ValidatorBlockData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[129] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalBeaconP2PAttestationData) String() string { +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalBeaconP2PAttestationData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV3ValidatorBlockData) ProtoMessage() {} -func (x *ServerMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[129] +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12187,90 +12458,132 @@ func (x *ServerMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalBeaconP2PAttestationData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalBeaconP2PAttestationData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 4} +// Deprecated: Use ClientMeta_AdditionalEthV3ValidatorBlockData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV3ValidatorBlockData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 99} } -func (x *ServerMeta_AdditionalBeaconP2PAttestationData) GetPeer() *ServerMeta_Peer { +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetEpoch() *EpochV2 { if x != nil { - return x.Peer + return x.Epoch } return nil } -type ServerMeta_AdditionalLibp2PTraceConnectedData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil } -func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) Reset() { - *x = ServerMeta_AdditionalLibp2PTraceConnectedData{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[130] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetVersion() string { + if x != nil { + return x.Version } + return "" } -func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsCount() *wrapperspb.UInt64Value { + if x != nil { + return x.TransactionsCount + } + return nil } -func (*ServerMeta_AdditionalLibp2PTraceConnectedData) ProtoMessage() {} +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsTotalBytes() *wrapperspb.UInt64Value { + if x != nil { + return x.TransactionsTotalBytes + } + return nil +} -func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[130] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTransactionsTotalBytesCompressed() *wrapperspb.UInt64Value { + if x != nil { + return x.TransactionsTotalBytesCompressed } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ServerMeta_AdditionalLibp2PTraceConnectedData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalLibp2PTraceConnectedData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 5} +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTotalBytes() *wrapperspb.UInt64Value { + if x != nil { + return x.TotalBytes + } + return nil } -func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) GetPeer() *ServerMeta_Peer { +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetTotalBytesCompressed() *wrapperspb.UInt64Value { if x != nil { - return x.Peer + return x.TotalBytesCompressed } return nil } -type ServerMeta_AdditionalLibp2PTraceDisconnectedData struct { +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetExecutionValue() string { + if x != nil { + return x.ExecutionValue + } + return "" +} + +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetConsensusValue() string { + if x != nil { + return x.ConsensusValue + } + return "" +} + +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetRequestDurationMs() *wrapperspb.UInt64Value { + if x != nil { + return x.RequestDurationMs + } + return nil +} + +func (x *ClientMeta_AdditionalEthV3ValidatorBlockData) GetRequestedAt() *timestamppb.Timestamp { + if x != nil { + return x.RequestedAt + } + return nil +} + +// AdditionalMevRelayValidatorRegistrationData contains additional data about the mev relay validator registration event. +type ClientMeta_AdditionalMevRelayValidatorRegistrationData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` + // Relay is the relay that received the validator registration. + Relay *mevrelay.Relay `protobuf:"bytes,1,opt,name=relay,proto3" json:"relay,omitempty"` + // Slot is the slot the validator registration was received for. This is derived from the validator registration `timestamp` field. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` + // WallclockSlot contains the slot information of when the validator registration was received from the relay. + WallclockSlot *SlotV2 `protobuf:"bytes,3,opt,name=wallclock_slot,proto3" json:"wallclock_slot,omitempty"` + // Epoch is the epoch the validator registration was received for. This is derived from the validator registration `timestamp` field. + Epoch *EpochV2 `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // WallclockEpoch contains the epoch information of when the validator registration was requested from the relay. + WallclockEpoch *EpochV2 `protobuf:"bytes,5,opt,name=wallclock_epoch,proto3" json:"wallclock_epoch,omitempty"` + // ValidatorIndex is the index of the validator that was registered. + ValidatorIndex *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=validator_index,proto3" json:"validator_index,omitempty"` } -func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) Reset() { - *x = ServerMeta_AdditionalLibp2PTraceDisconnectedData{} +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) Reset() { + *x = ClientMeta_AdditionalMevRelayValidatorRegistrationData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[131] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) String() string { +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalLibp2PTraceDisconnectedData) ProtoMessage() {} +func (*ClientMeta_AdditionalMevRelayValidatorRegistrationData) ProtoMessage() {} -func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[131] +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12281,43 +12594,84 @@ func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalLibp2PTraceDisconnectedData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalLibp2PTraceDisconnectedData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 6} +// Deprecated: Use ClientMeta_AdditionalMevRelayValidatorRegistrationData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalMevRelayValidatorRegistrationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 100} } -func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) GetPeer() *ServerMeta_Peer { +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetRelay() *mevrelay.Relay { if x != nil { - return x.Peer + return x.Relay } return nil } -type ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData struct { +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetWallclockSlot() *SlotV2 { + if x != nil { + return x.WallclockSlot + } + return nil +} + +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetEpoch() *EpochV2 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetWallclockEpoch() *EpochV2 { + if x != nil { + return x.WallclockEpoch + } + return nil +} + +func (x *ClientMeta_AdditionalMevRelayValidatorRegistrationData) GetValidatorIndex() *wrapperspb.UInt64Value { + if x != nil { + return x.ValidatorIndex + } + return nil +} + +// AdditionalNodeRecordConsensusData contains additional data about the node record consensus event. +type ClientMeta_AdditionalNodeRecordConsensusData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` + // FinalizedEpoch is the epoch the node record consensus was received for. + FinalizedEpoch *EpochV2 `protobuf:"bytes,2,opt,name=finalized_epoch,json=finalizedEpoch,proto3" json:"finalized_epoch,omitempty"` + // HeadSlot is the slot the node record consensus was received for. + HeadSlot *SlotV2 `protobuf:"bytes,3,opt,name=head_slot,json=headSlot,proto3" json:"head_slot,omitempty"` + // HeadEpoch is the epoch the node record consensus was received for. + HeadEpoch *EpochV2 `protobuf:"bytes,4,opt,name=head_epoch,json=headEpoch,proto3" json:"head_epoch,omitempty"` } -func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Reset() { - *x = ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData{} +func (x *ClientMeta_AdditionalNodeRecordConsensusData) Reset() { + *x = ClientMeta_AdditionalNodeRecordConsensusData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[132] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) String() string { +func (x *ClientMeta_AdditionalNodeRecordConsensusData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoMessage() {} +func (*ClientMeta_AdditionalNodeRecordConsensusData) ProtoMessage() {} -func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[132] +func (x *ClientMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12328,43 +12682,62 @@ func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 7} +// Deprecated: Use ClientMeta_AdditionalNodeRecordConsensusData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalNodeRecordConsensusData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 101} } -func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) GetPeer() *ServerMeta_Peer { +func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetFinalizedEpoch() *EpochV2 { if x != nil { - return x.Peer + return x.FinalizedEpoch } return nil } -type ServerMeta_AdditionalLibp2PTraceIdentifyData struct { +func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetHeadSlot() *SlotV2 { + if x != nil { + return x.HeadSlot + } + return nil +} + +func (x *ClientMeta_AdditionalNodeRecordConsensusData) GetHeadEpoch() *EpochV2 { + if x != nil { + return x.HeadEpoch + } + return nil +} + +// AdditionalConsensusEngineAPINewPayloadData contains additional metadata about the +// engine_newPayload call event. +type ClientMeta_AdditionalConsensusEngineAPINewPayloadData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` + // Epoch contains the epoch information for the slot. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` } -func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) Reset() { - *x = ServerMeta_AdditionalLibp2PTraceIdentifyData{} +func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) Reset() { + *x = ClientMeta_AdditionalConsensusEngineAPINewPayloadData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[133] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) String() string { +func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalLibp2PTraceIdentifyData) ProtoMessage() {} +func (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData) ProtoMessage() {} -func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[133] +func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12375,43 +12748,55 @@ func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalLibp2PTraceIdentifyData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalLibp2PTraceIdentifyData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 8} +// Deprecated: Use ClientMeta_AdditionalConsensusEngineAPINewPayloadData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 102} } -func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) GetPeer() *ServerMeta_Peer { +func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) GetEpoch() *EpochV2 { if x != nil { - return x.Peer + return x.Epoch } return nil } -type ServerMeta_AdditionalNodeRecordConsensusData struct { +func (x *ClientMeta_AdditionalConsensusEngineAPINewPayloadData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +// AdditionalConsensusEngineAPIGetBlobsData contains additional metadata about the +// engine_getBlobs call event. +type ClientMeta_AdditionalConsensusEngineAPIGetBlobsData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` + // Epoch contains the epoch information for the slot. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` } -func (x *ServerMeta_AdditionalNodeRecordConsensusData) Reset() { - *x = ServerMeta_AdditionalNodeRecordConsensusData{} +func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) Reset() { + *x = ClientMeta_AdditionalConsensusEngineAPIGetBlobsData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[134] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalNodeRecordConsensusData) String() string { +func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalNodeRecordConsensusData) ProtoMessage() {} +func (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) ProtoMessage() {} -func (x *ServerMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[134] +func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12422,43 +12807,55 @@ func (x *ServerMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalNodeRecordConsensusData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalNodeRecordConsensusData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 9} +// Deprecated: Use ClientMeta_AdditionalConsensusEngineAPIGetBlobsData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 103} } -func (x *ServerMeta_AdditionalNodeRecordConsensusData) GetGeo() *ServerMeta_Geo { +func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) GetEpoch() *EpochV2 { if x != nil { - return x.Geo + return x.Epoch } return nil } -type ServerMeta_AdditionalNodeRecordExecutionData struct { +func (x *ClientMeta_AdditionalConsensusEngineAPIGetBlobsData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +// AdditionalEthV1BeaconBlobData contains additional metadata about the +// beacon blob event derived from block's blob_kzg_commitments. +type ClientMeta_AdditionalEthV1BeaconBlobData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` + // Epoch contains the epoch information for the blob. + Epoch *EpochV2 `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Slot contains the slot information for the blob. + Slot *SlotV2 `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` } -func (x *ServerMeta_AdditionalNodeRecordExecutionData) Reset() { - *x = ServerMeta_AdditionalNodeRecordExecutionData{} +func (x *ClientMeta_AdditionalEthV1BeaconBlobData) Reset() { + *x = ClientMeta_AdditionalEthV1BeaconBlobData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[135] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ServerMeta_AdditionalNodeRecordExecutionData) String() string { +func (x *ClientMeta_AdditionalEthV1BeaconBlobData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ServerMeta_AdditionalNodeRecordExecutionData) ProtoMessage() {} +func (*ClientMeta_AdditionalEthV1BeaconBlobData) ProtoMessage() {} -func (x *ServerMeta_AdditionalNodeRecordExecutionData) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[135] +func (x *ClientMeta_AdditionalEthV1BeaconBlobData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12469,51 +12866,53 @@ func (x *ServerMeta_AdditionalNodeRecordExecutionData) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ServerMeta_AdditionalNodeRecordExecutionData.ProtoReflect.Descriptor instead. -func (*ServerMeta_AdditionalNodeRecordExecutionData) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 10} +// Deprecated: Use ClientMeta_AdditionalEthV1BeaconBlobData.ProtoReflect.Descriptor instead. +func (*ClientMeta_AdditionalEthV1BeaconBlobData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 104} } -func (x *ServerMeta_AdditionalNodeRecordExecutionData) GetGeo() *ServerMeta_Geo { +func (x *ClientMeta_AdditionalEthV1BeaconBlobData) GetEpoch() *EpochV2 { if x != nil { - return x.Geo + return x.Epoch } return nil } -// StateReads contains state read statistics. -type ExecutionBlockMetrics_StateReads struct { +func (x *ClientMeta_AdditionalEthV1BeaconBlobData) GetSlot() *SlotV2 { + if x != nil { + return x.Slot + } + return nil +} + +type ClientMeta_Ethereum_Network struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Accounts is the number of account reads. - Accounts *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=accounts,proto3" json:"accounts,omitempty"` - // StorageSlots is the number of storage slot reads. - StorageSlots *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=storage_slots,proto3" json:"storage_slots,omitempty"` - // Code is the number of code reads. - Code *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` - // CodeBytes is the total bytes of code read. - CodeBytes *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=code_bytes,proto3" json:"code_bytes,omitempty"` + // Name is the name of the network. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // ID is the network ID of the network. + Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` } -func (x *ExecutionBlockMetrics_StateReads) Reset() { - *x = ExecutionBlockMetrics_StateReads{} +func (x *ClientMeta_Ethereum_Network) Reset() { + *x = ClientMeta_Ethereum_Network{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[136] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExecutionBlockMetrics_StateReads) String() string { +func (x *ClientMeta_Ethereum_Network) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecutionBlockMetrics_StateReads) ProtoMessage() {} +func (*ClientMeta_Ethereum_Network) ProtoMessage() {} -func (x *ExecutionBlockMetrics_StateReads) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[136] +func (x *ClientMeta_Ethereum_Network) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12524,76 +12923,61 @@ func (x *ExecutionBlockMetrics_StateReads) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExecutionBlockMetrics_StateReads.ProtoReflect.Descriptor instead. -func (*ExecutionBlockMetrics_StateReads) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 0} -} - -func (x *ExecutionBlockMetrics_StateReads) GetAccounts() *wrapperspb.UInt64Value { - if x != nil { - return x.Accounts - } - return nil -} - -func (x *ExecutionBlockMetrics_StateReads) GetStorageSlots() *wrapperspb.UInt64Value { - if x != nil { - return x.StorageSlots - } - return nil +// Deprecated: Use ClientMeta_Ethereum_Network.ProtoReflect.Descriptor instead. +func (*ClientMeta_Ethereum_Network) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 0} } -func (x *ExecutionBlockMetrics_StateReads) GetCode() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Network) GetName() string { if x != nil { - return x.Code + return x.Name } - return nil + return "" } -func (x *ExecutionBlockMetrics_StateReads) GetCodeBytes() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Network) GetId() uint64 { if x != nil { - return x.CodeBytes + return x.Id } - return nil + return 0 } -// StateWrites contains state write statistics. -type ExecutionBlockMetrics_StateWrites struct { +type ClientMeta_Ethereum_Execution struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Accounts is the number of account writes. - Accounts *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=accounts,proto3" json:"accounts,omitempty"` - // AccountsDeleted is the number of accounts deleted. - AccountsDeleted *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=accounts_deleted,proto3" json:"accounts_deleted,omitempty"` - // StorageSlots is the number of storage slot writes. - StorageSlots *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=storage_slots,proto3" json:"storage_slots,omitempty"` - // StorageSlotsDeleted is the number of storage slots deleted. - StorageSlotsDeleted *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=storage_slots_deleted,proto3" json:"storage_slots_deleted,omitempty"` - // Code is the number of code writes. - Code *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"` - // CodeBytes is the total bytes of code written. - CodeBytes *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=code_bytes,proto3" json:"code_bytes,omitempty"` + // ForkID is the fork ID of the execution client. + ForkId *ForkID `protobuf:"bytes,1,opt,name=fork_id,proto3" json:"fork_id,omitempty"` + // Implementation is the name of the execution client (e.g., "Geth", "Besu", "Nethermind"). + Implementation string `protobuf:"bytes,2,opt,name=implementation,proto3" json:"implementation,omitempty"` + // Version is the full version string of the execution client. + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // VersionMajor is the major version number. + VersionMajor string `protobuf:"bytes,4,opt,name=version_major,proto3" json:"version_major,omitempty"` + // VersionMinor is the minor version number. + VersionMinor string `protobuf:"bytes,5,opt,name=version_minor,proto3" json:"version_minor,omitempty"` + // VersionPatch is the patch version number. + VersionPatch string `protobuf:"bytes,6,opt,name=version_patch,proto3" json:"version_patch,omitempty"` } -func (x *ExecutionBlockMetrics_StateWrites) Reset() { - *x = ExecutionBlockMetrics_StateWrites{} +func (x *ClientMeta_Ethereum_Execution) Reset() { + *x = ClientMeta_Ethereum_Execution{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[137] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExecutionBlockMetrics_StateWrites) String() string { +func (x *ClientMeta_Ethereum_Execution) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecutionBlockMetrics_StateWrites) ProtoMessage() {} +func (*ClientMeta_Ethereum_Execution) ProtoMessage() {} -func (x *ExecutionBlockMetrics_StateWrites) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[137] +func (x *ClientMeta_Ethereum_Execution) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12604,84 +12988,81 @@ func (x *ExecutionBlockMetrics_StateWrites) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ExecutionBlockMetrics_StateWrites.ProtoReflect.Descriptor instead. -func (*ExecutionBlockMetrics_StateWrites) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 1} +// Deprecated: Use ClientMeta_Ethereum_Execution.ProtoReflect.Descriptor instead. +func (*ClientMeta_Ethereum_Execution) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 1} } -func (x *ExecutionBlockMetrics_StateWrites) GetAccounts() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetForkId() *ForkID { if x != nil { - return x.Accounts + return x.ForkId } return nil } -func (x *ExecutionBlockMetrics_StateWrites) GetAccountsDeleted() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetImplementation() string { if x != nil { - return x.AccountsDeleted + return x.Implementation } - return nil + return "" } -func (x *ExecutionBlockMetrics_StateWrites) GetStorageSlots() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetVersion() string { if x != nil { - return x.StorageSlots + return x.Version } - return nil + return "" } -func (x *ExecutionBlockMetrics_StateWrites) GetStorageSlotsDeleted() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetVersionMajor() string { if x != nil { - return x.StorageSlotsDeleted + return x.VersionMajor } - return nil + return "" } -func (x *ExecutionBlockMetrics_StateWrites) GetCode() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetVersionMinor() string { if x != nil { - return x.Code + return x.VersionMinor } - return nil + return "" } -func (x *ExecutionBlockMetrics_StateWrites) GetCodeBytes() *wrapperspb.UInt64Value { +func (x *ClientMeta_Ethereum_Execution) GetVersionPatch() string { if x != nil { - return x.CodeBytes + return x.VersionPatch } - return nil + return "" } -// CacheEntry contains cache hit/miss statistics. -type ExecutionBlockMetrics_CacheEntry struct { +type ClientMeta_Ethereum_Consensus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Hits is the number of cache hits. - Hits *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=hits,proto3" json:"hits,omitempty"` - // Misses is the number of cache misses. - Misses *wrapperspb.Int64Value `protobuf:"bytes,2,opt,name=misses,proto3" json:"misses,omitempty"` - // HitRate is the cache hit rate as a percentage. - HitRate *wrapperspb.DoubleValue `protobuf:"bytes,3,opt,name=hit_rate,proto3" json:"hit_rate,omitempty"` + // Implementation is the name of the consensus client. + Implementation string `protobuf:"bytes,1,opt,name=implementation,proto3" json:"implementation,omitempty"` + // Version is the version of the consensus client. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` } -func (x *ExecutionBlockMetrics_CacheEntry) Reset() { - *x = ExecutionBlockMetrics_CacheEntry{} +func (x *ClientMeta_Ethereum_Consensus) Reset() { + *x = ClientMeta_Ethereum_Consensus{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[138] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExecutionBlockMetrics_CacheEntry) String() string { +func (x *ClientMeta_Ethereum_Consensus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecutionBlockMetrics_CacheEntry) ProtoMessage() {} +func (*ClientMeta_Ethereum_Consensus) ProtoMessage() {} -func (x *ExecutionBlockMetrics_CacheEntry) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[138] +func (x *ClientMeta_Ethereum_Consensus) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12692,67 +13073,51 @@ func (x *ExecutionBlockMetrics_CacheEntry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExecutionBlockMetrics_CacheEntry.ProtoReflect.Descriptor instead. -func (*ExecutionBlockMetrics_CacheEntry) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 2} -} - -func (x *ExecutionBlockMetrics_CacheEntry) GetHits() *wrapperspb.Int64Value { - if x != nil { - return x.Hits - } - return nil +// Deprecated: Use ClientMeta_Ethereum_Consensus.ProtoReflect.Descriptor instead. +func (*ClientMeta_Ethereum_Consensus) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{22, 0, 2} } -func (x *ExecutionBlockMetrics_CacheEntry) GetMisses() *wrapperspb.Int64Value { +func (x *ClientMeta_Ethereum_Consensus) GetImplementation() string { if x != nil { - return x.Misses + return x.Implementation } - return nil + return "" } -func (x *ExecutionBlockMetrics_CacheEntry) GetHitRate() *wrapperspb.DoubleValue { +func (x *ClientMeta_Ethereum_Consensus) GetVersion() string { if x != nil { - return x.HitRate + return x.Version } - return nil + return "" } -// CodeCacheEntry extends CacheEntry with byte-level statistics. -type ExecutionBlockMetrics_CodeCacheEntry struct { +type ServerMeta_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Hits is the number of cache hits. - Hits *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=hits,proto3" json:"hits,omitempty"` - // Misses is the number of cache misses. - Misses *wrapperspb.Int64Value `protobuf:"bytes,2,opt,name=misses,proto3" json:"misses,omitempty"` - // HitRate is the cache hit rate as a percentage. - HitRate *wrapperspb.DoubleValue `protobuf:"bytes,3,opt,name=hit_rate,proto3" json:"hit_rate,omitempty"` - // HitBytes is the total bytes of cache hits. - HitBytes *wrapperspb.Int64Value `protobuf:"bytes,4,opt,name=hit_bytes,proto3" json:"hit_bytes,omitempty"` - // MissBytes is the total bytes of cache misses. - MissBytes *wrapperspb.Int64Value `protobuf:"bytes,5,opt,name=miss_bytes,proto3" json:"miss_bytes,omitempty"` + // / DateTime is the date and time of the event as seen by the server. + ReceivedDateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=received_date_time,proto3" json:"received_date_time,omitempty"` } -func (x *ExecutionBlockMetrics_CodeCacheEntry) Reset() { - *x = ExecutionBlockMetrics_CodeCacheEntry{} +func (x *ServerMeta_Event) Reset() { + *x = ServerMeta_Event{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[139] + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExecutionBlockMetrics_CodeCacheEntry) String() string { +func (x *ServerMeta_Event) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecutionBlockMetrics_CodeCacheEntry) ProtoMessage() {} +func (*ServerMeta_Event) ProtoMessage() {} -func (x *ExecutionBlockMetrics_CodeCacheEntry) ProtoReflect() protoreflect.Message { - mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[139] +func (x *ServerMeta_Event) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12763,29 +13128,895 @@ func (x *ExecutionBlockMetrics_CodeCacheEntry) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ExecutionBlockMetrics_CodeCacheEntry.ProtoReflect.Descriptor instead. -func (*ExecutionBlockMetrics_CodeCacheEntry) Descriptor() ([]byte, []int) { - return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 3} +// Deprecated: Use ServerMeta_Event.ProtoReflect.Descriptor instead. +func (*ServerMeta_Event) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 0} } -func (x *ExecutionBlockMetrics_CodeCacheEntry) GetHits() *wrapperspb.Int64Value { +func (x *ServerMeta_Event) GetReceivedDateTime() *timestamppb.Timestamp { if x != nil { - return x.Hits + return x.ReceivedDateTime } return nil } -func (x *ExecutionBlockMetrics_CodeCacheEntry) GetMisses() *wrapperspb.Int64Value { - if x != nil { - return x.Misses - } - return nil -} +type ServerMeta_Geo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ExecutionBlockMetrics_CodeCacheEntry) GetHitRate() *wrapperspb.DoubleValue { - if x != nil { - return x.HitRate - } + // City is the city of the client as far as the server is concerned. + City string `protobuf:"bytes,1,opt,name=City,json=city,proto3" json:"City,omitempty"` + // Country is the country of the client as far as the server is concerned. + Country string `protobuf:"bytes,2,opt,name=Country,json=country,proto3" json:"Country,omitempty"` + // CountryCode is the country code of the client as far as the server is + // concerned. + CountryCode string `protobuf:"bytes,3,opt,name=CountryCode,json=country_code,proto3" json:"CountryCode,omitempty"` + // ContinentCode is the continent code of the client as far as the server + // is concerned. + ContinentCode string `protobuf:"bytes,4,opt,name=ContinentCode,json=continent_code,proto3" json:"ContinentCode,omitempty"` + // Latitude is the latitude of the client as far as the server is + // concerned. + Latitude float64 `protobuf:"fixed64,5,opt,name=Latitude,json=latitude,proto3" json:"Latitude,omitempty"` + // Longitude is the longitude of the client as far as the server is + // concerned. + Longitude float64 `protobuf:"fixed64,6,opt,name=Longitude,json=longitude,proto3" json:"Longitude,omitempty"` + // AutonomousSystemNumber is the autonomous system number of the client as + // far as the server is concerned. + AutonomousSystemNumber uint32 `protobuf:"varint,7,opt,name=AutonomousSystemNumber,json=autonomous_system_number,proto3" json:"AutonomousSystemNumber,omitempty"` + // AutonomousSystemOrganization is the autonomous system organization of + // the client as far as the server is concerned. + AutonomousSystemOrganization string `protobuf:"bytes,8,opt,name=AutonomousSystemOrganization,json=autonomous_system_organization,proto3" json:"AutonomousSystemOrganization,omitempty"` +} + +func (x *ServerMeta_Geo) Reset() { + *x = ServerMeta_Geo{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_Geo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_Geo) ProtoMessage() {} + +func (x *ServerMeta_Geo) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_Geo.ProtoReflect.Descriptor instead. +func (*ServerMeta_Geo) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 1} +} + +func (x *ServerMeta_Geo) GetCity() string { + if x != nil { + return x.City + } + return "" +} + +func (x *ServerMeta_Geo) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +func (x *ServerMeta_Geo) GetCountryCode() string { + if x != nil { + return x.CountryCode + } + return "" +} + +func (x *ServerMeta_Geo) GetContinentCode() string { + if x != nil { + return x.ContinentCode + } + return "" +} + +func (x *ServerMeta_Geo) GetLatitude() float64 { + if x != nil { + return x.Latitude + } + return 0 +} + +func (x *ServerMeta_Geo) GetLongitude() float64 { + if x != nil { + return x.Longitude + } + return 0 +} + +func (x *ServerMeta_Geo) GetAutonomousSystemNumber() uint32 { + if x != nil { + return x.AutonomousSystemNumber + } + return 0 +} + +func (x *ServerMeta_Geo) GetAutonomousSystemOrganization() string { + if x != nil { + return x.AutonomousSystemOrganization + } + return "" +} + +type ServerMeta_Client struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // IP is the ip of the client as far as the server is concerned. + IP string `protobuf:"bytes,1,opt,name=IP,json=ip,proto3" json:"IP,omitempty"` + // Geo contains geo information about the client as far as the server is + // concerned. + Geo *ServerMeta_Geo `protobuf:"bytes,2,opt,name=geo,proto3" json:"geo,omitempty"` + // Group contains the group name of the client as far as the server is + // concerned. + Group string `protobuf:"bytes,3,opt,name=Group,json=group,proto3" json:"Group,omitempty"` + // User contains the user name of the client as far as the server is + // concerned. + User string `protobuf:"bytes,4,opt,name=User,json=user,proto3" json:"User,omitempty"` +} + +func (x *ServerMeta_Client) Reset() { + *x = ServerMeta_Client{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_Client) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_Client) ProtoMessage() {} + +func (x *ServerMeta_Client) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[138] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_Client.ProtoReflect.Descriptor instead. +func (*ServerMeta_Client) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 2} +} + +func (x *ServerMeta_Client) GetIP() string { + if x != nil { + return x.IP + } + return "" +} + +func (x *ServerMeta_Client) GetGeo() *ServerMeta_Geo { + if x != nil { + return x.Geo + } + return nil +} + +func (x *ServerMeta_Client) GetGroup() string { + if x != nil { + return x.Group + } + return "" +} + +func (x *ServerMeta_Client) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +type ServerMeta_Peer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Geo contains geo information about the peer + Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` +} + +func (x *ServerMeta_Peer) Reset() { + *x = ServerMeta_Peer{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_Peer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_Peer) ProtoMessage() {} + +func (x *ServerMeta_Peer) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_Peer.ProtoReflect.Descriptor instead. +func (*ServerMeta_Peer) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 3} +} + +func (x *ServerMeta_Peer) GetGeo() *ServerMeta_Geo { + if x != nil { + return x.Geo + } + return nil +} + +type ServerMeta_AdditionalBeaconP2PAttestationData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *ServerMeta_AdditionalBeaconP2PAttestationData) Reset() { + *x = ServerMeta_AdditionalBeaconP2PAttestationData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalBeaconP2PAttestationData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalBeaconP2PAttestationData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalBeaconP2PAttestationData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[140] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalBeaconP2PAttestationData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalBeaconP2PAttestationData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 4} +} + +func (x *ServerMeta_AdditionalBeaconP2PAttestationData) GetPeer() *ServerMeta_Peer { + if x != nil { + return x.Peer + } + return nil +} + +type ServerMeta_AdditionalLibp2PTraceConnectedData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) Reset() { + *x = ServerMeta_AdditionalLibp2PTraceConnectedData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalLibp2PTraceConnectedData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalLibp2PTraceConnectedData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalLibp2PTraceConnectedData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 5} +} + +func (x *ServerMeta_AdditionalLibp2PTraceConnectedData) GetPeer() *ServerMeta_Peer { + if x != nil { + return x.Peer + } + return nil +} + +type ServerMeta_AdditionalLibp2PTraceDisconnectedData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) Reset() { + *x = ServerMeta_AdditionalLibp2PTraceDisconnectedData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalLibp2PTraceDisconnectedData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[142] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalLibp2PTraceDisconnectedData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalLibp2PTraceDisconnectedData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 6} +} + +func (x *ServerMeta_AdditionalLibp2PTraceDisconnectedData) GetPeer() *ServerMeta_Peer { + if x != nil { + return x.Peer + } + return nil +} + +type ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Reset() { + *x = ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[143] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 7} +} + +func (x *ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData) GetPeer() *ServerMeta_Peer { + if x != nil { + return x.Peer + } + return nil +} + +type ServerMeta_AdditionalLibp2PTraceIdentifyData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peer *ServerMeta_Peer `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"` +} + +func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) Reset() { + *x = ServerMeta_AdditionalLibp2PTraceIdentifyData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalLibp2PTraceIdentifyData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalLibp2PTraceIdentifyData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalLibp2PTraceIdentifyData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 8} +} + +func (x *ServerMeta_AdditionalLibp2PTraceIdentifyData) GetPeer() *ServerMeta_Peer { + if x != nil { + return x.Peer + } + return nil +} + +type ServerMeta_AdditionalNodeRecordConsensusData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` +} + +func (x *ServerMeta_AdditionalNodeRecordConsensusData) Reset() { + *x = ServerMeta_AdditionalNodeRecordConsensusData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalNodeRecordConsensusData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalNodeRecordConsensusData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalNodeRecordConsensusData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[145] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalNodeRecordConsensusData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalNodeRecordConsensusData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 9} +} + +func (x *ServerMeta_AdditionalNodeRecordConsensusData) GetGeo() *ServerMeta_Geo { + if x != nil { + return x.Geo + } + return nil +} + +type ServerMeta_AdditionalNodeRecordExecutionData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Geo *ServerMeta_Geo `protobuf:"bytes,1,opt,name=geo,proto3" json:"geo,omitempty"` +} + +func (x *ServerMeta_AdditionalNodeRecordExecutionData) Reset() { + *x = ServerMeta_AdditionalNodeRecordExecutionData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ServerMeta_AdditionalNodeRecordExecutionData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerMeta_AdditionalNodeRecordExecutionData) ProtoMessage() {} + +func (x *ServerMeta_AdditionalNodeRecordExecutionData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[146] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerMeta_AdditionalNodeRecordExecutionData.ProtoReflect.Descriptor instead. +func (*ServerMeta_AdditionalNodeRecordExecutionData) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{23, 10} +} + +func (x *ServerMeta_AdditionalNodeRecordExecutionData) GetGeo() *ServerMeta_Geo { + if x != nil { + return x.Geo + } + return nil +} + +// StateReads contains state read statistics. +type ExecutionBlockMetrics_StateReads struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Accounts is the number of account reads. + Accounts *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=accounts,proto3" json:"accounts,omitempty"` + // StorageSlots is the number of storage slot reads. + StorageSlots *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=storage_slots,proto3" json:"storage_slots,omitempty"` + // Code is the number of code reads. + Code *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` + // CodeBytes is the total bytes of code read. + CodeBytes *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=code_bytes,proto3" json:"code_bytes,omitempty"` +} + +func (x *ExecutionBlockMetrics_StateReads) Reset() { + *x = ExecutionBlockMetrics_StateReads{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionBlockMetrics_StateReads) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionBlockMetrics_StateReads) ProtoMessage() {} + +func (x *ExecutionBlockMetrics_StateReads) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[147] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionBlockMetrics_StateReads.ProtoReflect.Descriptor instead. +func (*ExecutionBlockMetrics_StateReads) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 0} +} + +func (x *ExecutionBlockMetrics_StateReads) GetAccounts() *wrapperspb.UInt64Value { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *ExecutionBlockMetrics_StateReads) GetStorageSlots() *wrapperspb.UInt64Value { + if x != nil { + return x.StorageSlots + } + return nil +} + +func (x *ExecutionBlockMetrics_StateReads) GetCode() *wrapperspb.UInt64Value { + if x != nil { + return x.Code + } + return nil +} + +func (x *ExecutionBlockMetrics_StateReads) GetCodeBytes() *wrapperspb.UInt64Value { + if x != nil { + return x.CodeBytes + } + return nil +} + +// StateWrites contains state write statistics. +type ExecutionBlockMetrics_StateWrites struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Accounts is the number of account writes. + Accounts *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=accounts,proto3" json:"accounts,omitempty"` + // AccountsDeleted is the number of accounts deleted. + AccountsDeleted *wrapperspb.UInt64Value `protobuf:"bytes,2,opt,name=accounts_deleted,proto3" json:"accounts_deleted,omitempty"` + // StorageSlots is the number of storage slot writes. + StorageSlots *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=storage_slots,proto3" json:"storage_slots,omitempty"` + // StorageSlotsDeleted is the number of storage slots deleted. + StorageSlotsDeleted *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=storage_slots_deleted,proto3" json:"storage_slots_deleted,omitempty"` + // Code is the number of code writes. + Code *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"` + // CodeBytes is the total bytes of code written. + CodeBytes *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=code_bytes,proto3" json:"code_bytes,omitempty"` +} + +func (x *ExecutionBlockMetrics_StateWrites) Reset() { + *x = ExecutionBlockMetrics_StateWrites{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionBlockMetrics_StateWrites) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionBlockMetrics_StateWrites) ProtoMessage() {} + +func (x *ExecutionBlockMetrics_StateWrites) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[148] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionBlockMetrics_StateWrites.ProtoReflect.Descriptor instead. +func (*ExecutionBlockMetrics_StateWrites) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 1} +} + +func (x *ExecutionBlockMetrics_StateWrites) GetAccounts() *wrapperspb.UInt64Value { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *ExecutionBlockMetrics_StateWrites) GetAccountsDeleted() *wrapperspb.UInt64Value { + if x != nil { + return x.AccountsDeleted + } + return nil +} + +func (x *ExecutionBlockMetrics_StateWrites) GetStorageSlots() *wrapperspb.UInt64Value { + if x != nil { + return x.StorageSlots + } + return nil +} + +func (x *ExecutionBlockMetrics_StateWrites) GetStorageSlotsDeleted() *wrapperspb.UInt64Value { + if x != nil { + return x.StorageSlotsDeleted + } + return nil +} + +func (x *ExecutionBlockMetrics_StateWrites) GetCode() *wrapperspb.UInt64Value { + if x != nil { + return x.Code + } + return nil +} + +func (x *ExecutionBlockMetrics_StateWrites) GetCodeBytes() *wrapperspb.UInt64Value { + if x != nil { + return x.CodeBytes + } + return nil +} + +// CacheEntry contains cache hit/miss statistics. +type ExecutionBlockMetrics_CacheEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Hits is the number of cache hits. + Hits *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=hits,proto3" json:"hits,omitempty"` + // Misses is the number of cache misses. + Misses *wrapperspb.Int64Value `protobuf:"bytes,2,opt,name=misses,proto3" json:"misses,omitempty"` + // HitRate is the cache hit rate as a percentage. + HitRate *wrapperspb.DoubleValue `protobuf:"bytes,3,opt,name=hit_rate,proto3" json:"hit_rate,omitempty"` +} + +func (x *ExecutionBlockMetrics_CacheEntry) Reset() { + *x = ExecutionBlockMetrics_CacheEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionBlockMetrics_CacheEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionBlockMetrics_CacheEntry) ProtoMessage() {} + +func (x *ExecutionBlockMetrics_CacheEntry) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[149] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionBlockMetrics_CacheEntry.ProtoReflect.Descriptor instead. +func (*ExecutionBlockMetrics_CacheEntry) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 2} +} + +func (x *ExecutionBlockMetrics_CacheEntry) GetHits() *wrapperspb.Int64Value { + if x != nil { + return x.Hits + } + return nil +} + +func (x *ExecutionBlockMetrics_CacheEntry) GetMisses() *wrapperspb.Int64Value { + if x != nil { + return x.Misses + } + return nil +} + +func (x *ExecutionBlockMetrics_CacheEntry) GetHitRate() *wrapperspb.DoubleValue { + if x != nil { + return x.HitRate + } + return nil +} + +// CodeCacheEntry extends CacheEntry with byte-level statistics. +type ExecutionBlockMetrics_CodeCacheEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Hits is the number of cache hits. + Hits *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=hits,proto3" json:"hits,omitempty"` + // Misses is the number of cache misses. + Misses *wrapperspb.Int64Value `protobuf:"bytes,2,opt,name=misses,proto3" json:"misses,omitempty"` + // HitRate is the cache hit rate as a percentage. + HitRate *wrapperspb.DoubleValue `protobuf:"bytes,3,opt,name=hit_rate,proto3" json:"hit_rate,omitempty"` + // HitBytes is the total bytes of cache hits. + HitBytes *wrapperspb.Int64Value `protobuf:"bytes,4,opt,name=hit_bytes,proto3" json:"hit_bytes,omitempty"` + // MissBytes is the total bytes of cache misses. + MissBytes *wrapperspb.Int64Value `protobuf:"bytes,5,opt,name=miss_bytes,proto3" json:"miss_bytes,omitempty"` +} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) Reset() { + *x = ExecutionBlockMetrics_CodeCacheEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionBlockMetrics_CodeCacheEntry) ProtoMessage() {} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_xatu_event_ingester_proto_msgTypes[150] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionBlockMetrics_CodeCacheEntry.ProtoReflect.Descriptor instead. +func (*ExecutionBlockMetrics_CodeCacheEntry) Descriptor() ([]byte, []int) { + return file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP(), []int{26, 3} +} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) GetHits() *wrapperspb.Int64Value { + if x != nil { + return x.Hits + } + return nil +} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) GetMisses() *wrapperspb.Int64Value { + if x != nil { + return x.Misses + } + return nil +} + +func (x *ExecutionBlockMetrics_CodeCacheEntry) GetHitRate() *wrapperspb.DoubleValue { + if x != nil { + return x.HitRate + } return nil } @@ -12838,328 +14069,297 @@ var file_pkg_proto_xatu_event_ingester_proto_rawDesc = []byte{ 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x70, 0x6b, 0x67, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2f, - 0x62, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2f, 0x72, - 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x70, - 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x6d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x65, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, + 0x69, 0x74, 0x74, 0x65, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2c, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x31, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, 0x68, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2b, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x74, + 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1d, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, + 0x6c, 0x61, 0x79, 0x2f, 0x62, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1b, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, 0x61, 0x74, + 0x75, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2f, 0x70, 0x65, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x67, 0x6f, 0x73, 0x73, + 0x69, 0x70, 0x73, 0x75, 0x62, 0x2f, 0x65, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, - 0x62, 0x2f, 0x65, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6b, 0x67, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x24, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, - 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x5e, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x69, - 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x65, 0x0a, 0x05, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, - 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x07, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x12, - 0x34, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x5e, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x22, 0x65, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x07, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x56, 0x32, 0x12, 0x34, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, + 0x64, 0x0a, 0x04, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x06, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, + 0x12, 0x34, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x30, 0x0a, 0x06, + 0x46, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, + 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, 0x37, + 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x0f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x22, 0x57, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x46, 0x0a, 0x0f, 0x73, 0x6c, 0x6f, 0x74, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, + 0x22, 0x54, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x92, 0x01, 0x0a, 0x14, 0x41, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x12, + 0x46, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xaa, 0x01, 0x0a, 0x14, + 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x6f, 0x72, 0x67, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x06, 0x62, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x05, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, + 0x67, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x62, + 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, + 0x67, 0x56, 0x32, 0x12, 0x31, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, 0x52, 0x06, + 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, + 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x0a, + 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x0e, 0x73, 0x79, + 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x22, 0xf5, 0x02, 0x0a, + 0x11, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, + 0x62, 0x69, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x56, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6d, 0x69, + 0x73, 0x73, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x82, 0x04, + 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x72, + 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, + 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x73, 0x22, 0xf0, 0x06, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x04, 0x53, - 0x6c, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x22, 0x84, 0x01, 0x0a, 0x06, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x12, 0x34, 0x0a, 0x06, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6b, - 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, 0x37, 0x0a, 0x0b, 0x50, 0x72, - 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6c, 0x6f, - 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, - 0x69, 0x66, 0x66, 0x22, 0x57, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x46, 0x0a, 0x0f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x73, 0x6c, 0x6f, - 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x22, 0x54, 0x0a, 0x12, - 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x92, 0x01, 0x0a, 0x14, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x12, 0x46, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x62, 0x75, - 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, - 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, - 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x52, 0x05, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, - 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x12, - 0x31, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, - 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, - 0x56, 0x32, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x0a, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0x57, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x22, 0xf5, 0x02, 0x0a, 0x11, 0x53, 0x79, 0x6e, - 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, - 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, - 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, - 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x56, 0x0a, 0x17, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x38, 0x0a, + 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, - 0x12, 0x4e, 0x0a, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, - 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x82, 0x04, 0x0a, 0x12, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, - 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, - 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x13, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, - 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x16, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x65, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf0, - 0x06, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, - 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, - 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, - 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, - 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x38, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, + 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, + 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, - 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xbc, 0x04, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, - 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, - 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x12, 0x46, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26, 0x0a, + 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x04, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0xd3, 0x05, 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, - 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x38, - 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26, - 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x04, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x62, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, + 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x05, 0x0a, 0x19, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, @@ -13169,936 +14369,1038 @@ var file_pkg_proto_xatu_event_ingester_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x46, - 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x40, + 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x09, + 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x52, - 0x0a, 0x15, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x73, 0x22, 0xb7, 0xf1, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6b, 0x0a, 0x12, 0x65, 0x74, - 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x65, - 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x12, 0x6e, 0x0a, 0x13, 0x65, 0x74, 0x68, 0x5f, 0x76, - 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x88, 0x01, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, - 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, - 0x49, 0x54, 0x12, 0x9a, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, - 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x12, - 0x7f, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, - 0x65, 0x6f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, - 0x12, 0x9f, 0x01, 0x0a, 0x24, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x2f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, - 0x4f, 0x46, 0x12, 0x65, 0x0a, 0x13, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x70, - 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6e, 0x0a, 0x13, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x7c, 0x0a, 0x18, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, - 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, - 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x12, 0x8d, 0x01, 0x0a, 0x1e, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x29, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, - 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x12, 0x7a, 0x0a, 0x17, 0x65, 0x74, 0x68, 0x5f, 0x76, - 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, - 0x54, 0x45, 0x45, 0x12, 0x97, 0x01, 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, - 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x12, 0x88, 0x01, - 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, - 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x12, 0x73, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x76, - 0x32, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, - 0x65, 0x61, 0x64, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x56, 0x32, 0x12, 0x76, 0x0a, - 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x90, 0x01, 0x0a, 0x1f, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, - 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, - 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x04, 0x0a, 0x17, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x73, 0x12, 0x46, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x15, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0x8a, 0x99, 0x02, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x12, 0x35, + 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x52, 0x08, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x65, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x19, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, - 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2a, 0x42, 0x45, + 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6b, + 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x48, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, - 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x56, 0x32, 0x12, 0xa2, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x76, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x12, 0x6e, 0x0a, 0x13, 0x65, + 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x12, 0x87, 0x01, - 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, + 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x88, 0x01, 0x0a, 0x1c, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, + 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, + 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, + 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x9a, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, + 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, + 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, + 0x49, 0x4e, 0x54, 0x12, 0x7f, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, - 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0xa7, 0x01, 0x0a, 0x27, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, - 0x5f, 0x76, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x32, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, - 0x32, 0x12, 0x6d, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, - 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, - 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, - 0x12, 0x76, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x84, 0x01, 0x0a, 0x1b, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, - 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, - 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x56, 0x32, 0x12, - 0x95, 0x01, 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6f, - 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x61, + 0x45, 0x4f, 0x52, 0x47, 0x12, 0x9f, 0x01, 0x0a, 0x24, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x65, 0x0a, 0x13, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, + 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, + 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6e, 0x0a, + 0x13, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x7c, 0x0a, + 0x18, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, + 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, + 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x12, 0x8d, 0x01, 0x0a, 0x1e, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, 0x72, + 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, + 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x12, 0x7a, 0x0a, 0x17, 0x65, + 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, + 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x97, 0x01, 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x45, 0x74, 0x68, 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x12, 0x88, 0x01, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x76, 0x32, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, + 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x12, 0x73, 0x0a, 0x15, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x5f, 0x76, 0x32, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, - 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x4f, 0x72, - 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, - 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, - 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0xa2, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, 0xa2, 0x01, 0x0a, - 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, - 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x64, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x20, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x56, + 0x32, 0x12, 0x76, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x90, 0x01, 0x0a, 0x1f, 0x65, 0x74, + 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, + 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, + 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, + 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x56, 0x32, 0x12, 0xa2, 0x01, 0x0a, + 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, - 0x47, 0x12, 0x99, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6e, - 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2d, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, - 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x85, 0x01, - 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x26, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x26, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, - 0x50, 0x4f, 0x53, 0x49, 0x54, 0x12, 0xb2, 0x01, 0x0a, 0x2b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, - 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, - 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x78, 0x61, + 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, + 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x56, + 0x32, 0x12, 0x87, 0x01, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x5f, + 0x76, 0x32, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, + 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0xa7, 0x01, 0x0a, 0x27, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, + 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x76, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, + 0x4f, 0x46, 0x5f, 0x56, 0x32, 0x12, 0x6d, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, + 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x4d, 0x45, + 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x56, 0x32, 0x12, 0x76, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x20, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x84, 0x01, 0x0a, + 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, + 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x21, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, + 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, + 0x5f, 0x56, 0x32, 0x12, 0x95, 0x01, 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x64, + 0x65, 0x62, 0x75, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x4f, 0x72, 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, + 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, + 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0xa2, 0x01, 0x0a, 0x25, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x30, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, + 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, + 0x12, 0xa2, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, + 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, + 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, 0x99, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, + 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x6f, + 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x25, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, + 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, 0xae, 0x01, 0x0a, 0x29, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x8e, 0x01, 0x0a, 0x1e, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, + 0x54, 0x12, 0x85, 0x01, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, - 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x12, 0x82, 0x01, 0x0a, - 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, - 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x2a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x12, 0xb2, 0x01, 0x0a, 0x2b, 0x65, 0x74, + 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x43, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x4c, 0x53, 0x54, + 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, + 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, 0xae, + 0x01, 0x0a, 0x29, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x28, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, + 0x8e, 0x01, 0x0a, 0x1e, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, + 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, + 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, + 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x25, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, + 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6d, 0x0a, 0x16, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, + 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x71, 0x0a, 0x14, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, + 0x79, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x44, 0x75, 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, + 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0xb1, 0x01, 0x0a, + 0x2a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, - 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, - 0x52, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, - 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6d, 0x0a, 0x16, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x71, 0x0a, 0x14, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, 0x2e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, 0x74, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0xb1, 0x01, 0x0a, 0x2a, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, + 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, + 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, + 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, 0x72, 0x0a, 0x18, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, - 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x69, 0x0a, 0x15, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, - 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x41, - 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, 0x72, 0x0a, 0x18, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, + 0x69, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x72, 0x65, 0x63, 0x76, 0x5f, 0x72, 0x70, 0x63, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, + 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, + 0x72, 0x70, 0x63, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x18, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, 0x69, 0x0a, 0x15, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x76, - 0x5f, 0x72, 0x70, 0x63, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, - 0x43, 0x56, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x70, 0x63, 0x18, - 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, + 0x44, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x5e, 0x0a, 0x11, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x11, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x12, 0x6d, 0x0a, 0x16, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, + 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6e, - 0x64, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, - 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x50, - 0x43, 0x12, 0x5e, 0x0a, 0x11, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, - 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4a, 0x4f, 0x49, - 0x4e, 0x12, 0x6d, 0x0a, 0x16, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, - 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x12, 0x77, 0x0a, 0x19, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x36, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x12, 0x77, 0x0a, 0x19, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x44, 0x49, 0x53, 0x43, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x7e, 0x0a, + 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x37, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x7e, 0x0a, 0x1c, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, + 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, + 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x12, 0x78, 0x0a, + 0x1a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, - 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x12, 0x78, 0x0a, 0x1a, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, + 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0xa4, 0x01, 0x0a, + 0x29, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, + 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x61, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, + 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x29, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x39, 0x20, 0x01, 0x28, + 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, - 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0xa4, 0x01, 0x0a, 0x29, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, - 0x73, 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x29, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, - 0x92, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, - 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x6c, - 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, - 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, - 0x45, 0x43, 0x41, 0x52, 0x12, 0x70, 0x0a, 0x11, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x12, 0xab, 0x01, 0x0a, 0x2c, 0x6d, 0x65, 0x76, 0x5f, 0x72, - 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, - 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, - 0x44, 0x45, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x12, 0x84, 0x01, 0x0a, 0x1b, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, - 0x65, 0x72, 0x65, 0x64, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, - 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, - 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x12, 0x77, 0x0a, 0x16, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x33, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x33, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, - 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x20, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, - 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x70, 0x63, 0x18, - 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x72, 0x6f, - 0x70, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, - 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x50, - 0x43, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4c, - 0x45, 0x41, 0x56, 0x45, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, - 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x66, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x47, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x42, + 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x70, 0x0a, 0x11, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x3c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x72, 0x75, 0x6e, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x84, 0x01, 0x0a, 0x1e, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x48, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x45, 0x74, 0x68, 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x12, 0xab, 0x01, 0x0a, 0x2c, 0x6d, + 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x3d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, + 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x4d, 0x45, 0x56, 0x5f, + 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, + 0x42, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x12, 0x84, 0x01, 0x0a, 0x1b, 0x6d, 0x65, 0x76, + 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x24, 0x4d, 0x45, 0x56, 0x5f, 0x52, + 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x41, + 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x12, + 0x77, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x33, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x33, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, + 0x4f, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x6d, 0x65, 0x76, + 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x42, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x1e, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, - 0x45, 0x12, 0x7e, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, - 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, - 0x45, 0x12, 0x7e, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x20, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x6f, + 0x73, 0x73, 0x69, 0x70, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x12, 0x69, 0x0a, 0x15, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x70, 0x63, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x46, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x66, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x12, 0x61, 0x0a, 0x12, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x75, 0x6e, + 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, - 0x45, 0x12, 0x7b, 0x0a, 0x1b, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x1b, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x91, - 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x69, 0x68, 0x61, 0x76, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x48, 0x41, - 0x56, 0x45, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, + 0x72, 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x84, + 0x01, 0x0a, 0x1e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, + 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x7e, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x7e, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x7b, 0x0a, 0x1b, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1b, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x68, 0x61, 0x76, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x5f, 0x49, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x9d, 0x01, 0x0a, 0x27, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x6f, 0x6e, 0x74, 0x77, 0x61, - 0x6e, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x44, - 0x6f, 0x6e, 0x74, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x4f, - 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, + 0x5f, 0x49, 0x48, 0x41, 0x56, 0x45, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x4f, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, - 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, 0x66, 0x74, 0x44, + 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x9d, 0x01, 0x0a, 0x27, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x6f, + 0x6e, 0x74, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x49, 0x44, 0x6f, 0x6e, 0x74, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x27, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, + 0x5f, 0x49, 0x44, 0x4f, 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x91, 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x72, 0x75, - 0x6e, 0x65, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x72, 0x61, + 0x66, 0x74, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, - 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, + 0x61, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x8f, - 0x01, 0x0a, 0x22, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x22, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, - 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x1d, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x4d, 0x45, 0x53, 0x53, - 0x41, 0x47, 0x45, 0x12, 0x6a, 0x0a, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x53, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, - 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x12, - 0xa6, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x54, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, - 0x69, 0x70, 0x53, 0x75, 0x62, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, - 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, - 0x50, 0x53, 0x55, 0x42, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x41, - 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x96, 0x01, 0x0a, 0x21, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x55, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x44, 0x41, - 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, - 0x52, 0x12, 0xa6, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, - 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2a, - 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, - 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, - 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x74, - 0x68, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, - 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, - 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, - 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0xa5, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, - 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, - 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x78, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x12, 0x91, + 0x01, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x4c, + 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x55, + 0x4e, 0x45, 0x12, 0x8f, 0x01, 0x0a, 0x22, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, + 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x22, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, + 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x52, 0x70, 0x63, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, - 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x12, - 0x89, 0x01, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x65, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x78, 0x61, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1d, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x6a, 0x0a, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, + 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, + 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, + 0x53, 0x55, 0x53, 0x12, 0xa6, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x6f, 0x66, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, + 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, + 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x96, 0x01, 0x0a, + 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, + 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0xa6, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x45, - 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x83, 0x01, 0x0a, 0x1e, - 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x5a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, + 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x8a, + 0x01, 0x0a, 0x20, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x73, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, + 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0xa5, 0x01, 0x0a, 0x2a, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x64, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x70, 0x63, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x62, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, + 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, 0x52, + 0x4f, 0x42, 0x45, 0x12, 0x89, 0x01, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, + 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x65, 0x77, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x43, + 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, + 0x83, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, + 0x62, 0x73, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1e, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, + 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x5f, + 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x12, 0x6b, 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, + 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x5b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x42, 0x12, 0x88, 0x01, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x99, 0x01, + 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x12, 0x6a, 0x0a, 0x15, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, + 0x4e, 0x54, 0x49, 0x46, 0x59, 0x12, 0x90, 0x01, 0x0a, 0x1f, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, + 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x39, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2a, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x43, 0x43, + 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x12, 0x91, 0x01, 0x0a, 0x1f, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x60, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x97, 0x01, 0x0a, + 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, + 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x9c, 0x01, 0x0a, 0x23, 0x65, 0x74, 0x68, 0x5f, 0x76, + 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x62, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x1e, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, - 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, - 0x53, 0x12, 0x6b, 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x12, 0x88, - 0x01, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, - 0x5c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x79, 0x6e, - 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, - 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x99, 0x01, 0x0a, 0x22, 0x65, 0x74, - 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, - 0x45, 0x47, 0x41, 0x54, 0x45, 0x12, 0x6a, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x18, 0x5e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, + 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, + 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, 0x9a, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x63, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x52, + 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, + 0x45, 0x53, 0x12, 0xa8, 0x01, 0x0a, 0x27, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x64, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, - 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, - 0x59, 0x12, 0x32, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xb5, 0x04, 0x0a, 0x08, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x75, 0x6d, 0x12, 0x3b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, - 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x1a, 0x2d, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x1a, 0xe7, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x46, 0x6f, 0x72, - 0x6b, 0x49, 0x44, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, - 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x1a, 0x4d, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x26, 0x0a, - 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x24, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x49, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, - 0x4d, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x88, - 0x03, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, + 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0xad, 0x01, + 0x0a, 0x29, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x42, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, 0xbb, 0x01, + 0x0a, 0x31, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, + 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x31, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, + 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, + 0x41, 0x44, 0x5f, 0x45, 0x4e, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x12, 0xac, 0x01, 0x0a, 0x2c, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x67, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x53, 0x75, 0x62, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2c, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, + 0x50, 0x53, 0x55, 0x42, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, + 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, 0xbe, 0x01, 0x0a, 0x32, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, + 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, - 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, - 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x96, 0x03, 0x0a, 0x26, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x35, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x52, 0x13, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x1a, 0x97, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, - 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x9f, 0x01, 0x0a, - 0x1f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x64, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, - 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x98, - 0x01, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, - 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa0, 0x01, 0x0a, 0x20, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, - 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa4, 0x01, 0x0a, - 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, - 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x4b, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, - 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x1a, 0xbe, 0x01, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, - 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, - 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x1a, 0x51, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x55, 0x0a, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, + 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x32, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, + 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0xaa, 0x01, 0x0a, 0x2b, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x69, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x46, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, + 0x75, 0x62, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2b, 0x4c, 0x49, 0x42, + 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, + 0x53, 0x55, 0x42, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, + 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x12, 0x32, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x40, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xb5, + 0x04, 0x0a, 0x08, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x12, 0x3b, 0x0a, 0x07, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x09, 0x63, + 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x75, 0x73, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x1a, 0x2d, + 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x1a, 0xe7, 0x01, + 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x07, 0x66, + 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, + 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x49, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x26, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x9d, 0x01, 0x0a, 0x23, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x44, + 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x49, 0x0a, 0x24, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa5, 0x01, 0x0a, 0x25, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x88, 0x03, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4d, 0x0a, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x04, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x1a, 0x96, 0x03, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, + 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x13, 0x61, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x56, 0x32, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x97, 0x01, 0x0a, 0x1d, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, + 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x9f, 0x01, 0x0a, 0x1f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, + 0x64, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x98, 0x01, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0xa0, 0x01, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, @@ -14107,895 +15409,1128 @@ var file_pkg_proto_xatu_event_ingester_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0xb3, 0x01, 0x0a, 0x39, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, - 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, - 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbb, 0x01, 0x0a, 0x3b, 0x41, 0x64, + 0x69, 0x6f, 0x6e, 0x1a, 0xa4, 0x01, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4b, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, - 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x9f, 0x01, 0x0a, 0x2d, 0x41, 0x64, 0x64, 0x69, + 0x6e, 0x74, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0xbe, 0x01, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x12, 0x6e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x4a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa3, 0x01, 0x0a, 0x2f, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, - 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0xad, 0x02, 0x0a, 0x12, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x31, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x48, 0x0a, 0x1f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, - 0x5f, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, - 0xef, 0x02, 0x0a, 0x14, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, 0x12, 0x33, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0d, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x30, 0x0a, - 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, + 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, + 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x1a, 0x51, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x55, 0x0a, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x1a, 0x9d, 0x01, 0x0a, 0x23, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0xa5, 0x01, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xb3, 0x01, 0x0a, 0x39, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0xbb, 0x01, 0x0a, 0x3b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, - 0x32, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x66, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, - 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, - 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x1a, 0x65, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0x69, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, + 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, + 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x9f, + 0x01, 0x0a, 0x2d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, + 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x6e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0xa3, 0x01, 0x0a, 0x2f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, + 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xad, 0x02, 0x0a, 0x12, 0x46, 0x6f, 0x72, 0x6b, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x31, 0x0a, + 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, + 0x6f, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x12, 0x48, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, + 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0xef, 0x02, 0x0a, 0x14, 0x46, 0x6f, 0x72, 0x6b, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, 0x12, + 0x33, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x66, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x12, 0x4e, + 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x65, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, - 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x41, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3f, + 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, + 0x69, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, + 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, + 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0xa1, 0x01, 0x0a, 0x27, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, + 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x4f, + 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x06, 0x62, 0x65, 0x66, + 0x6f, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x1a, 0xa1, 0x01, 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x3b, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x05, - 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, - 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x1a, 0xa7, 0x01, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, - 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x4f, 0x72, 0x67, 0x56, - 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x06, 0x62, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x1a, 0x87, 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0xa1, 0x01, 0x0a, 0x26, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x52, 0x0a, 0x15, 0x73, - 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, - 0xae, 0x01, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, - 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x79, - 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x52, 0x0a, 0x15, - 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x1a, 0xf2, 0x01, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, - 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x14, 0x0a, - 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x67, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x9a, 0x05, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x1a, 0xa7, + 0x01, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, + 0x56, 0x31, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x4f, 0x72, 0x67, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x06, + 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, + 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x56, 0x32, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x6f, 0x72, + 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, + 0x32, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x1a, 0x87, 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x1a, 0xa1, 0x01, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x12, 0x52, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0xae, 0x01, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x52, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, + 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0xf2, 0x01, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x74, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x73, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x61, - 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, - 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x38, - 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, - 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, - 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3a, 0x0a, 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x1a, 0x89, 0x02, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, - 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x8d, - 0x05, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, - 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, - 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x4c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x52, 0x02, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, + 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, + 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x9a, 0x05, 0x0a, + 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x70, 0x6f, + 0x6f, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, + 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x70, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x70, 0x5f, + 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, + 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, + 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x38, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x12, + 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, + 0x63, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x67, 0x61, 0x73, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x62, + 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2e, 0x0a, + 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3a, 0x0a, + 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x89, 0x02, 0x0a, 0x1e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x1e, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x18, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x8d, 0x05, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x4c, 0x0a, 0x12, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x18, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x23, + 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x73, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x5d, 0x0a, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x5d, 0x0a, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x1a, 0x5a, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, + 0x54, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, + 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x61, 0x0a, 0x32, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0xd5, 0x02, 0x0a, 0x32, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x11, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3a, 0x0a, 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x1a, 0x57, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0xb7, 0x01, 0x0a, 0x28, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0b, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x16, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, - 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, - 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x5d, - 0x0a, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x5d, 0x0a, - 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x61, 0x73, 0x68, 0x1a, 0xa9, 0x01, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, + 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0xab, 0x01, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xac, 0x01, + 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, + 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xac, 0x01, 0x0a, + 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, + 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x5f, 0x0a, 0x30, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x5a, 0x0a, 0x2b, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x60, 0x0a, 0x31, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x54, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x44, 0x61, 0x74, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x61, - 0x0a, 0x32, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, - 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x4c, 0x53, 0x54, - 0x6f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x1a, 0xd5, 0x02, 0x0a, 0x32, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2e, 0x0a, - 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x62, 0x5f, - 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3a, 0x0a, - 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x18, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x5f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x57, 0x0a, 0x28, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x1a, 0x8b, 0x02, 0x0a, 0x17, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x66, - 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, - 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x1a, 0xdc, 0x02, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, - 0x74, 0x68, 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, - 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x9a, + 0x04, 0x0a, 0x3a, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, + 0x62, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, + 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, + 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, + 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, - 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, - 0xa4, 0x01, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, - 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xaa, 0x01, 0x0a, 0x2a, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, + 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, + 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x95, 0x04, 0x0a, 0x35, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x99, 0x02, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, - 0xa9, 0x04, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, + 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, + 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x1a, 0x9b, 0x04, 0x0a, 0x3b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, + 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, + 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, + 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, + 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x1a, 0x95, 0x04, 0x0a, 0x35, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, + 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, + 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, + 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x8b, 0x02, 0x0a, 0x17, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x66, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6d, 0x73, 0x12, 0x4e, 0x0a, + 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0xdc, 0x02, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, - 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x52, - 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x06, 0x73, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, - 0x74, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x84, 0x01, 0x0a, 0x1f, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, + 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x12, 0x44, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0xa4, 0x01, 0x0a, 0x24, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, - 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x1a, 0x97, 0x03, 0x0a, 0x33, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xaa, 0x01, + 0x0a, 0x2a, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, + 0x31, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x99, 0x02, 0x0a, 0x24, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, - 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x5f, 0x0a, 0x20, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x62, 0x0a, - 0x23, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, - 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, - 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x52, - 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x72, 0x6f, 0x70, - 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, + 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x46, + 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0xa9, 0x04, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, + 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, + 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, + 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x04, 0x70, + 0x65, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, + 0x65, 0x72, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x06, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x1a, 0x84, 0x01, 0x0a, 0x1f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, + 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x97, 0x03, 0x0a, 0x33, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x32, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2b, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, + 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, + 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, + 0x74, 0x68, 0x56, 0x31, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x50, + 0x65, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, - 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, - 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6f, - 0x0a, 0x30, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x44, 0x6f, 0x6e, 0x74, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, - 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, - 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x62, 0x0a, 0x23, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5c, 0x0a, 0x1d, 0x41, 0x64, 0x64, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, - 0x72, 0x61, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x63, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5f, 0x0a, 0x20, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, + 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x72, - 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x68, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x75, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, - 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6f, 0x0a, 0x30, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, + 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x44, 0x6f, 0x6e, + 0x74, 0x57, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, + 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, + 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, + 0x65, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x5c, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x65, - 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, + 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, + 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, 0x0a, + 0x1e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, + 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x72, 0x61, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5d, 0x0a, 0x1e, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x68, 0x0a, 0x29, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x61, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x64, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6a, - 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x27, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x64, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x60, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xa7, 0x02, 0x0a, 0x32, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x52, 0x70, 0x63, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, - 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, - 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, - 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x73, 0x6c, 0x6f, 0x74, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, - 0x4d, 0x65, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x65, + 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, + 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, + 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x65, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x61, 0x0a, 0x22, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x64, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6a, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x79, + 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, - 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, - 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x8d, 0x04, 0x0a, 0x2d, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, - 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, - 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x64, 0x0a, 0x25, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, + 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x60, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0xa7, 0x02, 0x0a, 0x32, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x70, 0x63, 0x44, 0x61, + 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, + 0x72, 0x6f, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x60, 0x0a, 0x39, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x60, 0x0a, 0x39, 0x41, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, + 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x1a, 0x6b, 0x0a, 0x2c, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0xa9, 0x06, - 0x0a, 0x33, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, - 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x06, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, + 0x72, 0x61, 0x63, 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x27, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x13, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x56, 0x32, 0x52, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, - 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x65, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x8d, 0x04, 0x0a, 0x2d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, + 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, + 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0xdd, 0x04, 0x0a, 0x33, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, - 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, - 0x0a, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x8d, 0x04, 0x0a, 0x2d, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x62, - 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, - 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, - 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x1a, 0x60, 0x0a, 0x39, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, + 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x1a, 0x60, 0x0a, 0x39, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x1a, 0xa9, 0x06, 0x0a, 0x33, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, + 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x62, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x62, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x4a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, + 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, + 0x62, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, + 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x52, 0x13, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, + 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x1a, 0xdd, 0x04, 0x0a, 0x33, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x53, 0x75, 0x62, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, + 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x93, 0x04, 0x0a, 0x33, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x53, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, - 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, - 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, - 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, - 0x44, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, - 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0xc2, 0x03, 0x0a, 0x34, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x69, 0x64, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, - 0x0a, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x52, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x0e, - 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x1a, 0x8d, 0x04, 0x0a, 0x2d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x53, 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, - 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x54, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x74, - 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0xb4, 0x03, 0x0a, 0x26, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, + 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, + 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, + 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, + 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x1a, 0x93, 0x04, 0x0a, 0x33, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, + 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x53, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, + 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x35, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x61, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x44, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0xc2, 0x03, 0x0a, + 0x34, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, @@ -15020,1199 +16555,1362 @@ var file_pkg_proto_xatu_event_ingester_proto_rawDesc = []byte{ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x1a, 0x96, 0x06, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x45, 0x74, 0x68, 0x56, 0x33, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x65, 0x1a, 0xb4, 0x03, 0x0a, 0x26, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x05, + 0x72, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, + 0x79, 0x52, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, + 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, + 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, + 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, + 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x54, + 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x96, 0x06, 0x0a, 0x21, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x33, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, + 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x4c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x58, 0x0a, + 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x6e, 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x75, 0x65, 0x52, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x23, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x54, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x13, 0x72, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x4e, 0x0a, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x1a, 0xd7, 0x02, 0x0a, 0x2b, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x65, - 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, - 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, - 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, - 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x23, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, - 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x46, 0x0a, 0x0f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x1a, 0xb4, 0x01, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x0f, 0x66, 0x69, - 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x56, 0x32, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x29, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, - 0x74, 0x56, 0x32, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x2c, 0x0a, - 0x0a, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, - 0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x73, 0x0a, 0x2a, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x1a, 0x71, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, - 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, - 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x1a, 0x66, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x1a, 0xd7, 0x02, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4d, 0x65, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x34, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, + 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0f, 0x77, 0x61, + 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, - 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x89, 0x10, - 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x05, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x6d, 0x0a, 0x16, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, + 0x56, 0x32, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x46, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0xb4, 0x01, 0x0a, 0x21, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x36, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x29, 0x0a, 0x09, 0x68, 0x65, 0x61, + 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, + 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x1a, 0x73, 0x0a, 0x2a, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, + 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, + 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x1a, 0x71, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, + 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, + 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x1a, 0x66, 0x0a, 0x1d, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x74, 0x68, 0x56, 0x31, 0x42, 0x65, 0x61, + 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x56, 0x32, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x20, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x56, 0x32, 0x52, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x22, 0x89, 0x10, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x6d, 0x0a, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x12, 0x6d, 0x0a, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, + 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x12, 0x76, 0x0a, 0x19, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x19, 0x4c, + 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x6a, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, + 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, + 0x53, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4e, + 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, + 0x4e, 0x53, 0x55, 0x53, 0x12, 0x6a, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, + 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, + 0x54, 0x42, 0x45, 0x41, 0x54, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, - 0x50, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6d, 0x0a, 0x16, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x45, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x76, 0x0a, 0x19, 0x4c, 0x49, 0x42, - 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, - 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, + 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, + 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0x6a, 0x0a, + 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x46, 0x59, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x19, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, - 0x44, 0x12, 0x6a, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, - 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, - 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x12, 0x6a, 0x0a, - 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, - 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, - 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x8a, 0x01, 0x0a, 0x20, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, - 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x18, 0x2a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, 0x74, - 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, - 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0x6a, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x59, 0x18, - 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, - 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, - 0x46, 0x59, 0x1a, 0x53, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x12, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0xb7, 0x02, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x21, 0x0a, - 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x25, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x12, 0x38, 0x0a, 0x16, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1c, 0x41, - 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x1e, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x6a, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x03, 0x67, - 0x65, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, - 0x67, 0x65, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x73, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x2e, 0x0a, - 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, 0x6f, 0x1a, 0x4f, 0x0a, - 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, - 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4f, - 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, - 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, - 0x52, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, - 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, - 0x65, 0x65, 0x72, 0x1a, 0x58, 0x0a, 0x2b, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, 0x74, - 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4e, 0x0a, - 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, - 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4b, 0x0a, - 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x59, 0x1a, 0x53, 0x0a, 0x05, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0xb7, + 0x02, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, + 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, + 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x16, 0x41, 0x75, 0x74, 0x6f, + 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, + 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1c, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, + 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x6a, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x70, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, 0x6f, 0x1a, 0x4b, 0x0a, 0x21, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, - 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, 0x6f, 0x42, 0x10, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a, 0x04, 0x4d, 0x65, 0x74, - 0x61, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x06, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xb6, 0x1c, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x24, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0xbc, 0x1b, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x22, - 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, - 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x10, 0x02, 0x12, 0x31, 0x0a, 0x2d, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, - 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x03, 0x12, - 0x21, 0x0a, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, - 0x10, 0x04, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, - 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, 0x05, 0x12, - 0x28, 0x0a, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, - 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x45, 0x41, + 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x12, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x1a, 0x2e, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x03, + 0x67, 0x65, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, + 0x03, 0x67, 0x65, 0x6f, 0x1a, 0x4f, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, + 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4f, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, + 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, + 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x52, 0x0a, 0x25, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x1a, 0x58, 0x0a, 0x2b, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x50, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, + 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4e, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x70, 0x32, 0x50, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x65, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x04, + 0x70, 0x65, 0x65, 0x72, 0x1a, 0x4b, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, + 0x6f, 0x1a, 0x4b, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x65, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x6f, 0x52, 0x03, 0x67, 0x65, 0x6f, 0x42, 0x10, + 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, + 0x22, 0x5a, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xf3, 0x20, 0x0a, + 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf9, 0x1f, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x20, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x10, 0x07, 0x12, 0x17, - 0x0a, 0x13, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x27, 0x0a, 0x23, 0x42, + 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, + 0x47, 0x10, 0x02, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, + 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, + 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x04, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, + 0x45, 0x58, 0x49, 0x54, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, + 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x4f, 0x46, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x22, + 0x0a, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x10, 0x09, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, + 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x10, 0x0a, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, - 0x43, 0x45, 0x10, 0x0a, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, - 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, - 0x47, 0x10, 0x0b, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x42, + 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x10, 0x0b, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, + 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, + 0x52, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, + 0x54, 0x41, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x10, 0x0e, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, - 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, - 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x0d, 0x12, 0x25, 0x0a, - 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x56, 0x32, 0x10, 0x0e, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, + 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x10, 0x0f, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x10, 0x10, 0x12, 0x24, + 0x0a, 0x20, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, + 0x56, 0x32, 0x10, 0x11, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, - 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x10, - 0x0f, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, - 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, - 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x10, 0x10, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x56, 0x32, 0x10, 0x11, 0x12, 0x2e, 0x0a, - 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, - 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x56, 0x32, 0x10, 0x12, 0x12, 0x2b, 0x0a, - 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x10, 0x13, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, 0x32, - 0x10, 0x14, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x10, 0x15, 0x12, 0x25, - 0x0a, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x56, 0x32, 0x10, 0x16, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, - 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x56, 0x32, 0x10, - 0x17, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, - 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, - 0x32, 0x10, 0x18, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, - 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x19, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x1a, 0x12, - 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, - 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, - 0x10, 0x1b, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x1c, 0x12, 0x3a, - 0x0a, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x1d, 0x12, 0x38, 0x0a, 0x34, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, - 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x1e, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, - 0x4c, 0x10, 0x1f, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, - 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x20, 0x12, 0x29, - 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, - 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x22, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x23, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x10, 0x24, 0x12, 0x39, 0x0a, 0x35, 0x42, 0x45, + 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, + 0x56, 0x32, 0x10, 0x12, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x10, + 0x13, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, + 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, 0x32, 0x10, 0x14, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x4d, + 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x56, 0x32, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x10, 0x16, 0x12, 0x2a, 0x0a, 0x26, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, + 0x49, 0x43, 0x45, 0x5f, 0x56, 0x32, 0x10, 0x17, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, + 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, + 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x10, 0x18, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, - 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, - 0x26, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x27, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, 0x54, + 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x19, + 0x12, 0x34, 0x0a, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, + 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, + 0x48, 0x49, 0x4e, 0x47, 0x10, 0x1a, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, + 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, 0x1b, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, + 0x53, 0x49, 0x54, 0x10, 0x1c, 0x12, 0x3a, 0x0a, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, + 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x1d, 0x12, 0x38, 0x0a, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1e, 0x12, 0x2d, 0x0a, 0x29, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, + 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, + 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x10, 0x1f, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, + 0x43, 0x41, 0x52, 0x10, 0x20, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x22, + 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, + 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x23, 0x12, 0x23, 0x0a, 0x1f, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x10, + 0x24, 0x12, 0x39, 0x0a, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, + 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x1a, 0x0a, 0x16, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x27, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, + 0x10, 0x28, 0x12, 0x1c, 0x0a, 0x18, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x29, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, - 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x28, 0x12, 0x1c, 0x0a, 0x18, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, - 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x29, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, - 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, - 0x50, 0x43, 0x10, 0x2a, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x2b, 0x12, - 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x2c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, - 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x2e, 0x12, 0x20, 0x0a, 0x1c, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, - 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x2f, 0x12, 0x1e, 0x0a, - 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, - 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x30, 0x12, 0x27, 0x0a, - 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, - 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x31, 0x12, 0x2d, 0x0a, 0x29, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, - 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x33, 0x12, 0x27, - 0x0a, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x34, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x45, 0x56, 0x5f, 0x52, - 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x42, - 0x55, 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x35, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x45, 0x56, - 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, - 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, - 0x44, 0x10, 0x36, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x33, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, - 0x4f, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x45, - 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x38, - 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x10, 0x39, 0x12, 0x16, 0x0a, 0x12, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x10, 0x3a, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x10, 0x3b, 0x12, 0x16, 0x0a, 0x12, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x55, 0x4e, - 0x45, 0x10, 0x3c, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x45, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, - 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3d, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, - 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, - 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3e, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x42, - 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, - 0x48, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x40, 0x12, 0x27, 0x0a, 0x23, + 0x5f, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x2a, 0x12, 0x19, 0x0a, 0x15, 0x4c, + 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x44, + 0x5f, 0x52, 0x50, 0x43, 0x10, 0x2b, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x50, 0x43, 0x10, + 0x2c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x2e, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x10, 0x2f, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x10, 0x30, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x31, 0x12, 0x2d, 0x0a, + 0x29, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, + 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x12, 0x27, 0x0a, 0x23, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, + 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, + 0x43, 0x41, 0x52, 0x10, 0x33, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x34, 0x12, 0x30, + 0x0a, 0x2c, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x42, 0x49, 0x44, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x35, + 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, + 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, + 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x36, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x33, 0x5f, + 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, + 0x37, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x38, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, + 0x10, 0x39, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x3a, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, + 0x10, 0x3b, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x10, 0x3c, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3d, 0x12, 0x20, + 0x0a, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, + 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3e, + 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x40, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x48, 0x41, 0x56, 0x45, 0x10, 0x41, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, - 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x48, - 0x41, 0x56, 0x45, 0x10, 0x41, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x57, + 0x41, 0x4e, 0x54, 0x10, 0x42, 0x12, 0x2b, 0x0a, 0x27, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x57, 0x41, 0x4e, 0x54, 0x10, 0x42, 0x12, 0x2b, - 0x0a, 0x27, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, - 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, - 0x49, 0x44, 0x4f, 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, 0x10, 0x43, 0x12, 0x27, 0x0a, 0x23, 0x4c, + 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x4f, 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, + 0x10, 0x43, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x10, 0x44, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, - 0x46, 0x54, 0x10, 0x44, 0x12, 0x27, 0x0a, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x10, 0x45, 0x12, 0x26, 0x0a, - 0x22, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, - 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x46, 0x12, 0x21, 0x0a, 0x1d, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x4d, - 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x47, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, - 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, - 0x53, 0x10, 0x48, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, - 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x49, 0x12, 0x2e, - 0x0a, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, - 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, - 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x10, 0x4a, 0x12, 0x30, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x55, + 0x4e, 0x45, 0x10, 0x45, 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, + 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x46, 0x12, 0x21, 0x0a, 0x1d, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, + 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x47, 0x12, + 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, + 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x10, 0x48, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, + 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x49, 0x12, 0x2e, 0x0a, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, + 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x4f, 0x46, 0x10, 0x4a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, + 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x4b, 0x12, 0x2e, 0x0a, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, + 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, + 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x4c, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, + 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x4d, 0x12, 0x2e, 0x0a, + 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, + 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x43, 0x55, + 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x10, 0x4e, 0x12, 0x18, 0x0a, + 0x14, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x4f, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x45, + 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x50, 0x12, 0x22, 0x0a, + 0x1e, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, + 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x10, + 0x51, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, + 0x44, 0x10, 0x52, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, + 0x53, 0x10, 0x53, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x42, 0x4c, 0x4f, 0x42, 0x10, 0x54, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, + 0x45, 0x10, 0x55, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, + 0x47, 0x41, 0x54, 0x45, 0x10, 0x56, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, + 0x53, 0x10, 0x57, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x59, 0x10, 0x58, 0x12, 0x2e, + 0x0a, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x59, 0x12, 0x2e, + 0x0a, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x5a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x4b, - 0x12, 0x2e, 0x0a, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, - 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x10, 0x4c, - 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, - 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, - 0x42, 0x45, 0x41, 0x54, 0x10, 0x4d, 0x12, 0x2e, 0x0a, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, - 0x52, 0x4f, 0x42, 0x45, 0x10, 0x4e, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x4f, - 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, - 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, - 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x50, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, - 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, - 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x10, 0x51, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x58, - 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x4e, - 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x52, 0x12, 0x1e, 0x0a, 0x1a, - 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, - 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x10, 0x53, 0x12, 0x21, 0x0a, 0x1d, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x10, 0x54, 0x12, - 0x2b, 0x0a, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, - 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x10, 0x55, 0x12, 0x31, 0x0a, 0x2d, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, - 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, 0x56, 0x12, - 0x1b, 0x0a, 0x17, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x57, 0x12, 0x19, 0x0a, 0x15, - 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, - 0x4e, 0x54, 0x49, 0x46, 0x59, 0x10, 0x58, 0x22, 0x04, 0x08, 0x21, 0x10, 0x21, 0x2a, 0x1f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x22, 0xf9, - 0x10, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x08, - 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x78, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x0d, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6d, 0x73, - 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x09, 0x20, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, + 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x5b, + 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x45, + 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, + 0x49, 0x44, 0x10, 0x5c, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, + 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, + 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x5d, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, + 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x5e, 0x12, + 0x38, 0x0a, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, + 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x10, 0x5f, 0x12, 0x35, 0x0a, 0x31, 0x4c, 0x49, 0x42, + 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, + 0x53, 0x55, 0x42, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, + 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x4e, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x10, 0x60, + 0x12, 0x30, 0x0a, 0x2c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, + 0x10, 0x61, 0x12, 0x36, 0x0a, 0x32, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x41, 0x59, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x62, 0x12, 0x2f, 0x0a, 0x2b, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, + 0x50, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, + 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x63, 0x22, 0x04, 0x08, 0x21, 0x10, + 0x21, 0x2a, 0x1f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x22, 0xf9, 0x10, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, + 0x12, 0x38, 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x08, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x0d, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x08, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x67, 0x61, 0x73, 0x5f, 0x70, - 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x67, 0x61, 0x73, - 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x61, 0x64, 0x73, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x73, + 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6d, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x73, + 0x12, 0x38, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x6d, 0x67, + 0x61, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, + 0x6d, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x0b, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x64, 0x73, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x73, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, - 0x4c, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4c, 0x0a, - 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x63, - 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x64, - 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x64, - 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x1a, 0xfa, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, + 0x4a, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x1a, 0xfa, 0x01, 0x0a, 0x0a, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, + 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x6f, + 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x99, 0x03, 0x0a, 0x0b, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x12, 0x48, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, + 0x12, 0x52, 0x0a, 0x15, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x1a, 0x99, 0x03, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x48, - 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x15, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x79, 0x74, 0x65, 0x73, 0x1a, 0xac, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, + 0x68, 0x69, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x68, 0x69, 0x74, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, + 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x68, 0x69, 0x74, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x1a, 0xa8, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, + 0x68, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x1a, 0xac, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x2f, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, - 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6d, - 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x68, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x68, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x1a, - 0xa8, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x68, - 0x69, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x68, 0x69, 0x74, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, - 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x68, 0x69, 0x74, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x68, 0x69, + 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x09, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a, - 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, - 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe0, 0x47, 0x0a, 0x0e, 0x44, - 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, - 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, - 0x12, 0x67, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, - 0x01, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, - 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x5a, 0x0a, 0x13, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, - 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x6b, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, - 0x72, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, - 0x52, 0x47, 0x12, 0x86, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, - 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x12, 0x57, 0x0a, 0x12, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, - 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x42, - 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, - 0x48, 0x45, 0x41, 0x44, 0x12, 0x74, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, - 0x65, 0x78, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x6f, - 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, - 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, - 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, - 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x8b, 0x01, 0x0a, 0x24, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x6f, 0x66, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, - 0x66, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x2f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x95, + 0x54, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x19, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x36, 0x0a, 0x13, 0x6d, 0x65, 0x6d, 0x70, - 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x13, 0x4d, 0x45, 0x4d, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x12, 0x5a, 0x0a, 0x13, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x5e, 0x0a, 0x12, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, - 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x12, 0x6d, 0x0a, 0x18, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, - 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, - 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, - 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x12, 0x5d, 0x0a, 0x17, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x74, 0x65, 0x65, 0x48, 0x00, 0x52, 0x22, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x79, 0x0a, 0x21, 0x65, 0x74, - 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x12, 0x6b, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x5a, 0x0a, + 0x13, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x56, 0x32, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, - 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x56, 0x32, 0x12, 0x6f, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x5f, - 0x76, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, - 0x5f, 0x56, 0x32, 0x12, 0x8a, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x6b, 0x0a, 0x19, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, + 0x52, 0x24, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, + 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x12, 0x86, 0x01, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, + 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x30, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, - 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, - 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x56, 0x32, - 0x12, 0x5b, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x76, 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x56, 0x32, 0x48, 0x00, 0x52, 0x20, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x56, 0x32, 0x12, 0x78, 0x0a, - 0x1f, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, - 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x76, 0x32, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, - 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2a, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, - 0x45, 0x58, 0x49, 0x54, 0x5f, 0x56, 0x32, 0x12, 0x8f, 0x01, 0x0a, 0x27, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, - 0x5f, 0x76, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, - 0x66, 0x56, 0x32, 0x48, 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, + 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, + 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x12, + 0x57, 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x65, 0x61, 0x64, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x12, 0x74, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, + 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x42, + 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, - 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, 0x32, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x65, 0x6d, - 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x76, 0x32, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x4d, 0x45, 0x4d, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x56, 0x32, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x32, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, - 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x8b, + 0x01, 0x0a, 0x24, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x2f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x36, 0x0a, 0x13, + 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, + 0x13, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x5a, 0x0a, 0x13, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, + 0x52, 0x1e, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x56, 0x32, 0x12, 0x62, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, - 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, - 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, - 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x56, 0x32, 0x12, 0x71, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, - 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, - 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, - 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0x82, 0x01, 0x0a, 0x25, 0x65, - 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x30, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, - 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x54, - 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, - 0x82, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x32, + 0x12, 0x5e, 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, + 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, + 0x12, 0x6d, 0x0a, 0x18, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, + 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, + 0x52, 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x12, + 0x5d, 0x0a, 0x17, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x48, 0x00, 0x52, 0x22, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x79, + 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x12, 0x6b, 0x0a, 0x1c, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x27, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x32, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, + 0x32, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x6f, 0x0a, 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, + 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x27, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, + 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0x8a, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x76, + 0x32, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, - 0x48, 0x49, 0x4e, 0x47, 0x12, 0x7f, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, - 0x69, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, - 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, 0x41, 0x52, 0x59, - 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x65, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x56, 0x32, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x46, 0x49, 0x4e, + 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, + 0x54, 0x5f, 0x56, 0x32, 0x12, 0x5b, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x76, 0x32, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x20, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x56, + 0x32, 0x12, 0x78, 0x0a, 0x1f, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, + 0x74, 0x5f, 0x76, 0x32, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x6f, + 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, 0x54, + 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x56, 0x32, 0x12, 0x8f, 0x01, 0x0a, 0x27, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, + 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x76, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x48, 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, 0x32, 0x12, 0x38, 0x0a, + 0x16, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x32, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x16, 0x4d, 0x45, 0x4d, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, + 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, + 0x32, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x56, 0x32, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x12, 0x98, 0x01, 0x0a, - 0x2b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x1f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, - 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, 0x83, 0x01, 0x0a, 0x29, 0x65, 0x74, 0x68, 0x5f, + 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x32, 0x12, 0x62, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x5f, 0x76, + 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x32, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x56, + 0x32, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, + 0x4b, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x56, 0x32, 0x12, 0x71, 0x0a, 0x1b, 0x65, + 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x46, 0x6f, 0x72, + 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x67, 0x56, 0x32, 0x48, 0x00, + 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x5f, 0x43, + 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4f, 0x52, 0x47, 0x5f, 0x56, 0x32, 0x12, 0x82, + 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x32, 0x48, + 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, + 0x49, 0x4e, 0x47, 0x12, 0x82, 0x01, 0x0a, 0x25, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x30, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, + 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x12, 0x7f, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6e, 0x0a, - 0x1e, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, - 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x56, 0x32, - 0x48, 0x00, 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x12, 0x6a, 0x0a, - 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, - 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, - 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, - 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6b, 0x0a, 0x20, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x24, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, - 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, - 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x54, 0x0a, 0x16, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x32, 0x48, 0x00, 0x52, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x50, 0x32, 0x50, - 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x5a, 0x0a, 0x14, - 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, - 0x64, 0x75, 0x74, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x72, 0x44, 0x75, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0x8f, 0x01, 0x0a, 0x2a, 0x65, 0x74, 0x68, + 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x1d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, + 0x72, 0x79, 0x45, 0x78, 0x69, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, + 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4e, + 0x54, 0x41, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x12, 0x65, 0x0a, 0x1b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x56, 0x32, 0x48, 0x00, 0x52, 0x26, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, + 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, + 0x12, 0x98, 0x01, 0x0a, 0x2b, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, 0x73, 0x5f, 0x74, 0x6f, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, + 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x4c, 0x53, 0x54, 0x6f, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x56, + 0x32, 0x48, 0x00, 0x52, 0x36, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, 0x55, 0x0a, 0x18, 0x6c, 0x69, 0x62, 0x70, - 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, - 0x70, 0x65, 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x48, 0x00, 0x52, 0x18, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, - 0x4c, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x76, 0x5f, 0x72, 0x70, 0x63, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x52, 0x65, 0x63, - 0x76, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x4c, 0x0a, - 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, - 0x6e, 0x64, 0x5f, 0x72, 0x70, 0x63, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, - 0x50, 0x43, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x41, 0x0a, 0x11, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, - 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x4c, 0x49, 0x42, - 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x12, 0x50, - 0x0a, 0x16, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x12, 0x59, 0x0a, 0x19, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x2e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, - 0x52, 0x19, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, - 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x61, 0x0a, 0x1c, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, - 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, - 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x12, 0x5b, - 0x0a, 0x1a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x30, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, - 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x48, 0x41, - 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x12, 0x7a, 0x0a, 0x23, 0x6c, - 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, - 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, - 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, - 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, - 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x78, 0x0a, 0x29, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, - 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, + 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x12, 0x83, 0x01, 0x0a, 0x29, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, + 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x12, 0x6e, 0x0a, 0x1e, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x56, 0x32, 0x48, 0x00, 0x52, 0x29, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, + 0x4c, 0x12, 0x6a, 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, + 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, + 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6b, 0x0a, + 0x20, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, + 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x54, 0x0a, 0x16, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x29, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x12, 0x7a, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x6c, 0x6f, 0x62, - 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, - 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, - 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x52, 0x0a, - 0x11, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x23, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, - 0x53, 0x12, 0x7d, 0x0a, 0x2c, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x62, - 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, - 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x48, 0x00, 0x52, 0x2c, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x42, 0x49, - 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x12, 0x74, 0x0a, 0x1b, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, - 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, - 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, - 0x52, 0x24, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x45, 0x4c, - 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x33, - 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, - 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x5f, 0x56, 0x33, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, - 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x72, 0x0a, 0x20, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, - 0x6c, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x20, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, - 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x45, - 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6a, 0x0a, 0x1a, 0x65, 0x74, - 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x48, 0x00, 0x52, - 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, - 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x70, 0x63, 0x18, - 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x15, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x50, 0x43, 0x12, 0x44, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x12, 0x44, 0x0a, 0x12, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, - 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, - 0x62, 0x70, 0x32, 0x70, 0x2e, 0x47, 0x72, 0x61, 0x66, 0x74, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, - 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, - 0x12, 0x44, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x65, - 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, - 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x67, 0x0a, 0x1e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x75, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, - 0x1e, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x55, - 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x16, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x50, 0x32, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x12, 0x5a, 0x0a, 0x14, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x48, 0x00, 0x52, 0x1f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x50, + 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x12, 0x8f, 0x01, 0x0a, + 0x2a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x35, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, + 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x4c, + 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x61, + 0x64, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x50, + 0x65, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x12, 0x55, 0x0a, 0x18, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x48, 0x00, 0x52, 0x18, 0x4c, 0x49, 0x42, 0x50, 0x32, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, + 0x45, 0x45, 0x52, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x72, 0x70, 0x63, 0x18, 0x2a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, 0x50, + 0x43, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x70, 0x63, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x50, 0x43, 0x12, + 0x41, 0x0a, 0x11, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x00, 0x52, + 0x11, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4a, 0x4f, + 0x49, 0x4e, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x2d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x12, 0x59, 0x0a, 0x19, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x19, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x12, 0x61, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, - 0x47, 0x45, 0x12, 0x61, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x4d, 0x45, - 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x5e, 0x0a, 0x1b, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, - 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x75, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x68, 0x61, 0x76, 0x65, 0x18, 0x42, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, - 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x48, 0x41, 0x56, 0x45, 0x12, 0x75, 0x0a, 0x23, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x77, - 0x61, 0x6e, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x12, 0x5b, 0x0a, 0x1a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x48, 0x00, 0x52, 0x1a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x12, + 0x7a, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, + 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x78, 0x0a, 0x29, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, + 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x29, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, + 0x55, 0x42, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x7a, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, + 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x33, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x42, + 0x6c, 0x6f, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, + 0x50, 0x53, 0x55, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, + 0x52, 0x12, 0x52, 0x0a, 0x11, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, + 0x52, 0x23, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x41, 0x54, 0x4f, 0x52, 0x53, 0x12, 0x7d, 0x0a, 0x2c, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, + 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x42, 0x69, 0x64, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x2c, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, + 0x44, 0x45, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x12, 0x74, 0x0a, 0x1b, 0x6d, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x6c, 0x61, + 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x6d, 0x65, 0x76, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x24, 0x4d, 0x45, 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, + 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x12, 0x5e, 0x0a, 0x16, 0x65, 0x74, + 0x68, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x21, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x33, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x12, 0x72, 0x0a, 0x20, 0x6d, 0x65, + 0x76, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x38, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6d, 0x65, 0x76, 0x72, + 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x20, 0x4d, 0x45, + 0x56, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, + 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x6a, + 0x0a, 0x1a, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x18, 0x39, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x48, 0x00, 0x52, 0x25, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x70, 0x63, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x48, + 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x50, 0x43, 0x12, 0x44, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x3b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, + 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x12, 0x44, + 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, + 0x72, 0x61, 0x66, 0x74, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x47, 0x72, 0x61, 0x66, 0x74, 0x48, 0x00, + 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, + 0x52, 0x41, 0x46, 0x54, 0x12, 0x44, 0x0a, 0x12, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x50, + 0x72, 0x75, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x12, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x67, 0x0a, 0x1e, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x3e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x2e, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x1e, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x12, 0x61, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, + 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x61, 0x0a, 0x1c, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, + 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x4c, 0x49, 0x42, + 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, + 0x48, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x5e, 0x0a, 0x1b, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x52, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x75, 0x0a, 0x23, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x68, 0x61, 0x76, 0x65, + 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, + 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x48, 0x41, 0x56, 0x45, + 0x12, 0x75, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x69, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, + 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x5f, 0x49, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x81, 0x01, 0x0a, 0x27, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x6f, 0x6e, 0x74, 0x77, + 0x61, 0x6e, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, - 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, - 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, - 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x57, - 0x41, 0x4e, 0x54, 0x12, 0x81, 0x01, 0x0a, 0x27, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x6f, 0x6e, 0x74, 0x77, 0x61, 0x6e, 0x74, 0x18, - 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, - 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x44, 0x6f, 0x6e, 0x74, - 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x27, - 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, - 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x44, - 0x4f, 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x75, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x45, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, - 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, 0x66, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, - 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, 0x46, 0x54, 0x12, 0x75, - 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, - 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, - 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, - 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x6a, 0x0a, 0x22, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x47, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, - 0x53, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x22, 0x4c, + 0x44, 0x6f, 0x6e, 0x74, 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, + 0x48, 0x00, 0x52, 0x27, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, + 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x5f, 0x49, 0x44, 0x4f, 0x4e, 0x54, 0x57, 0x41, 0x4e, 0x54, 0x12, 0x75, 0x0a, 0x23, 0x6c, + 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x72, 0x61, + 0x66, 0x74, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, + 0x61, 0x66, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, - 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x12, 0x64, 0x0a, 0x1d, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, - 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x1d, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, - 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x52, 0x0a, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, - 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, - 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x12, 0x52, 0x0a, 0x15, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, - 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x12, - 0x93, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x4b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, - 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, - 0x42, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, - 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x7e, 0x0a, 0x21, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, 0x49, - 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x8e, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, - 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, - 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, - 0x55, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x53, - 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6d, 0x0a, 0x20, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, - 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x53, - 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x52, - 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0x4d, 0x0a, 0x15, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x18, 0x4f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, - 0x32, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x48, 0x00, 0x52, 0x15, 0x4c, - 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, - 0x54, 0x49, 0x46, 0x59, 0x12, 0x86, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x5f, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x48, - 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, - 0x52, 0x50, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x12, 0x4f, 0x0a, - 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x48, 0x00, 0x52, 0x14, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x12, 0x71, - 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, - 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, - 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, - 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, - 0x44, 0x12, 0x6b, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, - 0x6f, 0x62, 0x73, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x61, 0x74, - 0x75, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x48, 0x00, 0x52, 0x1e, - 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, - 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x12, 0x66, - 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0xcc, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4e, 0x65, 0x77, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, - 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x60, 0x0a, 0x1a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, - 0x6c, 0x6f, 0x62, 0x73, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x61, - 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x45, 0x58, - 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x47, - 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x12, 0x4f, 0x0a, 0x12, 0x65, 0x74, 0x68, 0x5f, - 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0xce, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x1d, 0x42, 0x45, 0x41, 0x43, - 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x12, 0x69, 0x0a, 0x1c, 0x65, 0x74, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x27, 0x42, 0x45, 0x41, - 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x42, - 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, - 0x54, 0x54, 0x45, 0x45, 0x12, 0x75, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x79, 0x6e, 0x63, - 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0xd0, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x2d, 0x42, 0x45, - 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, - 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x59, 0x4e, - 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x12, 0x58, 0x0a, 0x17, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0xd1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x00, 0x52, 0x17, 0x45, 0x58, - 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4d, 0x45, - 0x54, 0x52, 0x49, 0x43, 0x53, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x6c, 0x0a, - 0x0c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, - 0x19, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, - 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4e, - 0x4f, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x45, 0x4e, 0x47, 0x49, 0x4e, - 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x32, 0x58, 0x0a, 0x0d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x78, - 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, - 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, - 0x61, 0x74, 0x75, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x47, 0x52, 0x41, + 0x46, 0x54, 0x12, 0x75, 0x0a, 0x23, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, + 0x65, 0x6d, 0x48, 0x00, 0x52, 0x23, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x12, 0x6a, 0x0a, 0x22, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, + 0x00, 0x52, 0x22, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x52, 0x50, 0x43, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x64, 0x0a, 0x1d, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x1d, 0x4c, 0x49, + 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x52, 0x0a, 0x15, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x61, 0x74, + 0x75, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, + 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x12, + 0x52, 0x0a, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x4e, 0x4f, + 0x44, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x12, 0x93, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x6f, 0x66, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x32, 0x48, 0x00, 0x52, 0x2a, 0x4c, + 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, + 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, + 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x12, 0x7e, 0x0a, 0x21, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x4c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, + 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x8e, 0x01, 0x0a, 0x2a, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x73, 0x75, 0x62, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x5f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x48, 0x00, 0x52, 0x2a, + 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, + 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, 0x55, + 0x4d, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x43, 0x41, 0x52, 0x12, 0x6d, 0x0a, 0x20, 0x6c, 0x69, + 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x68, + 0x65, 0x74, 0x69, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x4e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, + 0x32, 0x70, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x20, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x48, 0x45, 0x54, 0x49, 0x43, 0x5f, + 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x12, 0x4d, 0x0a, 0x15, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x79, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x48, + 0x00, 0x52, 0x15, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x59, 0x12, 0x86, 0x01, 0x0a, 0x2a, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, + 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, + 0x6f, 0x62, 0x65, 0x48, 0x00, 0x52, 0x2a, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x45, 0x5f, 0x52, 0x50, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x4f, 0x4c, + 0x55, 0x4d, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x44, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x42, + 0x45, 0x12, 0x4f, 0x0a, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x48, 0x00, 0x52, 0x14, 0x45, 0x58, + 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x12, 0x71, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, + 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x48, 0x00, 0x52, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, + 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x41, + 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x6b, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x75, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x67, 0x65, + 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x50, 0x49, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, + 0x48, 0x00, 0x52, 0x1e, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x55, 0x53, 0x5f, 0x45, 0x4e, + 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, + 0x42, 0x53, 0x12, 0x66, 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x45, 0x58, + 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x4e, + 0x45, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x60, 0x0a, 0x1a, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x67, + 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x48, 0x00, + 0x52, 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x47, 0x49, + 0x4e, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x53, 0x12, 0x4f, 0x0a, 0x12, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, + 0x6f, 0x62, 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x78, 0x61, 0x74, 0x75, + 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x1d, + 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, + 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x12, 0x69, 0x0a, + 0x1c, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0xcf, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x27, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x45, 0x12, 0x75, 0x0a, 0x22, 0x65, 0x74, 0x68, 0x5f, + 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0xd0, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x53, 0x79, 0x6e, + 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, + 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x12, + 0x58, 0x0a, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0xd1, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x00, + 0x52, 0x17, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x12, 0x7a, 0x0a, 0x1f, 0x65, 0x74, 0x68, + 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xd2, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x12, 0x83, 0x01, 0x0a, 0x1f, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, + 0x2a, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, + 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x12, 0x82, 0x01, 0x0a, 0x21, + 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, + 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x2c, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, + 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x41, 0x59, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x12, 0x86, 0x01, 0x0a, 0x23, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x48, 0x00, 0x52, 0x2e, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, + 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, 0x84, 0x01, 0x0a, 0x22, 0x65, 0x74, + 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x18, 0xd6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, + 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x2d, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x5f, 0x56, 0x31, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, + 0x12, 0x87, 0x01, 0x0a, 0x27, 0x65, 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xd7, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x32, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, + 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x12, 0x92, 0x01, 0x0a, 0x29, 0x65, + 0x74, 0x68, 0x5f, 0x76, 0x32, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0xd8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x48, 0x00, 0x52, 0x34, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x54, 0x48, 0x5f, 0x56, 0x32, 0x5f, 0x42, 0x45, 0x41, + 0x43, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, + 0xa4, 0x01, 0x0a, 0x31, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x6e, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0xd9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x48, 0x00, 0x52, 0x31, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x45, 0x58, 0x45, 0x43, + 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x4e, + 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x12, 0x95, 0x01, 0x0a, 0x2c, 0x6c, 0x69, 0x62, 0x70, 0x32, + 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, + 0x62, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0xda, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, + 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x69, 0x64, 0x48, 0x00, + 0x52, 0x2c, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x47, + 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x12, 0xa7, + 0x01, 0x0a, 0x32, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xdb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, + 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, 0x73, 0x73, 0x69, + 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x48, 0x00, 0x52, 0x32, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x45, 0x5f, 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x41, 0x59, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x93, 0x01, 0x0a, 0x2b, 0x6c, 0x69, 0x62, + 0x70, 0x32, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, + 0x73, 0x75, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0xdc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2e, 0x67, 0x6f, + 0x73, 0x73, 0x69, 0x70, 0x73, 0x75, 0x62, 0x2e, 0x65, 0x74, 0x68, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x2b, 0x4c, 0x49, 0x42, 0x50, 0x32, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, + 0x47, 0x4f, 0x53, 0x53, 0x49, 0x50, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x42, 0x06, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x6c, 0x0a, 0x0c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, + 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x01, + 0x12, 0x22, 0x0a, 0x1e, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x49, 0x45, + 0x4e, 0x54, 0x10, 0x02, 0x32, 0x58, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x67, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x78, 0x61, 0x74, 0x75, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, + 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, + 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x78, 0x61, 0x74, 0x75, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -16228,7 +17926,7 @@ func file_pkg_proto_xatu_event_ingester_proto_rawDescGZIP() []byte { } var file_pkg_proto_xatu_event_ingester_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_pkg_proto_xatu_event_ingester_proto_msgTypes = make([]protoimpl.MessageInfo, 140) +var file_pkg_proto_xatu_event_ingester_proto_msgTypes = make([]protoimpl.MessageInfo, 151) var file_pkg_proto_xatu_event_ingester_proto_goTypes = []any{ (EngineSource)(0), // 0: xatu.EngineSource (Event_Name)(0), // 1: xatu.Event.Name @@ -16303,212 +18001,233 @@ var file_pkg_proto_xatu_event_ingester_proto_goTypes = []any{ (*ClientMeta_AdditionalEthV2BeaconBlockBLSToExecutionChangeData)(nil), // 70: xatu.ClientMeta.AdditionalEthV2BeaconBlockBLSToExecutionChangeData (*ClientMeta_AdditionalEthV2BeaconBlockExecutionTransactionData)(nil), // 71: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData (*ClientMeta_AdditionalEthV2BeaconBlockWithdrawalData)(nil), // 72: xatu.ClientMeta.AdditionalEthV2BeaconBlockWithdrawalData - (*ClientMeta_AttestationDataSnapshot)(nil), // 73: xatu.ClientMeta.AttestationDataSnapshot - (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData)(nil), // 74: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData - (*ClientMeta_AdditionalEthV1EventsBlobSidecarData)(nil), // 75: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData - (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData)(nil), // 76: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData - (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData)(nil), // 77: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData - (*ClientMeta_AdditionalBeaconP2PAttestationData)(nil), // 78: xatu.ClientMeta.AdditionalBeaconP2PAttestationData - (*ClientMeta_AdditionalEthV1ProposerDutyData)(nil), // 79: xatu.ClientMeta.AdditionalEthV1ProposerDutyData - (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData)(nil), // 80: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData - (*ClientMeta_AdditionalLibP2PTraceAddPeerData)(nil), // 81: xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData - (*ClientMeta_AdditionalLibP2PTraceRemovePeerData)(nil), // 82: xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData - (*ClientMeta_AdditionalLibP2PTraceRecvRPCData)(nil), // 83: xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData - (*ClientMeta_AdditionalLibP2PTraceSendRPCData)(nil), // 84: xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData - (*ClientMeta_AdditionalLibP2PTraceDropRPCData)(nil), // 85: xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData)(nil), // 86: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData)(nil), // 87: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData)(nil), // 88: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData)(nil), // 89: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData)(nil), // 90: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData - (*ClientMeta_AdditionalLibP2PTraceJoinData)(nil), // 91: xatu.ClientMeta.AdditionalLibP2PTraceJoinData - (*ClientMeta_AdditionalLibP2PTraceLeaveData)(nil), // 92: xatu.ClientMeta.AdditionalLibP2PTraceLeaveData - (*ClientMeta_AdditionalLibP2PTraceGraftData)(nil), // 93: xatu.ClientMeta.AdditionalLibP2PTraceGraftData - (*ClientMeta_AdditionalLibP2PTracePruneData)(nil), // 94: xatu.ClientMeta.AdditionalLibP2PTracePruneData - (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData)(nil), // 95: xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData - (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData)(nil), // 96: xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData - (*ClientMeta_AdditionalLibP2PTracePublishMessageData)(nil), // 97: xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData - (*ClientMeta_AdditionalLibP2PTraceRejectMessageData)(nil), // 98: xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData - (*ClientMeta_AdditionalLibP2PTraceConnectedData)(nil), // 99: xatu.ClientMeta.AdditionalLibP2PTraceConnectedData - (*ClientMeta_AdditionalLibP2PTraceDisconnectedData)(nil), // 100: xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData - (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData)(nil), // 101: xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData - (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData)(nil), // 102: xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData - (*ClientMeta_AdditionalLibP2PTraceHandleStatusData)(nil), // 103: xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData - (*ClientMeta_AdditionalLibP2PTraceIdentifyData)(nil), // 104: xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData - (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData)(nil), // 105: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData)(nil), // 106: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData - (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData)(nil), // 107: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData - (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData)(nil), // 108: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData - (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData)(nil), // 109: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData - (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData)(nil), // 110: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData - (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData)(nil), // 111: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData - (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData)(nil), // 112: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData - (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData)(nil), // 113: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData - (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData)(nil), // 114: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData - (*ClientMeta_AdditionalEthV1ValidatorsData)(nil), // 115: xatu.ClientMeta.AdditionalEthV1ValidatorsData - (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData)(nil), // 116: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData - (*ClientMeta_AdditionalMevRelayPayloadDeliveredData)(nil), // 117: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData - (*ClientMeta_AdditionalEthV3ValidatorBlockData)(nil), // 118: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData - (*ClientMeta_AdditionalMevRelayValidatorRegistrationData)(nil), // 119: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData - (*ClientMeta_AdditionalNodeRecordConsensusData)(nil), // 120: xatu.ClientMeta.AdditionalNodeRecordConsensusData - (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData)(nil), // 121: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData - (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData)(nil), // 122: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData - (*ClientMeta_AdditionalEthV1BeaconBlobData)(nil), // 123: xatu.ClientMeta.AdditionalEthV1BeaconBlobData - (*ClientMeta_Ethereum_Network)(nil), // 124: xatu.ClientMeta.Ethereum.Network - (*ClientMeta_Ethereum_Execution)(nil), // 125: xatu.ClientMeta.Ethereum.Execution - (*ClientMeta_Ethereum_Consensus)(nil), // 126: xatu.ClientMeta.Ethereum.Consensus - (*ServerMeta_Event)(nil), // 127: xatu.ServerMeta.Event - (*ServerMeta_Geo)(nil), // 128: xatu.ServerMeta.Geo - (*ServerMeta_Client)(nil), // 129: xatu.ServerMeta.Client - (*ServerMeta_Peer)(nil), // 130: xatu.ServerMeta.Peer - (*ServerMeta_AdditionalBeaconP2PAttestationData)(nil), // 131: xatu.ServerMeta.AdditionalBeaconP2PAttestationData - (*ServerMeta_AdditionalLibp2PTraceConnectedData)(nil), // 132: xatu.ServerMeta.AdditionalLibp2PTraceConnectedData - (*ServerMeta_AdditionalLibp2PTraceDisconnectedData)(nil), // 133: xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData - (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData)(nil), // 134: xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData - (*ServerMeta_AdditionalLibp2PTraceIdentifyData)(nil), // 135: xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData - (*ServerMeta_AdditionalNodeRecordConsensusData)(nil), // 136: xatu.ServerMeta.AdditionalNodeRecordConsensusData - (*ServerMeta_AdditionalNodeRecordExecutionData)(nil), // 137: xatu.ServerMeta.AdditionalNodeRecordExecutionData - (*ExecutionBlockMetrics_StateReads)(nil), // 138: xatu.ExecutionBlockMetrics.StateReads - (*ExecutionBlockMetrics_StateWrites)(nil), // 139: xatu.ExecutionBlockMetrics.StateWrites - (*ExecutionBlockMetrics_CacheEntry)(nil), // 140: xatu.ExecutionBlockMetrics.CacheEntry - (*ExecutionBlockMetrics_CodeCacheEntry)(nil), // 141: xatu.ExecutionBlockMetrics.CodeCacheEntry - (*wrapperspb.UInt64Value)(nil), // 142: google.protobuf.UInt64Value - (*timestamppb.Timestamp)(nil), // 143: google.protobuf.Timestamp - (*v1.ForkChoice)(nil), // 144: xatu.eth.v1.ForkChoice - (*v1.EventChainReorg)(nil), // 145: xatu.eth.v1.EventChainReorg - (*v1.ForkChoiceV2)(nil), // 146: xatu.eth.v1.ForkChoiceV2 - (*v1.EventChainReorgV2)(nil), // 147: xatu.eth.v1.EventChainReorgV2 - (*v1.Validator)(nil), // 148: xatu.eth.v1.Validator - (*v1.SyncCommittee)(nil), // 149: xatu.eth.v1.SyncCommittee - (*wrapperspb.UInt32Value)(nil), // 150: google.protobuf.UInt32Value - (ModuleName)(0), // 151: xatu.ModuleName - (*wrapperspb.DoubleValue)(nil), // 152: google.protobuf.DoubleValue - (*v1.Attestation)(nil), // 153: xatu.eth.v1.Attestation - (*v1.EventBlock)(nil), // 154: xatu.eth.v1.EventBlock - (*v1.EventFinalizedCheckpoint)(nil), // 155: xatu.eth.v1.EventFinalizedCheckpoint - (*v1.EventHead)(nil), // 156: xatu.eth.v1.EventHead - (*v1.EventVoluntaryExit)(nil), // 157: xatu.eth.v1.EventVoluntaryExit - (*v1.EventContributionAndProof)(nil), // 158: xatu.eth.v1.EventContributionAndProof - (*v2.EventBlock)(nil), // 159: xatu.eth.v2.EventBlock - (*v1.Committee)(nil), // 160: xatu.eth.v1.Committee - (*v1.AttestationDataV2)(nil), // 161: xatu.eth.v1.AttestationDataV2 - (*v1.AttestationV2)(nil), // 162: xatu.eth.v1.AttestationV2 - (*v1.EventBlockV2)(nil), // 163: xatu.eth.v1.EventBlockV2 - (*v1.EventFinalizedCheckpointV2)(nil), // 164: xatu.eth.v1.EventFinalizedCheckpointV2 - (*v1.EventHeadV2)(nil), // 165: xatu.eth.v1.EventHeadV2 - (*v1.EventVoluntaryExitV2)(nil), // 166: xatu.eth.v1.EventVoluntaryExitV2 - (*v1.EventContributionAndProofV2)(nil), // 167: xatu.eth.v1.EventContributionAndProofV2 - (*v2.EventBlockV2)(nil), // 168: xatu.eth.v2.EventBlockV2 - (*v1.AttesterSlashingV2)(nil), // 169: xatu.eth.v1.AttesterSlashingV2 - (*v1.ProposerSlashingV2)(nil), // 170: xatu.eth.v1.ProposerSlashingV2 - (*v1.SignedVoluntaryExitV2)(nil), // 171: xatu.eth.v1.SignedVoluntaryExitV2 - (*v1.DepositV2)(nil), // 172: xatu.eth.v1.DepositV2 - (*v2.SignedBLSToExecutionChangeV2)(nil), // 173: xatu.eth.v2.SignedBLSToExecutionChangeV2 - (*v1.Transaction)(nil), // 174: xatu.eth.v1.Transaction - (*v1.WithdrawalV2)(nil), // 175: xatu.eth.v1.WithdrawalV2 - (*v1.EventBlobSidecar)(nil), // 176: xatu.eth.v1.EventBlobSidecar - (*v1.BlobSidecar)(nil), // 177: xatu.eth.v1.BlobSidecar - (*v1.ProposerDuty)(nil), // 178: xatu.eth.v1.ProposerDuty - (*v1.ElaboratedAttestation)(nil), // 179: xatu.eth.v1.ElaboratedAttestation - (*libp2p.AddPeer)(nil), // 180: xatu.libp2p.AddPeer - (*libp2p.RemovePeer)(nil), // 181: xatu.libp2p.RemovePeer - (*libp2p.RecvRPC)(nil), // 182: xatu.libp2p.RecvRPC - (*libp2p.SendRPC)(nil), // 183: xatu.libp2p.SendRPC - (*libp2p.Join)(nil), // 184: xatu.libp2p.Join - (*libp2p.Connected)(nil), // 185: xatu.libp2p.Connected - (*libp2p.Disconnected)(nil), // 186: xatu.libp2p.Disconnected - (*libp2p.HandleMetadata)(nil), // 187: xatu.libp2p.HandleMetadata - (*libp2p.HandleStatus)(nil), // 188: xatu.libp2p.HandleStatus - (*gossipsub.BeaconBlock)(nil), // 189: xatu.libp2p.gossipsub.eth.BeaconBlock - (*gossipsub.BlobSidecar)(nil), // 190: xatu.libp2p.gossipsub.eth.BlobSidecar - (*mevrelay.BidTrace)(nil), // 191: xatu.mevrelay.BidTrace - (*mevrelay.ProposerPayloadDelivered)(nil), // 192: xatu.mevrelay.ProposerPayloadDelivered - (*mevrelay.ValidatorRegistration)(nil), // 193: xatu.mevrelay.ValidatorRegistration - (*v1.EventBlockGossip)(nil), // 194: xatu.eth.v1.EventBlockGossip - (*libp2p.DropRPC)(nil), // 195: xatu.libp2p.DropRPC - (*libp2p.Leave)(nil), // 196: xatu.libp2p.Leave - (*libp2p.Graft)(nil), // 197: xatu.libp2p.Graft - (*libp2p.Prune)(nil), // 198: xatu.libp2p.Prune - (*libp2p.DuplicateMessage)(nil), // 199: xatu.libp2p.DuplicateMessage - (*libp2p.DeliverMessage)(nil), // 200: xatu.libp2p.DeliverMessage - (*libp2p.PublishMessage)(nil), // 201: xatu.libp2p.PublishMessage - (*libp2p.RejectMessage)(nil), // 202: xatu.libp2p.RejectMessage - (*libp2p.ControlIHaveMetaItem)(nil), // 203: xatu.libp2p.ControlIHaveMetaItem - (*libp2p.ControlIWantMetaItem)(nil), // 204: xatu.libp2p.ControlIWantMetaItem - (*libp2p.ControlIDontWantMetaItem)(nil), // 205: xatu.libp2p.ControlIDontWantMetaItem - (*libp2p.ControlGraftMetaItem)(nil), // 206: xatu.libp2p.ControlGraftMetaItem - (*libp2p.ControlPruneMetaItem)(nil), // 207: xatu.libp2p.ControlPruneMetaItem - (*libp2p.SubMetaItem)(nil), // 208: xatu.libp2p.SubMetaItem - (*libp2p.MessageMetaItem)(nil), // 209: xatu.libp2p.MessageMetaItem - (*noderecord.Consensus)(nil), // 210: xatu.noderecord.Consensus - (*noderecord.Execution)(nil), // 211: xatu.noderecord.Execution - (*v1.SignedAggregateAttestationAndProofV2)(nil), // 212: xatu.eth.v1.SignedAggregateAttestationAndProofV2 - (*v1.EventDataColumnSidecar)(nil), // 213: xatu.eth.v1.EventDataColumnSidecar - (*gossipsub.DataColumnSidecar)(nil), // 214: xatu.libp2p.gossipsub.eth.DataColumnSidecar - (*libp2p.SyntheticHeartbeat)(nil), // 215: xatu.libp2p.SyntheticHeartbeat - (*libp2p.Identify)(nil), // 216: xatu.libp2p.Identify - (*libp2p.DataColumnCustodyProbe)(nil), // 217: xatu.libp2p.DataColumnCustodyProbe - (*v1.Blob)(nil), // 218: xatu.eth.v1.Blob - (*libp2p.Peer)(nil), // 219: xatu.libp2p.Peer - (*wrapperspb.BoolValue)(nil), // 220: google.protobuf.BoolValue - (*libp2p.TraceEventMetadata)(nil), // 221: xatu.libp2p.TraceEventMetadata - (*wrapperspb.StringValue)(nil), // 222: google.protobuf.StringValue - (*mevrelay.Relay)(nil), // 223: xatu.mevrelay.Relay - (*wrapperspb.Int64Value)(nil), // 224: google.protobuf.Int64Value + (*ClientMeta_AdditionalEthV2BeaconBlockAccessListData)(nil), // 73: xatu.ClientMeta.AdditionalEthV2BeaconBlockAccessListData + (*ClientMeta_AdditionalEthV1EventsExecutionPayloadData)(nil), // 74: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadData + (*ClientMeta_AdditionalEthV1EventsPayloadAttestationData)(nil), // 75: xatu.ClientMeta.AdditionalEthV1EventsPayloadAttestationData + (*ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData)(nil), // 76: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadBidData + (*ClientMeta_AdditionalEthV1EventsProposerPreferencesData)(nil), // 77: xatu.ClientMeta.AdditionalEthV1EventsProposerPreferencesData + (*ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData)(nil), // 78: xatu.ClientMeta.AdditionalEthV2BeaconBlockPayloadAttestationData + (*ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData)(nil), // 79: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionPayloadBidData + (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData)(nil), // 80: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData + (*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData)(nil), // 81: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData + (*ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData)(nil), // 82: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData + (*ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData)(nil), // 83: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData + (*ClientMeta_AttestationDataSnapshot)(nil), // 84: xatu.ClientMeta.AttestationDataSnapshot + (*ClientMeta_AdditionalEthV1ValidatorAttestationDataData)(nil), // 85: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData + (*ClientMeta_AdditionalEthV1EventsBlobSidecarData)(nil), // 86: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData + (*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData)(nil), // 87: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData + (*ClientMeta_AdditionalEthV1BeaconBlobSidecarData)(nil), // 88: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData + (*ClientMeta_AdditionalBeaconP2PAttestationData)(nil), // 89: xatu.ClientMeta.AdditionalBeaconP2PAttestationData + (*ClientMeta_AdditionalEthV1ProposerDutyData)(nil), // 90: xatu.ClientMeta.AdditionalEthV1ProposerDutyData + (*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData)(nil), // 91: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData + (*ClientMeta_AdditionalLibP2PTraceAddPeerData)(nil), // 92: xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData + (*ClientMeta_AdditionalLibP2PTraceRemovePeerData)(nil), // 93: xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData + (*ClientMeta_AdditionalLibP2PTraceRecvRPCData)(nil), // 94: xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData + (*ClientMeta_AdditionalLibP2PTraceSendRPCData)(nil), // 95: xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData + (*ClientMeta_AdditionalLibP2PTraceDropRPCData)(nil), // 96: xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData)(nil), // 97: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData)(nil), // 98: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData)(nil), // 99: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData)(nil), // 100: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData)(nil), // 101: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData + (*ClientMeta_AdditionalLibP2PTraceJoinData)(nil), // 102: xatu.ClientMeta.AdditionalLibP2PTraceJoinData + (*ClientMeta_AdditionalLibP2PTraceLeaveData)(nil), // 103: xatu.ClientMeta.AdditionalLibP2PTraceLeaveData + (*ClientMeta_AdditionalLibP2PTraceGraftData)(nil), // 104: xatu.ClientMeta.AdditionalLibP2PTraceGraftData + (*ClientMeta_AdditionalLibP2PTracePruneData)(nil), // 105: xatu.ClientMeta.AdditionalLibP2PTracePruneData + (*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData)(nil), // 106: xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData + (*ClientMeta_AdditionalLibP2PTraceDeliverMessageData)(nil), // 107: xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData + (*ClientMeta_AdditionalLibP2PTracePublishMessageData)(nil), // 108: xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData + (*ClientMeta_AdditionalLibP2PTraceRejectMessageData)(nil), // 109: xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData + (*ClientMeta_AdditionalLibP2PTraceConnectedData)(nil), // 110: xatu.ClientMeta.AdditionalLibP2PTraceConnectedData + (*ClientMeta_AdditionalLibP2PTraceDisconnectedData)(nil), // 111: xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData + (*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData)(nil), // 112: xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData + (*ClientMeta_AdditionalLibP2PTraceHandleMetadataData)(nil), // 113: xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData + (*ClientMeta_AdditionalLibP2PTraceHandleStatusData)(nil), // 114: xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData + (*ClientMeta_AdditionalLibP2PTraceIdentifyData)(nil), // 115: xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData + (*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData)(nil), // 116: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData)(nil), // 117: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData + (*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData)(nil), // 118: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData + (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData)(nil), // 119: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData + (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData)(nil), // 120: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData + (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData)(nil), // 121: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData + (*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData)(nil), // 122: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData + (*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData)(nil), // 123: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData + (*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData)(nil), // 124: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData + (*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData)(nil), // 125: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData + (*ClientMeta_AdditionalEthV1ValidatorsData)(nil), // 126: xatu.ClientMeta.AdditionalEthV1ValidatorsData + (*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData)(nil), // 127: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData + (*ClientMeta_AdditionalMevRelayPayloadDeliveredData)(nil), // 128: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData + (*ClientMeta_AdditionalEthV3ValidatorBlockData)(nil), // 129: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData + (*ClientMeta_AdditionalMevRelayValidatorRegistrationData)(nil), // 130: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData + (*ClientMeta_AdditionalNodeRecordConsensusData)(nil), // 131: xatu.ClientMeta.AdditionalNodeRecordConsensusData + (*ClientMeta_AdditionalConsensusEngineAPINewPayloadData)(nil), // 132: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData + (*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData)(nil), // 133: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData + (*ClientMeta_AdditionalEthV1BeaconBlobData)(nil), // 134: xatu.ClientMeta.AdditionalEthV1BeaconBlobData + (*ClientMeta_Ethereum_Network)(nil), // 135: xatu.ClientMeta.Ethereum.Network + (*ClientMeta_Ethereum_Execution)(nil), // 136: xatu.ClientMeta.Ethereum.Execution + (*ClientMeta_Ethereum_Consensus)(nil), // 137: xatu.ClientMeta.Ethereum.Consensus + (*ServerMeta_Event)(nil), // 138: xatu.ServerMeta.Event + (*ServerMeta_Geo)(nil), // 139: xatu.ServerMeta.Geo + (*ServerMeta_Client)(nil), // 140: xatu.ServerMeta.Client + (*ServerMeta_Peer)(nil), // 141: xatu.ServerMeta.Peer + (*ServerMeta_AdditionalBeaconP2PAttestationData)(nil), // 142: xatu.ServerMeta.AdditionalBeaconP2PAttestationData + (*ServerMeta_AdditionalLibp2PTraceConnectedData)(nil), // 143: xatu.ServerMeta.AdditionalLibp2PTraceConnectedData + (*ServerMeta_AdditionalLibp2PTraceDisconnectedData)(nil), // 144: xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData + (*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData)(nil), // 145: xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData + (*ServerMeta_AdditionalLibp2PTraceIdentifyData)(nil), // 146: xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData + (*ServerMeta_AdditionalNodeRecordConsensusData)(nil), // 147: xatu.ServerMeta.AdditionalNodeRecordConsensusData + (*ServerMeta_AdditionalNodeRecordExecutionData)(nil), // 148: xatu.ServerMeta.AdditionalNodeRecordExecutionData + (*ExecutionBlockMetrics_StateReads)(nil), // 149: xatu.ExecutionBlockMetrics.StateReads + (*ExecutionBlockMetrics_StateWrites)(nil), // 150: xatu.ExecutionBlockMetrics.StateWrites + (*ExecutionBlockMetrics_CacheEntry)(nil), // 151: xatu.ExecutionBlockMetrics.CacheEntry + (*ExecutionBlockMetrics_CodeCacheEntry)(nil), // 152: xatu.ExecutionBlockMetrics.CodeCacheEntry + (*wrapperspb.UInt64Value)(nil), // 153: google.protobuf.UInt64Value + (*timestamppb.Timestamp)(nil), // 154: google.protobuf.Timestamp + (*v1.ForkChoice)(nil), // 155: xatu.eth.v1.ForkChoice + (*v1.EventChainReorg)(nil), // 156: xatu.eth.v1.EventChainReorg + (*v1.ForkChoiceV2)(nil), // 157: xatu.eth.v1.ForkChoiceV2 + (*v1.EventChainReorgV2)(nil), // 158: xatu.eth.v1.EventChainReorgV2 + (*v1.Validator)(nil), // 159: xatu.eth.v1.Validator + (*v1.SyncCommittee)(nil), // 160: xatu.eth.v1.SyncCommittee + (*wrapperspb.UInt32Value)(nil), // 161: google.protobuf.UInt32Value + (ModuleName)(0), // 162: xatu.ModuleName + (*wrapperspb.DoubleValue)(nil), // 163: google.protobuf.DoubleValue + (*v1.Attestation)(nil), // 164: xatu.eth.v1.Attestation + (*v1.EventBlock)(nil), // 165: xatu.eth.v1.EventBlock + (*v1.EventFinalizedCheckpoint)(nil), // 166: xatu.eth.v1.EventFinalizedCheckpoint + (*v1.EventHead)(nil), // 167: xatu.eth.v1.EventHead + (*v1.EventVoluntaryExit)(nil), // 168: xatu.eth.v1.EventVoluntaryExit + (*v1.EventContributionAndProof)(nil), // 169: xatu.eth.v1.EventContributionAndProof + (*v2.EventBlock)(nil), // 170: xatu.eth.v2.EventBlock + (*v1.Committee)(nil), // 171: xatu.eth.v1.Committee + (*v1.AttestationDataV2)(nil), // 172: xatu.eth.v1.AttestationDataV2 + (*v1.AttestationV2)(nil), // 173: xatu.eth.v1.AttestationV2 + (*v1.EventBlockV2)(nil), // 174: xatu.eth.v1.EventBlockV2 + (*v1.EventFinalizedCheckpointV2)(nil), // 175: xatu.eth.v1.EventFinalizedCheckpointV2 + (*v1.EventHeadV2)(nil), // 176: xatu.eth.v1.EventHeadV2 + (*v1.EventVoluntaryExitV2)(nil), // 177: xatu.eth.v1.EventVoluntaryExitV2 + (*v1.EventContributionAndProofV2)(nil), // 178: xatu.eth.v1.EventContributionAndProofV2 + (*v2.EventBlockV2)(nil), // 179: xatu.eth.v2.EventBlockV2 + (*v1.AttesterSlashingV2)(nil), // 180: xatu.eth.v1.AttesterSlashingV2 + (*v1.ProposerSlashingV2)(nil), // 181: xatu.eth.v1.ProposerSlashingV2 + (*v1.SignedVoluntaryExitV2)(nil), // 182: xatu.eth.v1.SignedVoluntaryExitV2 + (*v1.DepositV2)(nil), // 183: xatu.eth.v1.DepositV2 + (*v2.SignedBLSToExecutionChangeV2)(nil), // 184: xatu.eth.v2.SignedBLSToExecutionChangeV2 + (*v1.Transaction)(nil), // 185: xatu.eth.v1.Transaction + (*v1.WithdrawalV2)(nil), // 186: xatu.eth.v1.WithdrawalV2 + (*v1.EventBlobSidecar)(nil), // 187: xatu.eth.v1.EventBlobSidecar + (*v1.BlobSidecar)(nil), // 188: xatu.eth.v1.BlobSidecar + (*v1.ProposerDuty)(nil), // 189: xatu.eth.v1.ProposerDuty + (*v1.ElaboratedAttestation)(nil), // 190: xatu.eth.v1.ElaboratedAttestation + (*libp2p.AddPeer)(nil), // 191: xatu.libp2p.AddPeer + (*libp2p.RemovePeer)(nil), // 192: xatu.libp2p.RemovePeer + (*libp2p.RecvRPC)(nil), // 193: xatu.libp2p.RecvRPC + (*libp2p.SendRPC)(nil), // 194: xatu.libp2p.SendRPC + (*libp2p.Join)(nil), // 195: xatu.libp2p.Join + (*libp2p.Connected)(nil), // 196: xatu.libp2p.Connected + (*libp2p.Disconnected)(nil), // 197: xatu.libp2p.Disconnected + (*libp2p.HandleMetadata)(nil), // 198: xatu.libp2p.HandleMetadata + (*libp2p.HandleStatus)(nil), // 199: xatu.libp2p.HandleStatus + (*gossipsub.BeaconBlock)(nil), // 200: xatu.libp2p.gossipsub.eth.BeaconBlock + (*gossipsub.BlobSidecar)(nil), // 201: xatu.libp2p.gossipsub.eth.BlobSidecar + (*mevrelay.BidTrace)(nil), // 202: xatu.mevrelay.BidTrace + (*mevrelay.ProposerPayloadDelivered)(nil), // 203: xatu.mevrelay.ProposerPayloadDelivered + (*mevrelay.ValidatorRegistration)(nil), // 204: xatu.mevrelay.ValidatorRegistration + (*v1.EventBlockGossip)(nil), // 205: xatu.eth.v1.EventBlockGossip + (*libp2p.DropRPC)(nil), // 206: xatu.libp2p.DropRPC + (*libp2p.Leave)(nil), // 207: xatu.libp2p.Leave + (*libp2p.Graft)(nil), // 208: xatu.libp2p.Graft + (*libp2p.Prune)(nil), // 209: xatu.libp2p.Prune + (*libp2p.DuplicateMessage)(nil), // 210: xatu.libp2p.DuplicateMessage + (*libp2p.DeliverMessage)(nil), // 211: xatu.libp2p.DeliverMessage + (*libp2p.PublishMessage)(nil), // 212: xatu.libp2p.PublishMessage + (*libp2p.RejectMessage)(nil), // 213: xatu.libp2p.RejectMessage + (*libp2p.ControlIHaveMetaItem)(nil), // 214: xatu.libp2p.ControlIHaveMetaItem + (*libp2p.ControlIWantMetaItem)(nil), // 215: xatu.libp2p.ControlIWantMetaItem + (*libp2p.ControlIDontWantMetaItem)(nil), // 216: xatu.libp2p.ControlIDontWantMetaItem + (*libp2p.ControlGraftMetaItem)(nil), // 217: xatu.libp2p.ControlGraftMetaItem + (*libp2p.ControlPruneMetaItem)(nil), // 218: xatu.libp2p.ControlPruneMetaItem + (*libp2p.SubMetaItem)(nil), // 219: xatu.libp2p.SubMetaItem + (*libp2p.MessageMetaItem)(nil), // 220: xatu.libp2p.MessageMetaItem + (*noderecord.Consensus)(nil), // 221: xatu.noderecord.Consensus + (*noderecord.Execution)(nil), // 222: xatu.noderecord.Execution + (*v1.SignedAggregateAttestationAndProofV2)(nil), // 223: xatu.eth.v1.SignedAggregateAttestationAndProofV2 + (*v1.EventDataColumnSidecar)(nil), // 224: xatu.eth.v1.EventDataColumnSidecar + (*gossipsub.DataColumnSidecar)(nil), // 225: xatu.libp2p.gossipsub.eth.DataColumnSidecar + (*libp2p.SyntheticHeartbeat)(nil), // 226: xatu.libp2p.SyntheticHeartbeat + (*libp2p.Identify)(nil), // 227: xatu.libp2p.Identify + (*libp2p.DataColumnCustodyProbe)(nil), // 228: xatu.libp2p.DataColumnCustodyProbe + (*v1.Blob)(nil), // 229: xatu.eth.v1.Blob + (*v1.BlockAccessListChange)(nil), // 230: xatu.eth.v1.BlockAccessListChange + (*v1.SignedExecutionPayloadEnvelope)(nil), // 231: xatu.eth.v1.SignedExecutionPayloadEnvelope + (*v1.PayloadAttestationMessage)(nil), // 232: xatu.eth.v1.PayloadAttestationMessage + (*v1.SignedExecutionPayloadBid)(nil), // 233: xatu.eth.v1.SignedExecutionPayloadBid + (*v1.SignedProposerPreferences)(nil), // 234: xatu.eth.v1.SignedProposerPreferences + (*v1.PayloadAttestation)(nil), // 235: xatu.eth.v1.PayloadAttestation + (*gossipsub.ExecutionPayloadEnvelope)(nil), // 236: xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope + (*gossipsub.ExecutionPayloadBid)(nil), // 237: xatu.libp2p.gossipsub.eth.ExecutionPayloadBid + (*gossipsub.PayloadAttestationMessage)(nil), // 238: xatu.libp2p.gossipsub.eth.PayloadAttestationMessage + (*gossipsub.ProposerPreferences)(nil), // 239: xatu.libp2p.gossipsub.eth.ProposerPreferences + (*libp2p.TraceEventMetadata)(nil), // 240: xatu.libp2p.TraceEventMetadata + (*wrapperspb.StringValue)(nil), // 241: google.protobuf.StringValue + (*libp2p.Peer)(nil), // 242: xatu.libp2p.Peer + (*wrapperspb.BoolValue)(nil), // 243: google.protobuf.BoolValue + (*mevrelay.Relay)(nil), // 244: xatu.mevrelay.Relay + (*wrapperspb.Int64Value)(nil), // 245: google.protobuf.Int64Value } var file_pkg_proto_xatu_event_ingester_proto_depIdxs = []int32{ 29, // 0: xatu.CreateEventsRequest.events:type_name -> xatu.DecoratedEvent - 142, // 1: xatu.CreateEventsResponse.events_ingested:type_name -> google.protobuf.UInt64Value - 143, // 2: xatu.Epoch.start_date_time:type_name -> google.protobuf.Timestamp - 142, // 3: xatu.EpochV2.number:type_name -> google.protobuf.UInt64Value - 143, // 4: xatu.EpochV2.start_date_time:type_name -> google.protobuf.Timestamp - 143, // 5: xatu.Slot.start_date_time:type_name -> google.protobuf.Timestamp - 142, // 6: xatu.SlotV2.number:type_name -> google.protobuf.UInt64Value - 143, // 7: xatu.SlotV2.start_date_time:type_name -> google.protobuf.Timestamp - 142, // 8: xatu.PropagationV2.slot_start_diff:type_name -> google.protobuf.UInt64Value - 142, // 9: xatu.AttestingValidatorV2.committee_index:type_name -> google.protobuf.UInt64Value - 142, // 10: xatu.AttestingValidatorV2.index:type_name -> google.protobuf.UInt64Value - 144, // 11: xatu.DebugForkChoiceReorg.before:type_name -> xatu.eth.v1.ForkChoice - 144, // 12: xatu.DebugForkChoiceReorg.after:type_name -> xatu.eth.v1.ForkChoice - 145, // 13: xatu.DebugForkChoiceReorg.event:type_name -> xatu.eth.v1.EventChainReorg - 146, // 14: xatu.DebugForkChoiceReorgV2.before:type_name -> xatu.eth.v1.ForkChoiceV2 - 146, // 15: xatu.DebugForkChoiceReorgV2.after:type_name -> xatu.eth.v1.ForkChoiceV2 - 147, // 16: xatu.DebugForkChoiceReorgV2.event:type_name -> xatu.eth.v1.EventChainReorgV2 - 148, // 17: xatu.Validators.validators:type_name -> xatu.eth.v1.Validator - 149, // 18: xatu.SyncCommitteeData.sync_committee:type_name -> xatu.eth.v1.SyncCommittee - 142, // 19: xatu.SyncAggregateData.validators_participated:type_name -> google.protobuf.UInt64Value - 142, // 20: xatu.SyncAggregateData.validators_missed:type_name -> google.protobuf.UInt64Value - 142, // 21: xatu.SyncAggregateData.participation_count:type_name -> google.protobuf.UInt64Value + 153, // 1: xatu.CreateEventsResponse.events_ingested:type_name -> google.protobuf.UInt64Value + 154, // 2: xatu.Epoch.start_date_time:type_name -> google.protobuf.Timestamp + 153, // 3: xatu.EpochV2.number:type_name -> google.protobuf.UInt64Value + 154, // 4: xatu.EpochV2.start_date_time:type_name -> google.protobuf.Timestamp + 154, // 5: xatu.Slot.start_date_time:type_name -> google.protobuf.Timestamp + 153, // 6: xatu.SlotV2.number:type_name -> google.protobuf.UInt64Value + 154, // 7: xatu.SlotV2.start_date_time:type_name -> google.protobuf.Timestamp + 153, // 8: xatu.PropagationV2.slot_start_diff:type_name -> google.protobuf.UInt64Value + 153, // 9: xatu.AttestingValidatorV2.committee_index:type_name -> google.protobuf.UInt64Value + 153, // 10: xatu.AttestingValidatorV2.index:type_name -> google.protobuf.UInt64Value + 155, // 11: xatu.DebugForkChoiceReorg.before:type_name -> xatu.eth.v1.ForkChoice + 155, // 12: xatu.DebugForkChoiceReorg.after:type_name -> xatu.eth.v1.ForkChoice + 156, // 13: xatu.DebugForkChoiceReorg.event:type_name -> xatu.eth.v1.EventChainReorg + 157, // 14: xatu.DebugForkChoiceReorgV2.before:type_name -> xatu.eth.v1.ForkChoiceV2 + 157, // 15: xatu.DebugForkChoiceReorgV2.after:type_name -> xatu.eth.v1.ForkChoiceV2 + 158, // 16: xatu.DebugForkChoiceReorgV2.event:type_name -> xatu.eth.v1.EventChainReorgV2 + 159, // 17: xatu.Validators.validators:type_name -> xatu.eth.v1.Validator + 160, // 18: xatu.SyncCommitteeData.sync_committee:type_name -> xatu.eth.v1.SyncCommittee + 153, // 19: xatu.SyncAggregateData.validators_participated:type_name -> google.protobuf.UInt64Value + 153, // 20: xatu.SyncAggregateData.validators_missed:type_name -> google.protobuf.UInt64Value + 153, // 21: xatu.SyncAggregateData.participation_count:type_name -> google.protobuf.UInt64Value 5, // 22: xatu.BlockIdentifier.epoch:type_name -> xatu.EpochV2 7, // 23: xatu.BlockIdentifier.slot:type_name -> xatu.SlotV2 - 143, // 24: xatu.ConsensusEngineAPINewPayload.requested_at:type_name -> google.protobuf.Timestamp - 142, // 25: xatu.ConsensusEngineAPINewPayload.duration_ms:type_name -> google.protobuf.UInt64Value - 142, // 26: xatu.ConsensusEngineAPINewPayload.slot:type_name -> google.protobuf.UInt64Value - 142, // 27: xatu.ConsensusEngineAPINewPayload.proposer_index:type_name -> google.protobuf.UInt64Value - 142, // 28: xatu.ConsensusEngineAPINewPayload.block_number:type_name -> google.protobuf.UInt64Value - 142, // 29: xatu.ConsensusEngineAPINewPayload.gas_used:type_name -> google.protobuf.UInt64Value - 142, // 30: xatu.ConsensusEngineAPINewPayload.gas_limit:type_name -> google.protobuf.UInt64Value - 150, // 31: xatu.ConsensusEngineAPINewPayload.tx_count:type_name -> google.protobuf.UInt32Value - 150, // 32: xatu.ConsensusEngineAPINewPayload.blob_count:type_name -> google.protobuf.UInt32Value - 143, // 33: xatu.ConsensusEngineAPIGetBlobs.requested_at:type_name -> google.protobuf.Timestamp - 142, // 34: xatu.ConsensusEngineAPIGetBlobs.duration_ms:type_name -> google.protobuf.UInt64Value - 142, // 35: xatu.ConsensusEngineAPIGetBlobs.slot:type_name -> google.protobuf.UInt64Value - 150, // 36: xatu.ConsensusEngineAPIGetBlobs.requested_count:type_name -> google.protobuf.UInt32Value - 150, // 37: xatu.ConsensusEngineAPIGetBlobs.returned_count:type_name -> google.protobuf.UInt32Value + 154, // 24: xatu.ConsensusEngineAPINewPayload.requested_at:type_name -> google.protobuf.Timestamp + 153, // 25: xatu.ConsensusEngineAPINewPayload.duration_ms:type_name -> google.protobuf.UInt64Value + 153, // 26: xatu.ConsensusEngineAPINewPayload.slot:type_name -> google.protobuf.UInt64Value + 153, // 27: xatu.ConsensusEngineAPINewPayload.proposer_index:type_name -> google.protobuf.UInt64Value + 153, // 28: xatu.ConsensusEngineAPINewPayload.block_number:type_name -> google.protobuf.UInt64Value + 153, // 29: xatu.ConsensusEngineAPINewPayload.gas_used:type_name -> google.protobuf.UInt64Value + 153, // 30: xatu.ConsensusEngineAPINewPayload.gas_limit:type_name -> google.protobuf.UInt64Value + 161, // 31: xatu.ConsensusEngineAPINewPayload.tx_count:type_name -> google.protobuf.UInt32Value + 161, // 32: xatu.ConsensusEngineAPINewPayload.blob_count:type_name -> google.protobuf.UInt32Value + 154, // 33: xatu.ConsensusEngineAPIGetBlobs.requested_at:type_name -> google.protobuf.Timestamp + 153, // 34: xatu.ConsensusEngineAPIGetBlobs.duration_ms:type_name -> google.protobuf.UInt64Value + 153, // 35: xatu.ConsensusEngineAPIGetBlobs.slot:type_name -> google.protobuf.UInt64Value + 161, // 36: xatu.ConsensusEngineAPIGetBlobs.requested_count:type_name -> google.protobuf.UInt32Value + 161, // 37: xatu.ConsensusEngineAPIGetBlobs.returned_count:type_name -> google.protobuf.UInt32Value 0, // 38: xatu.ExecutionEngineNewPayload.source:type_name -> xatu.EngineSource - 143, // 39: xatu.ExecutionEngineNewPayload.requested_at:type_name -> google.protobuf.Timestamp - 142, // 40: xatu.ExecutionEngineNewPayload.duration_ms:type_name -> google.protobuf.UInt64Value - 142, // 41: xatu.ExecutionEngineNewPayload.block_number:type_name -> google.protobuf.UInt64Value - 142, // 42: xatu.ExecutionEngineNewPayload.gas_used:type_name -> google.protobuf.UInt64Value - 142, // 43: xatu.ExecutionEngineNewPayload.gas_limit:type_name -> google.protobuf.UInt64Value - 150, // 44: xatu.ExecutionEngineNewPayload.tx_count:type_name -> google.protobuf.UInt32Value - 150, // 45: xatu.ExecutionEngineNewPayload.blob_count:type_name -> google.protobuf.UInt32Value + 154, // 39: xatu.ExecutionEngineNewPayload.requested_at:type_name -> google.protobuf.Timestamp + 153, // 40: xatu.ExecutionEngineNewPayload.duration_ms:type_name -> google.protobuf.UInt64Value + 153, // 41: xatu.ExecutionEngineNewPayload.block_number:type_name -> google.protobuf.UInt64Value + 153, // 42: xatu.ExecutionEngineNewPayload.gas_used:type_name -> google.protobuf.UInt64Value + 153, // 43: xatu.ExecutionEngineNewPayload.gas_limit:type_name -> google.protobuf.UInt64Value + 161, // 44: xatu.ExecutionEngineNewPayload.tx_count:type_name -> google.protobuf.UInt32Value + 161, // 45: xatu.ExecutionEngineNewPayload.blob_count:type_name -> google.protobuf.UInt32Value 0, // 46: xatu.ExecutionEngineGetBlobs.source:type_name -> xatu.EngineSource - 143, // 47: xatu.ExecutionEngineGetBlobs.requested_at:type_name -> google.protobuf.Timestamp - 142, // 48: xatu.ExecutionEngineGetBlobs.duration_ms:type_name -> google.protobuf.UInt64Value - 150, // 49: xatu.ExecutionEngineGetBlobs.requested_count:type_name -> google.protobuf.UInt32Value - 150, // 50: xatu.ExecutionEngineGetBlobs.returned_count:type_name -> google.protobuf.UInt32Value - 150, // 51: xatu.ExecutionEngineGetBlobs.returned_blob_indexes:type_name -> google.protobuf.UInt32Value + 154, // 47: xatu.ExecutionEngineGetBlobs.requested_at:type_name -> google.protobuf.Timestamp + 153, // 48: xatu.ExecutionEngineGetBlobs.duration_ms:type_name -> google.protobuf.UInt64Value + 161, // 49: xatu.ExecutionEngineGetBlobs.requested_count:type_name -> google.protobuf.UInt32Value + 161, // 50: xatu.ExecutionEngineGetBlobs.returned_count:type_name -> google.protobuf.UInt32Value + 161, // 51: xatu.ExecutionEngineGetBlobs.returned_blob_indexes:type_name -> google.protobuf.UInt32Value 30, // 52: xatu.ClientMeta.ethereum:type_name -> xatu.ClientMeta.Ethereum 31, // 53: xatu.ClientMeta.labels:type_name -> xatu.ClientMeta.LabelsEntry 36, // 54: xatu.ClientMeta.eth_v1_events_attestation:type_name -> xatu.ClientMeta.AdditionalEthV1EventsAttestationData @@ -16523,7 +18242,7 @@ var file_pkg_proto_xatu_event_ingester_proto_depIdxs = []int32{ 55, // 63: xatu.ClientMeta.eth_v1_debug_fork_choice:type_name -> xatu.ClientMeta.AdditionalEthV1DebugForkChoiceData 57, // 64: xatu.ClientMeta.eth_v1_debug_fork_choice_reorg:type_name -> xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgData 59, // 65: xatu.ClientMeta.eth_v1_beacon_committee:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconCommitteeData - 74, // 66: xatu.ClientMeta.eth_v1_validator_attestation_data:type_name -> xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData + 85, // 66: xatu.ClientMeta.eth_v1_validator_attestation_data:type_name -> xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData 37, // 67: xatu.ClientMeta.eth_v1_events_attestation_v2:type_name -> xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data 39, // 68: xatu.ClientMeta.eth_v1_events_head_v2:type_name -> xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data 41, // 69: xatu.ClientMeta.eth_v1_events_block_v2:type_name -> xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data @@ -16542,457 +18261,531 @@ var file_pkg_proto_xatu_event_ingester_proto_depIdxs = []int32{ 70, // 82: xatu.ClientMeta.eth_v2_beacon_block_bls_to_execution_change:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockBLSToExecutionChangeData 71, // 83: xatu.ClientMeta.eth_v2_beacon_block_execution_transaction:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData 72, // 84: xatu.ClientMeta.eth_v2_beacon_block_withdrawal:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockWithdrawalData - 75, // 85: xatu.ClientMeta.eth_v1_events_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData - 77, // 86: xatu.ClientMeta.eth_v1_beacon_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData - 78, // 87: xatu.ClientMeta.beacon_p2p_attestation:type_name -> xatu.ClientMeta.AdditionalBeaconP2PAttestationData - 79, // 88: xatu.ClientMeta.eth_v1_proposer_duty:type_name -> xatu.ClientMeta.AdditionalEthV1ProposerDutyData - 80, // 89: xatu.ClientMeta.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData - 81, // 90: xatu.ClientMeta.libp2p_trace_add_peer:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData - 82, // 91: xatu.ClientMeta.libp2p_trace_remove_peer:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData - 83, // 92: xatu.ClientMeta.libp2p_trace_recv_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData - 84, // 93: xatu.ClientMeta.libp2p_trace_send_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData - 91, // 94: xatu.ClientMeta.libp2p_trace_join:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceJoinData - 99, // 95: xatu.ClientMeta.libp2p_trace_connected:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceConnectedData - 100, // 96: xatu.ClientMeta.libp2p_trace_disconnected:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData - 102, // 97: xatu.ClientMeta.libp2p_trace_handle_metadata:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData - 103, // 98: xatu.ClientMeta.libp2p_trace_handle_status:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData - 108, // 99: xatu.ClientMeta.libp2p_trace_gossipsub_beacon_block:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData - 111, // 100: xatu.ClientMeta.libp2p_trace_gossipsub_beacon_attestation:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData - 113, // 101: xatu.ClientMeta.libp2p_trace_gossipsub_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData - 115, // 102: xatu.ClientMeta.eth_v1_validators:type_name -> xatu.ClientMeta.AdditionalEthV1ValidatorsData - 116, // 103: xatu.ClientMeta.mev_relay_bid_trace_builder_block_submission:type_name -> xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData - 117, // 104: xatu.ClientMeta.mev_relay_payload_delivered:type_name -> xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData - 118, // 105: xatu.ClientMeta.eth_v3_validator_block:type_name -> xatu.ClientMeta.AdditionalEthV3ValidatorBlockData - 119, // 106: xatu.ClientMeta.mev_relay_validator_registration:type_name -> xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData + 86, // 85: xatu.ClientMeta.eth_v1_events_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData + 88, // 86: xatu.ClientMeta.eth_v1_beacon_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData + 89, // 87: xatu.ClientMeta.beacon_p2p_attestation:type_name -> xatu.ClientMeta.AdditionalBeaconP2PAttestationData + 90, // 88: xatu.ClientMeta.eth_v1_proposer_duty:type_name -> xatu.ClientMeta.AdditionalEthV1ProposerDutyData + 91, // 89: xatu.ClientMeta.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData + 92, // 90: xatu.ClientMeta.libp2p_trace_add_peer:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData + 93, // 91: xatu.ClientMeta.libp2p_trace_remove_peer:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData + 94, // 92: xatu.ClientMeta.libp2p_trace_recv_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData + 95, // 93: xatu.ClientMeta.libp2p_trace_send_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData + 102, // 94: xatu.ClientMeta.libp2p_trace_join:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceJoinData + 110, // 95: xatu.ClientMeta.libp2p_trace_connected:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceConnectedData + 111, // 96: xatu.ClientMeta.libp2p_trace_disconnected:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData + 113, // 97: xatu.ClientMeta.libp2p_trace_handle_metadata:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData + 114, // 98: xatu.ClientMeta.libp2p_trace_handle_status:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData + 119, // 99: xatu.ClientMeta.libp2p_trace_gossipsub_beacon_block:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData + 122, // 100: xatu.ClientMeta.libp2p_trace_gossipsub_beacon_attestation:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData + 124, // 101: xatu.ClientMeta.libp2p_trace_gossipsub_blob_sidecar:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData + 126, // 102: xatu.ClientMeta.eth_v1_validators:type_name -> xatu.ClientMeta.AdditionalEthV1ValidatorsData + 127, // 103: xatu.ClientMeta.mev_relay_bid_trace_builder_block_submission:type_name -> xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData + 128, // 104: xatu.ClientMeta.mev_relay_payload_delivered:type_name -> xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData + 129, // 105: xatu.ClientMeta.eth_v3_validator_block:type_name -> xatu.ClientMeta.AdditionalEthV3ValidatorBlockData + 130, // 106: xatu.ClientMeta.mev_relay_validator_registration:type_name -> xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData 42, // 107: xatu.ClientMeta.eth_v1_events_block_gossip:type_name -> xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData - 85, // 108: xatu.ClientMeta.libp2p_trace_drop_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData - 92, // 109: xatu.ClientMeta.libp2p_trace_leave:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceLeaveData - 93, // 110: xatu.ClientMeta.libp2p_trace_graft:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGraftData - 94, // 111: xatu.ClientMeta.libp2p_trace_prune:type_name -> xatu.ClientMeta.AdditionalLibP2PTracePruneData - 95, // 112: xatu.ClientMeta.libp2p_trace_duplicate_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData - 96, // 113: xatu.ClientMeta.libp2p_trace_deliver_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData - 97, // 114: xatu.ClientMeta.libp2p_trace_publish_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData - 98, // 115: xatu.ClientMeta.libp2p_trace_reject_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData - 86, // 116: xatu.ClientMeta.libp2p_trace_rpc_meta_control_ihave:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData - 87, // 117: xatu.ClientMeta.libp2p_trace_rpc_meta_control_iwant:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData - 88, // 118: xatu.ClientMeta.libp2p_trace_rpc_meta_control_idontwant:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData - 89, // 119: xatu.ClientMeta.libp2p_trace_rpc_meta_control_graft:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData - 90, // 120: xatu.ClientMeta.libp2p_trace_rpc_meta_control_prune:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData - 106, // 121: xatu.ClientMeta.libp2p_trace_rpc_meta_subscription:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData - 107, // 122: xatu.ClientMeta.libp2p_trace_rpc_meta_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData - 120, // 123: xatu.ClientMeta.node_record_consensus:type_name -> xatu.ClientMeta.AdditionalNodeRecordConsensusData - 112, // 124: xatu.ClientMeta.libp2p_trace_gossipsub_aggregate_and_proof:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData - 76, // 125: xatu.ClientMeta.eth_v1_events_data_column_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData - 114, // 126: xatu.ClientMeta.libp2p_trace_gossipsub_data_column_sidecar:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData - 101, // 127: xatu.ClientMeta.libp2p_trace_synthetic_heartbeat:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData - 105, // 128: xatu.ClientMeta.libp2p_trace_rpc_data_column_custody_probe:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData - 121, // 129: xatu.ClientMeta.consensus_engine_api_new_payload:type_name -> xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData - 122, // 130: xatu.ClientMeta.consensus_engine_api_get_blobs:type_name -> xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData - 123, // 131: xatu.ClientMeta.eth_v1_beacon_blob:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconBlobData + 96, // 108: xatu.ClientMeta.libp2p_trace_drop_rpc:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData + 103, // 109: xatu.ClientMeta.libp2p_trace_leave:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceLeaveData + 104, // 110: xatu.ClientMeta.libp2p_trace_graft:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGraftData + 105, // 111: xatu.ClientMeta.libp2p_trace_prune:type_name -> xatu.ClientMeta.AdditionalLibP2PTracePruneData + 106, // 112: xatu.ClientMeta.libp2p_trace_duplicate_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData + 107, // 113: xatu.ClientMeta.libp2p_trace_deliver_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData + 108, // 114: xatu.ClientMeta.libp2p_trace_publish_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData + 109, // 115: xatu.ClientMeta.libp2p_trace_reject_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData + 97, // 116: xatu.ClientMeta.libp2p_trace_rpc_meta_control_ihave:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData + 98, // 117: xatu.ClientMeta.libp2p_trace_rpc_meta_control_iwant:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData + 99, // 118: xatu.ClientMeta.libp2p_trace_rpc_meta_control_idontwant:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData + 100, // 119: xatu.ClientMeta.libp2p_trace_rpc_meta_control_graft:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData + 101, // 120: xatu.ClientMeta.libp2p_trace_rpc_meta_control_prune:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData + 117, // 121: xatu.ClientMeta.libp2p_trace_rpc_meta_subscription:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData + 118, // 122: xatu.ClientMeta.libp2p_trace_rpc_meta_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData + 131, // 123: xatu.ClientMeta.node_record_consensus:type_name -> xatu.ClientMeta.AdditionalNodeRecordConsensusData + 123, // 124: xatu.ClientMeta.libp2p_trace_gossipsub_aggregate_and_proof:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData + 87, // 125: xatu.ClientMeta.eth_v1_events_data_column_sidecar:type_name -> xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData + 125, // 126: xatu.ClientMeta.libp2p_trace_gossipsub_data_column_sidecar:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData + 112, // 127: xatu.ClientMeta.libp2p_trace_synthetic_heartbeat:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData + 116, // 128: xatu.ClientMeta.libp2p_trace_rpc_data_column_custody_probe:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData + 132, // 129: xatu.ClientMeta.consensus_engine_api_new_payload:type_name -> xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData + 133, // 130: xatu.ClientMeta.consensus_engine_api_get_blobs:type_name -> xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData + 134, // 131: xatu.ClientMeta.eth_v1_beacon_blob:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconBlobData 60, // 132: xatu.ClientMeta.eth_v1_beacon_sync_committee:type_name -> xatu.ClientMeta.AdditionalEthV1BeaconSyncCommitteeData 61, // 133: xatu.ClientMeta.eth_v2_beacon_block_sync_aggregate:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockSyncAggregateData - 104, // 134: xatu.ClientMeta.libp2p_trace_identify:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData - 151, // 135: xatu.ClientMeta.module_name:type_name -> xatu.ModuleName - 127, // 136: xatu.ServerMeta.event:type_name -> xatu.ServerMeta.Event - 129, // 137: xatu.ServerMeta.client:type_name -> xatu.ServerMeta.Client - 131, // 138: xatu.ServerMeta.BEACON_P2P_ATTESTATION:type_name -> xatu.ServerMeta.AdditionalBeaconP2PAttestationData - 132, // 139: xatu.ServerMeta.LIBP2P_TRACE_CONNECTED:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceConnectedData - 133, // 140: xatu.ServerMeta.LIBP2P_TRACE_DISCONNECTED:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData - 136, // 141: xatu.ServerMeta.NODE_RECORD_CONSENSUS:type_name -> xatu.ServerMeta.AdditionalNodeRecordConsensusData - 137, // 142: xatu.ServerMeta.NODE_RECORD_EXECUTION:type_name -> xatu.ServerMeta.AdditionalNodeRecordExecutionData - 134, // 143: xatu.ServerMeta.LIBP2P_TRACE_SYNTHETIC_HEARTBEAT:type_name -> xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData - 135, // 144: xatu.ServerMeta.LIBP2P_TRACE_IDENTIFY:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData - 24, // 145: xatu.Meta.client:type_name -> xatu.ClientMeta - 25, // 146: xatu.Meta.server:type_name -> xatu.ServerMeta - 1, // 147: xatu.Event.name:type_name -> xatu.Event.Name - 143, // 148: xatu.Event.date_time:type_name -> google.protobuf.Timestamp - 142, // 149: xatu.ExecutionBlockMetrics.block_number:type_name -> google.protobuf.UInt64Value - 142, // 150: xatu.ExecutionBlockMetrics.gas_used:type_name -> google.protobuf.UInt64Value - 150, // 151: xatu.ExecutionBlockMetrics.tx_count:type_name -> google.protobuf.UInt32Value - 152, // 152: xatu.ExecutionBlockMetrics.execution_ms:type_name -> google.protobuf.DoubleValue - 152, // 153: xatu.ExecutionBlockMetrics.state_read_ms:type_name -> google.protobuf.DoubleValue - 152, // 154: xatu.ExecutionBlockMetrics.state_hash_ms:type_name -> google.protobuf.DoubleValue - 152, // 155: xatu.ExecutionBlockMetrics.commit_ms:type_name -> google.protobuf.DoubleValue - 152, // 156: xatu.ExecutionBlockMetrics.total_ms:type_name -> google.protobuf.DoubleValue - 152, // 157: xatu.ExecutionBlockMetrics.mgas_per_sec:type_name -> google.protobuf.DoubleValue - 138, // 158: xatu.ExecutionBlockMetrics.state_reads:type_name -> xatu.ExecutionBlockMetrics.StateReads - 139, // 159: xatu.ExecutionBlockMetrics.state_writes:type_name -> xatu.ExecutionBlockMetrics.StateWrites - 140, // 160: xatu.ExecutionBlockMetrics.account_cache:type_name -> xatu.ExecutionBlockMetrics.CacheEntry - 140, // 161: xatu.ExecutionBlockMetrics.storage_cache:type_name -> xatu.ExecutionBlockMetrics.CacheEntry - 141, // 162: xatu.ExecutionBlockMetrics.code_cache:type_name -> xatu.ExecutionBlockMetrics.CodeCacheEntry - 27, // 163: xatu.DecoratedEvent.event:type_name -> xatu.Event - 26, // 164: xatu.DecoratedEvent.meta:type_name -> xatu.Meta - 153, // 165: xatu.DecoratedEvent.eth_v1_events_attestation:type_name -> xatu.eth.v1.Attestation - 154, // 166: xatu.DecoratedEvent.eth_v1_events_block:type_name -> xatu.eth.v1.EventBlock - 145, // 167: xatu.DecoratedEvent.eth_v1_events_chain_reorg:type_name -> xatu.eth.v1.EventChainReorg - 155, // 168: xatu.DecoratedEvent.eth_v1_events_finalized_checkpoint:type_name -> xatu.eth.v1.EventFinalizedCheckpoint - 156, // 169: xatu.DecoratedEvent.eth_v1_events_head:type_name -> xatu.eth.v1.EventHead - 157, // 170: xatu.DecoratedEvent.eth_v1_events_voluntary_exit:type_name -> xatu.eth.v1.EventVoluntaryExit - 158, // 171: xatu.DecoratedEvent.eth_v1_events_contribution_and_proof:type_name -> xatu.eth.v1.EventContributionAndProof - 159, // 172: xatu.DecoratedEvent.eth_v2_beacon_block:type_name -> xatu.eth.v2.EventBlock - 144, // 173: xatu.DecoratedEvent.eth_v1_fork_choice:type_name -> xatu.eth.v1.ForkChoice - 13, // 174: xatu.DecoratedEvent.eth_v1_fork_choice_reorg:type_name -> xatu.DebugForkChoiceReorg - 160, // 175: xatu.DecoratedEvent.eth_v1_beacon_committee:type_name -> xatu.eth.v1.Committee - 161, // 176: xatu.DecoratedEvent.eth_v1_validator_attestation_data:type_name -> xatu.eth.v1.AttestationDataV2 - 162, // 177: xatu.DecoratedEvent.eth_v1_events_attestation_v2:type_name -> xatu.eth.v1.AttestationV2 - 163, // 178: xatu.DecoratedEvent.eth_v1_events_block_v2:type_name -> xatu.eth.v1.EventBlockV2 - 147, // 179: xatu.DecoratedEvent.eth_v1_events_chain_reorg_v2:type_name -> xatu.eth.v1.EventChainReorgV2 - 164, // 180: xatu.DecoratedEvent.eth_v1_events_finalized_checkpoint_v2:type_name -> xatu.eth.v1.EventFinalizedCheckpointV2 - 165, // 181: xatu.DecoratedEvent.eth_v1_events_head_v2:type_name -> xatu.eth.v1.EventHeadV2 - 166, // 182: xatu.DecoratedEvent.eth_v1_events_voluntary_exit_v2:type_name -> xatu.eth.v1.EventVoluntaryExitV2 - 167, // 183: xatu.DecoratedEvent.eth_v1_events_contribution_and_proof_v2:type_name -> xatu.eth.v1.EventContributionAndProofV2 - 168, // 184: xatu.DecoratedEvent.eth_v2_beacon_block_v2:type_name -> xatu.eth.v2.EventBlockV2 - 146, // 185: xatu.DecoratedEvent.eth_v1_fork_choice_v2:type_name -> xatu.eth.v1.ForkChoiceV2 - 14, // 186: xatu.DecoratedEvent.eth_v1_fork_choice_reorg_v2:type_name -> xatu.DebugForkChoiceReorgV2 - 169, // 187: xatu.DecoratedEvent.eth_v2_beacon_block_attester_slashing:type_name -> xatu.eth.v1.AttesterSlashingV2 - 170, // 188: xatu.DecoratedEvent.eth_v2_beacon_block_proposer_slashing:type_name -> xatu.eth.v1.ProposerSlashingV2 - 171, // 189: xatu.DecoratedEvent.eth_v2_beacon_block_voluntary_exit:type_name -> xatu.eth.v1.SignedVoluntaryExitV2 - 172, // 190: xatu.DecoratedEvent.eth_v2_beacon_block_deposit:type_name -> xatu.eth.v1.DepositV2 - 173, // 191: xatu.DecoratedEvent.eth_v2_beacon_block_bls_to_execution_change:type_name -> xatu.eth.v2.SignedBLSToExecutionChangeV2 - 174, // 192: xatu.DecoratedEvent.eth_v2_beacon_block_execution_transaction:type_name -> xatu.eth.v1.Transaction - 175, // 193: xatu.DecoratedEvent.eth_v2_beacon_block_withdrawal:type_name -> xatu.eth.v1.WithdrawalV2 - 176, // 194: xatu.DecoratedEvent.eth_v1_events_blob_sidecar:type_name -> xatu.eth.v1.EventBlobSidecar - 177, // 195: xatu.DecoratedEvent.eth_v1_beacon_block_blob_sidecar:type_name -> xatu.eth.v1.BlobSidecar - 162, // 196: xatu.DecoratedEvent.beacon_p2p_attestation:type_name -> xatu.eth.v1.AttestationV2 - 178, // 197: xatu.DecoratedEvent.eth_v1_proposer_duty:type_name -> xatu.eth.v1.ProposerDuty - 179, // 198: xatu.DecoratedEvent.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.eth.v1.ElaboratedAttestation - 180, // 199: xatu.DecoratedEvent.libp2p_trace_add_peer:type_name -> xatu.libp2p.AddPeer - 181, // 200: xatu.DecoratedEvent.libp2p_trace_remove_peer:type_name -> xatu.libp2p.RemovePeer - 182, // 201: xatu.DecoratedEvent.libp2p_trace_recv_rpc:type_name -> xatu.libp2p.RecvRPC - 183, // 202: xatu.DecoratedEvent.libp2p_trace_send_rpc:type_name -> xatu.libp2p.SendRPC - 184, // 203: xatu.DecoratedEvent.libp2p_trace_join:type_name -> xatu.libp2p.Join - 185, // 204: xatu.DecoratedEvent.libp2p_trace_connected:type_name -> xatu.libp2p.Connected - 186, // 205: xatu.DecoratedEvent.libp2p_trace_disconnected:type_name -> xatu.libp2p.Disconnected - 187, // 206: xatu.DecoratedEvent.libp2p_trace_handle_metadata:type_name -> xatu.libp2p.HandleMetadata - 188, // 207: xatu.DecoratedEvent.libp2p_trace_handle_status:type_name -> xatu.libp2p.HandleStatus - 189, // 208: xatu.DecoratedEvent.libp2p_trace_gossipsub_beacon_block:type_name -> xatu.libp2p.gossipsub.eth.BeaconBlock - 153, // 209: xatu.DecoratedEvent.libp2p_trace_gossipsub_beacon_attestation:type_name -> xatu.eth.v1.Attestation - 190, // 210: xatu.DecoratedEvent.libp2p_trace_gossipsub_blob_sidecar:type_name -> xatu.libp2p.gossipsub.eth.BlobSidecar - 15, // 211: xatu.DecoratedEvent.eth_v1_validators:type_name -> xatu.Validators - 191, // 212: xatu.DecoratedEvent.mev_relay_bid_trace_builder_block_submission:type_name -> xatu.mevrelay.BidTrace - 192, // 213: xatu.DecoratedEvent.mev_relay_payload_delivered:type_name -> xatu.mevrelay.ProposerPayloadDelivered - 168, // 214: xatu.DecoratedEvent.eth_v3_validator_block:type_name -> xatu.eth.v2.EventBlockV2 - 193, // 215: xatu.DecoratedEvent.mev_relay_validator_registration:type_name -> xatu.mevrelay.ValidatorRegistration - 194, // 216: xatu.DecoratedEvent.eth_v1_events_block_gossip:type_name -> xatu.eth.v1.EventBlockGossip - 195, // 217: xatu.DecoratedEvent.libp2p_trace_drop_rpc:type_name -> xatu.libp2p.DropRPC - 196, // 218: xatu.DecoratedEvent.libp2p_trace_leave:type_name -> xatu.libp2p.Leave - 197, // 219: xatu.DecoratedEvent.libp2p_trace_graft:type_name -> xatu.libp2p.Graft - 198, // 220: xatu.DecoratedEvent.libp2p_trace_prune:type_name -> xatu.libp2p.Prune - 199, // 221: xatu.DecoratedEvent.libp2p_trace_duplicate_message:type_name -> xatu.libp2p.DuplicateMessage - 200, // 222: xatu.DecoratedEvent.libp2p_trace_deliver_message:type_name -> xatu.libp2p.DeliverMessage - 201, // 223: xatu.DecoratedEvent.libp2p_trace_publish_message:type_name -> xatu.libp2p.PublishMessage - 202, // 224: xatu.DecoratedEvent.libp2p_trace_reject_message:type_name -> xatu.libp2p.RejectMessage - 203, // 225: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_ihave:type_name -> xatu.libp2p.ControlIHaveMetaItem - 204, // 226: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_iwant:type_name -> xatu.libp2p.ControlIWantMetaItem - 205, // 227: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_idontwant:type_name -> xatu.libp2p.ControlIDontWantMetaItem - 206, // 228: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_graft:type_name -> xatu.libp2p.ControlGraftMetaItem - 207, // 229: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_prune:type_name -> xatu.libp2p.ControlPruneMetaItem - 208, // 230: xatu.DecoratedEvent.libp2p_trace_rpc_meta_subscription:type_name -> xatu.libp2p.SubMetaItem - 209, // 231: xatu.DecoratedEvent.libp2p_trace_rpc_meta_message:type_name -> xatu.libp2p.MessageMetaItem - 210, // 232: xatu.DecoratedEvent.node_record_consensus:type_name -> xatu.noderecord.Consensus - 211, // 233: xatu.DecoratedEvent.node_record_execution:type_name -> xatu.noderecord.Execution - 212, // 234: xatu.DecoratedEvent.libp2p_trace_gossipsub_aggregate_and_proof:type_name -> xatu.eth.v1.SignedAggregateAttestationAndProofV2 - 213, // 235: xatu.DecoratedEvent.eth_v1_events_data_column_sidecar:type_name -> xatu.eth.v1.EventDataColumnSidecar - 214, // 236: xatu.DecoratedEvent.libp2p_trace_gossipsub_data_column_sidecar:type_name -> xatu.libp2p.gossipsub.eth.DataColumnSidecar - 215, // 237: xatu.DecoratedEvent.libp2p_trace_synthetic_heartbeat:type_name -> xatu.libp2p.SyntheticHeartbeat - 216, // 238: xatu.DecoratedEvent.libp2p_trace_identify:type_name -> xatu.libp2p.Identify - 217, // 239: xatu.DecoratedEvent.libp2p_trace_rpc_data_column_custody_probe:type_name -> xatu.libp2p.DataColumnCustodyProbe - 19, // 240: xatu.DecoratedEvent.execution_state_size:type_name -> xatu.ExecutionStateSize - 20, // 241: xatu.DecoratedEvent.consensus_engine_api_new_payload:type_name -> xatu.ConsensusEngineAPINewPayload - 21, // 242: xatu.DecoratedEvent.consensus_engine_api_get_blobs:type_name -> xatu.ConsensusEngineAPIGetBlobs - 22, // 243: xatu.DecoratedEvent.execution_engine_new_payload:type_name -> xatu.ExecutionEngineNewPayload - 23, // 244: xatu.DecoratedEvent.execution_engine_get_blobs:type_name -> xatu.ExecutionEngineGetBlobs - 218, // 245: xatu.DecoratedEvent.eth_v1_beacon_blob:type_name -> xatu.eth.v1.Blob - 16, // 246: xatu.DecoratedEvent.eth_v1_beacon_sync_committee:type_name -> xatu.SyncCommitteeData - 17, // 247: xatu.DecoratedEvent.eth_v2_beacon_block_sync_aggregate:type_name -> xatu.SyncAggregateData - 28, // 248: xatu.DecoratedEvent.execution_block_metrics:type_name -> xatu.ExecutionBlockMetrics - 124, // 249: xatu.ClientMeta.Ethereum.network:type_name -> xatu.ClientMeta.Ethereum.Network - 125, // 250: xatu.ClientMeta.Ethereum.execution:type_name -> xatu.ClientMeta.Ethereum.Execution - 126, // 251: xatu.ClientMeta.Ethereum.consensus:type_name -> xatu.ClientMeta.Ethereum.Consensus - 4, // 252: xatu.ClientMeta.AdditionalEthV1AttestationSourceData.epoch:type_name -> xatu.Epoch - 5, // 253: xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data.epoch:type_name -> xatu.EpochV2 - 4, // 254: xatu.ClientMeta.AdditionalEthV1AttestationTargetData.epoch:type_name -> xatu.Epoch - 5, // 255: xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data.epoch:type_name -> xatu.EpochV2 - 32, // 256: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceData - 34, // 257: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetData - 6, // 258: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.slot:type_name -> xatu.Slot - 4, // 259: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.epoch:type_name -> xatu.Epoch - 9, // 260: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.propagation:type_name -> xatu.Propagation - 11, // 261: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.attesting_validator:type_name -> xatu.AttestingValidator - 33, // 262: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data - 35, // 263: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data - 7, // 264: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.slot:type_name -> xatu.SlotV2 - 5, // 265: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.epoch:type_name -> xatu.EpochV2 - 10, // 266: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.propagation:type_name -> xatu.PropagationV2 - 12, // 267: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.attesting_validator:type_name -> xatu.AttestingValidatorV2 - 4, // 268: xatu.ClientMeta.AdditionalEthV1EventsHeadData.epoch:type_name -> xatu.Epoch - 6, // 269: xatu.ClientMeta.AdditionalEthV1EventsHeadData.slot:type_name -> xatu.Slot - 9, // 270: xatu.ClientMeta.AdditionalEthV1EventsHeadData.propagation:type_name -> xatu.Propagation - 5, // 271: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.epoch:type_name -> xatu.EpochV2 - 7, // 272: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.slot:type_name -> xatu.SlotV2 - 10, // 273: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.propagation:type_name -> xatu.PropagationV2 - 4, // 274: xatu.ClientMeta.AdditionalEthV1EventsBlockData.epoch:type_name -> xatu.Epoch - 6, // 275: xatu.ClientMeta.AdditionalEthV1EventsBlockData.slot:type_name -> xatu.Slot - 9, // 276: xatu.ClientMeta.AdditionalEthV1EventsBlockData.propagation:type_name -> xatu.Propagation - 5, // 277: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.epoch:type_name -> xatu.EpochV2 - 7, // 278: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.slot:type_name -> xatu.SlotV2 - 10, // 279: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.propagation:type_name -> xatu.PropagationV2 - 5, // 280: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.epoch:type_name -> xatu.EpochV2 - 7, // 281: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.slot:type_name -> xatu.SlotV2 - 10, // 282: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.propagation:type_name -> xatu.PropagationV2 - 4, // 283: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitData.epoch:type_name -> xatu.Epoch - 5, // 284: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.epoch:type_name -> xatu.EpochV2 - 5, // 285: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 286: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.wallclock_slot:type_name -> xatu.SlotV2 - 4, // 287: xatu.ClientMeta.AdditionalEthV1EventsFinalizedCheckpointData.epoch:type_name -> xatu.Epoch - 5, // 288: xatu.ClientMeta.AdditionalEthV1EventsFinalizedCheckpointV2Data.epoch:type_name -> xatu.EpochV2 - 4, // 289: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.epoch:type_name -> xatu.Epoch - 6, // 290: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.slot:type_name -> xatu.Slot - 9, // 291: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.propagation:type_name -> xatu.Propagation - 5, // 292: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.epoch:type_name -> xatu.EpochV2 - 7, // 293: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.slot:type_name -> xatu.SlotV2 - 10, // 294: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.propagation:type_name -> xatu.PropagationV2 - 4, // 295: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.epoch:type_name -> xatu.Epoch - 6, // 296: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.slot:type_name -> xatu.Slot - 9, // 297: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.propagation:type_name -> xatu.Propagation - 5, // 298: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.epoch:type_name -> xatu.EpochV2 - 7, // 299: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.slot:type_name -> xatu.SlotV2 - 10, // 300: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.propagation:type_name -> xatu.PropagationV2 - 49, // 301: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofData.contribution:type_name -> xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData - 50, // 302: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofV2Data.contribution:type_name -> xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data - 4, // 303: xatu.ClientMeta.ForkChoiceSnapshot.request_epoch:type_name -> xatu.Epoch - 6, // 304: xatu.ClientMeta.ForkChoiceSnapshot.request_slot:type_name -> xatu.Slot - 143, // 305: xatu.ClientMeta.ForkChoiceSnapshot.timestamp:type_name -> google.protobuf.Timestamp - 5, // 306: xatu.ClientMeta.ForkChoiceSnapshotV2.request_epoch:type_name -> xatu.EpochV2 - 7, // 307: xatu.ClientMeta.ForkChoiceSnapshotV2.request_slot:type_name -> xatu.SlotV2 - 142, // 308: xatu.ClientMeta.ForkChoiceSnapshotV2.requested_at_slot_start_diff_ms:type_name -> google.protobuf.UInt64Value - 142, // 309: xatu.ClientMeta.ForkChoiceSnapshotV2.request_duration_ms:type_name -> google.protobuf.UInt64Value - 143, // 310: xatu.ClientMeta.ForkChoiceSnapshotV2.timestamp:type_name -> google.protobuf.Timestamp - 53, // 311: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceData.Snapshot:type_name -> xatu.ClientMeta.ForkChoiceSnapshot - 54, // 312: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceV2Data.Snapshot:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 - 53, // 313: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgData.before:type_name -> xatu.ClientMeta.ForkChoiceSnapshot - 53, // 314: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgData.after:type_name -> xatu.ClientMeta.ForkChoiceSnapshot - 54, // 315: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgV2Data.before:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 - 54, // 316: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgV2Data.after:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 - 5, // 317: xatu.ClientMeta.AdditionalEthV1BeaconCommitteeData.epoch:type_name -> xatu.EpochV2 - 7, // 318: xatu.ClientMeta.AdditionalEthV1BeaconCommitteeData.slot:type_name -> xatu.SlotV2 - 5, // 319: xatu.ClientMeta.AdditionalEthV1BeaconSyncCommitteeData.epoch:type_name -> xatu.EpochV2 - 142, // 320: xatu.ClientMeta.AdditionalEthV1BeaconSyncCommitteeData.sync_committee_period:type_name -> google.protobuf.UInt64Value - 18, // 321: xatu.ClientMeta.AdditionalEthV2BeaconBlockSyncAggregateData.block:type_name -> xatu.BlockIdentifier - 142, // 322: xatu.ClientMeta.AdditionalEthV2BeaconBlockSyncAggregateData.sync_committee_period:type_name -> google.protobuf.UInt64Value - 142, // 323: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.nonce:type_name -> google.protobuf.UInt64Value - 142, // 324: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.gas:type_name -> google.protobuf.UInt64Value - 150, // 325: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.type:type_name -> google.protobuf.UInt32Value - 142, // 326: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.blob_gas:type_name -> google.protobuf.UInt64Value - 4, // 327: xatu.ClientMeta.AdditionalEthV2BeaconBlockData.epoch:type_name -> xatu.Epoch - 6, // 328: xatu.ClientMeta.AdditionalEthV2BeaconBlockData.slot:type_name -> xatu.Slot - 5, // 329: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.epoch:type_name -> xatu.EpochV2 - 7, // 330: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.slot:type_name -> xatu.SlotV2 - 142, // 331: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_count:type_name -> google.protobuf.UInt64Value - 142, // 332: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_total_bytes:type_name -> google.protobuf.UInt64Value - 142, // 333: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_total_bytes_compressed:type_name -> google.protobuf.UInt64Value - 142, // 334: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.total_bytes:type_name -> google.protobuf.UInt64Value - 142, // 335: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.total_bytes_compressed:type_name -> google.protobuf.UInt64Value - 18, // 336: xatu.ClientMeta.AdditionalEthV2BeaconBlockAttesterSlashingData.block:type_name -> xatu.BlockIdentifier - 18, // 337: xatu.ClientMeta.AdditionalEthV2BeaconBlockProposerSlashingData.block:type_name -> xatu.BlockIdentifier - 18, // 338: xatu.ClientMeta.AdditionalEthV2BeaconBlockVoluntaryExitData.block:type_name -> xatu.BlockIdentifier - 18, // 339: xatu.ClientMeta.AdditionalEthV2BeaconBlockDepositData.block:type_name -> xatu.BlockIdentifier - 18, // 340: xatu.ClientMeta.AdditionalEthV2BeaconBlockBLSToExecutionChangeData.block:type_name -> xatu.BlockIdentifier - 18, // 341: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData.block:type_name -> xatu.BlockIdentifier - 142, // 342: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData.position_in_block:type_name -> google.protobuf.UInt64Value - 18, // 343: xatu.ClientMeta.AdditionalEthV2BeaconBlockWithdrawalData.block:type_name -> xatu.BlockIdentifier - 142, // 344: xatu.ClientMeta.AttestationDataSnapshot.requested_at_slot_start_diff_ms:type_name -> google.protobuf.UInt64Value - 142, // 345: xatu.ClientMeta.AttestationDataSnapshot.request_duration_ms:type_name -> google.protobuf.UInt64Value - 143, // 346: xatu.ClientMeta.AttestationDataSnapshot.timestamp:type_name -> google.protobuf.Timestamp - 33, // 347: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data - 35, // 348: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data - 5, // 349: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.epoch:type_name -> xatu.EpochV2 - 7, // 350: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.slot:type_name -> xatu.SlotV2 - 73, // 351: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.Snapshot:type_name -> xatu.ClientMeta.AttestationDataSnapshot - 5, // 352: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.epoch:type_name -> xatu.EpochV2 - 7, // 353: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.slot:type_name -> xatu.SlotV2 - 10, // 354: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.propagation:type_name -> xatu.PropagationV2 - 5, // 355: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.epoch:type_name -> xatu.EpochV2 - 7, // 356: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.slot:type_name -> xatu.SlotV2 - 10, // 357: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.propagation:type_name -> xatu.PropagationV2 - 5, // 358: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.epoch:type_name -> xatu.EpochV2 - 7, // 359: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.slot:type_name -> xatu.SlotV2 - 142, // 360: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.data_size:type_name -> google.protobuf.UInt64Value - 142, // 361: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.data_empty_size:type_name -> google.protobuf.UInt64Value - 33, // 362: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data - 35, // 363: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data - 7, // 364: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.slot:type_name -> xatu.SlotV2 - 5, // 365: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.epoch:type_name -> xatu.EpochV2 - 10, // 366: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.propagation:type_name -> xatu.PropagationV2 - 12, // 367: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.attesting_validator:type_name -> xatu.AttestingValidatorV2 - 219, // 368: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.peer:type_name -> xatu.libp2p.Peer - 150, // 369: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.subnet:type_name -> google.protobuf.UInt32Value - 220, // 370: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.validated:type_name -> google.protobuf.BoolValue - 5, // 371: xatu.ClientMeta.AdditionalEthV1ProposerDutyData.epoch:type_name -> xatu.EpochV2 - 7, // 372: xatu.ClientMeta.AdditionalEthV1ProposerDutyData.slot:type_name -> xatu.SlotV2 - 18, // 373: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.block:type_name -> xatu.BlockIdentifier - 142, // 374: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.position_in_block:type_name -> google.protobuf.UInt64Value - 5, // 375: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.epoch:type_name -> xatu.EpochV2 - 7, // 376: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.slot:type_name -> xatu.SlotV2 - 33, // 377: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data - 35, // 378: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data - 221, // 379: xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 380: xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 381: xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 382: xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 383: xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 384: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 385: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 386: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 387: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 388: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 389: xatu.ClientMeta.AdditionalLibP2PTraceJoinData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 390: xatu.ClientMeta.AdditionalLibP2PTraceLeaveData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 391: xatu.ClientMeta.AdditionalLibP2PTraceGraftData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 392: xatu.ClientMeta.AdditionalLibP2PTracePruneData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 393: xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 394: xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 395: xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 396: xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 397: xatu.ClientMeta.AdditionalLibP2PTraceConnectedData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 398: xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 399: xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 400: xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 401: xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 402: xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 403: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 5, // 404: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.epoch:type_name -> xatu.EpochV2 - 7, // 405: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.slot:type_name -> xatu.SlotV2 - 5, // 406: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 407: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.wallclock_slot:type_name -> xatu.SlotV2 - 221, // 408: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 221, // 409: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 5, // 410: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.epoch:type_name -> xatu.EpochV2 - 7, // 411: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.slot:type_name -> xatu.SlotV2 - 5, // 412: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 413: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.wallclock_slot:type_name -> xatu.SlotV2 - 10, // 414: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.propagation:type_name -> xatu.PropagationV2 - 221, // 415: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 222, // 416: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.topic:type_name -> google.protobuf.StringValue - 150, // 417: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.message_size:type_name -> google.protobuf.UInt32Value - 222, // 418: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.message_id:type_name -> google.protobuf.StringValue - 5, // 419: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData.epoch:type_name -> xatu.EpochV2 - 5, // 420: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData.epoch:type_name -> xatu.EpochV2 - 109, // 421: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.source:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData - 110, // 422: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.target:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData - 7, // 423: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.slot:type_name -> xatu.SlotV2 - 5, // 424: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.epoch:type_name -> xatu.EpochV2 - 10, // 425: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.propagation:type_name -> xatu.PropagationV2 - 12, // 426: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.attesting_validator:type_name -> xatu.AttestingValidatorV2 - 5, // 427: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 428: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.wallclock_slot:type_name -> xatu.SlotV2 - 221, // 429: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 222, // 430: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.topic:type_name -> google.protobuf.StringValue - 150, // 431: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.message_size:type_name -> google.protobuf.UInt32Value - 222, // 432: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.message_id:type_name -> google.protobuf.StringValue - 5, // 433: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.epoch:type_name -> xatu.EpochV2 - 7, // 434: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.slot:type_name -> xatu.SlotV2 - 5, // 435: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 436: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.wallclock_slot:type_name -> xatu.SlotV2 - 10, // 437: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.propagation:type_name -> xatu.PropagationV2 - 142, // 438: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.aggregator_index:type_name -> google.protobuf.UInt64Value - 221, // 439: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 222, // 440: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.topic:type_name -> google.protobuf.StringValue - 150, // 441: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.message_size:type_name -> google.protobuf.UInt32Value - 222, // 442: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.message_id:type_name -> google.protobuf.StringValue - 5, // 443: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.epoch:type_name -> xatu.EpochV2 - 7, // 444: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.slot:type_name -> xatu.SlotV2 - 5, // 445: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 446: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.wallclock_slot:type_name -> xatu.SlotV2 - 10, // 447: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.propagation:type_name -> xatu.PropagationV2 - 221, // 448: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 222, // 449: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.topic:type_name -> google.protobuf.StringValue - 150, // 450: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.message_size:type_name -> google.protobuf.UInt32Value - 222, // 451: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.message_id:type_name -> google.protobuf.StringValue - 5, // 452: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.epoch:type_name -> xatu.EpochV2 - 7, // 453: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.slot:type_name -> xatu.SlotV2 - 5, // 454: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.wallclock_epoch:type_name -> xatu.EpochV2 - 7, // 455: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.wallclock_slot:type_name -> xatu.SlotV2 - 10, // 456: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.propagation:type_name -> xatu.PropagationV2 - 221, // 457: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.metadata:type_name -> xatu.libp2p.TraceEventMetadata - 222, // 458: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.topic:type_name -> google.protobuf.StringValue - 150, // 459: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.message_size:type_name -> google.protobuf.UInt32Value - 222, // 460: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.message_id:type_name -> google.protobuf.StringValue - 5, // 461: xatu.ClientMeta.AdditionalEthV1ValidatorsData.epoch:type_name -> xatu.EpochV2 - 223, // 462: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.relay:type_name -> xatu.mevrelay.Relay - 7, // 463: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.slot:type_name -> xatu.SlotV2 - 7, // 464: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.wallclock_slot:type_name -> xatu.SlotV2 - 5, // 465: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.epoch:type_name -> xatu.EpochV2 - 5, // 466: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.wallclock_epoch:type_name -> xatu.EpochV2 - 142, // 467: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.requested_at_slot_time:type_name -> google.protobuf.UInt64Value - 142, // 468: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.response_at_slot_time:type_name -> google.protobuf.UInt64Value - 223, // 469: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.relay:type_name -> xatu.mevrelay.Relay - 7, // 470: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.slot:type_name -> xatu.SlotV2 - 7, // 471: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.wallclock_slot:type_name -> xatu.SlotV2 - 5, // 472: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.epoch:type_name -> xatu.EpochV2 - 5, // 473: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.wallclock_epoch:type_name -> xatu.EpochV2 - 142, // 474: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.requested_at_slot_time:type_name -> google.protobuf.UInt64Value - 142, // 475: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.response_at_slot_time:type_name -> google.protobuf.UInt64Value - 5, // 476: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.epoch:type_name -> xatu.EpochV2 - 7, // 477: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.slot:type_name -> xatu.SlotV2 - 142, // 478: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_count:type_name -> google.protobuf.UInt64Value - 142, // 479: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_total_bytes:type_name -> google.protobuf.UInt64Value - 142, // 480: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_total_bytes_compressed:type_name -> google.protobuf.UInt64Value - 142, // 481: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.total_bytes:type_name -> google.protobuf.UInt64Value - 142, // 482: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.total_bytes_compressed:type_name -> google.protobuf.UInt64Value - 142, // 483: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.request_duration_ms:type_name -> google.protobuf.UInt64Value - 143, // 484: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.requested_at:type_name -> google.protobuf.Timestamp - 223, // 485: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.relay:type_name -> xatu.mevrelay.Relay - 7, // 486: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.slot:type_name -> xatu.SlotV2 - 7, // 487: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.wallclock_slot:type_name -> xatu.SlotV2 - 5, // 488: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.epoch:type_name -> xatu.EpochV2 - 5, // 489: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.wallclock_epoch:type_name -> xatu.EpochV2 - 142, // 490: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.validator_index:type_name -> google.protobuf.UInt64Value - 5, // 491: xatu.ClientMeta.AdditionalNodeRecordConsensusData.finalized_epoch:type_name -> xatu.EpochV2 - 7, // 492: xatu.ClientMeta.AdditionalNodeRecordConsensusData.head_slot:type_name -> xatu.SlotV2 - 5, // 493: xatu.ClientMeta.AdditionalNodeRecordConsensusData.head_epoch:type_name -> xatu.EpochV2 - 5, // 494: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData.epoch:type_name -> xatu.EpochV2 - 7, // 495: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData.slot:type_name -> xatu.SlotV2 - 5, // 496: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData.epoch:type_name -> xatu.EpochV2 - 7, // 497: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData.slot:type_name -> xatu.SlotV2 - 5, // 498: xatu.ClientMeta.AdditionalEthV1BeaconBlobData.epoch:type_name -> xatu.EpochV2 - 7, // 499: xatu.ClientMeta.AdditionalEthV1BeaconBlobData.slot:type_name -> xatu.SlotV2 - 8, // 500: xatu.ClientMeta.Ethereum.Execution.fork_id:type_name -> xatu.ForkID - 143, // 501: xatu.ServerMeta.Event.received_date_time:type_name -> google.protobuf.Timestamp - 128, // 502: xatu.ServerMeta.Client.geo:type_name -> xatu.ServerMeta.Geo - 128, // 503: xatu.ServerMeta.Peer.geo:type_name -> xatu.ServerMeta.Geo - 130, // 504: xatu.ServerMeta.AdditionalBeaconP2PAttestationData.peer:type_name -> xatu.ServerMeta.Peer - 130, // 505: xatu.ServerMeta.AdditionalLibp2PTraceConnectedData.peer:type_name -> xatu.ServerMeta.Peer - 130, // 506: xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData.peer:type_name -> xatu.ServerMeta.Peer - 130, // 507: xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData.peer:type_name -> xatu.ServerMeta.Peer - 130, // 508: xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData.peer:type_name -> xatu.ServerMeta.Peer - 128, // 509: xatu.ServerMeta.AdditionalNodeRecordConsensusData.geo:type_name -> xatu.ServerMeta.Geo - 128, // 510: xatu.ServerMeta.AdditionalNodeRecordExecutionData.geo:type_name -> xatu.ServerMeta.Geo - 142, // 511: xatu.ExecutionBlockMetrics.StateReads.accounts:type_name -> google.protobuf.UInt64Value - 142, // 512: xatu.ExecutionBlockMetrics.StateReads.storage_slots:type_name -> google.protobuf.UInt64Value - 142, // 513: xatu.ExecutionBlockMetrics.StateReads.code:type_name -> google.protobuf.UInt64Value - 142, // 514: xatu.ExecutionBlockMetrics.StateReads.code_bytes:type_name -> google.protobuf.UInt64Value - 142, // 515: xatu.ExecutionBlockMetrics.StateWrites.accounts:type_name -> google.protobuf.UInt64Value - 142, // 516: xatu.ExecutionBlockMetrics.StateWrites.accounts_deleted:type_name -> google.protobuf.UInt64Value - 142, // 517: xatu.ExecutionBlockMetrics.StateWrites.storage_slots:type_name -> google.protobuf.UInt64Value - 142, // 518: xatu.ExecutionBlockMetrics.StateWrites.storage_slots_deleted:type_name -> google.protobuf.UInt64Value - 142, // 519: xatu.ExecutionBlockMetrics.StateWrites.code:type_name -> google.protobuf.UInt64Value - 142, // 520: xatu.ExecutionBlockMetrics.StateWrites.code_bytes:type_name -> google.protobuf.UInt64Value - 224, // 521: xatu.ExecutionBlockMetrics.CacheEntry.hits:type_name -> google.protobuf.Int64Value - 224, // 522: xatu.ExecutionBlockMetrics.CacheEntry.misses:type_name -> google.protobuf.Int64Value - 152, // 523: xatu.ExecutionBlockMetrics.CacheEntry.hit_rate:type_name -> google.protobuf.DoubleValue - 224, // 524: xatu.ExecutionBlockMetrics.CodeCacheEntry.hits:type_name -> google.protobuf.Int64Value - 224, // 525: xatu.ExecutionBlockMetrics.CodeCacheEntry.misses:type_name -> google.protobuf.Int64Value - 152, // 526: xatu.ExecutionBlockMetrics.CodeCacheEntry.hit_rate:type_name -> google.protobuf.DoubleValue - 224, // 527: xatu.ExecutionBlockMetrics.CodeCacheEntry.hit_bytes:type_name -> google.protobuf.Int64Value - 224, // 528: xatu.ExecutionBlockMetrics.CodeCacheEntry.miss_bytes:type_name -> google.protobuf.Int64Value - 2, // 529: xatu.EventIngester.CreateEvents:input_type -> xatu.CreateEventsRequest - 3, // 530: xatu.EventIngester.CreateEvents:output_type -> xatu.CreateEventsResponse - 530, // [530:531] is the sub-list for method output_type - 529, // [529:530] is the sub-list for method input_type - 529, // [529:529] is the sub-list for extension type_name - 529, // [529:529] is the sub-list for extension extendee - 0, // [0:529] is the sub-list for field type_name + 115, // 134: xatu.ClientMeta.libp2p_trace_identify:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData + 73, // 135: xatu.ClientMeta.eth_v2_beacon_block_access_list:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockAccessListData + 74, // 136: xatu.ClientMeta.eth_v1_events_execution_payload:type_name -> xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadData + 75, // 137: xatu.ClientMeta.eth_v1_events_payload_attestation:type_name -> xatu.ClientMeta.AdditionalEthV1EventsPayloadAttestationData + 76, // 138: xatu.ClientMeta.eth_v1_events_execution_payload_bid:type_name -> xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadBidData + 77, // 139: xatu.ClientMeta.eth_v1_events_proposer_preferences:type_name -> xatu.ClientMeta.AdditionalEthV1EventsProposerPreferencesData + 78, // 140: xatu.ClientMeta.eth_v2_beacon_block_payload_attestation:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockPayloadAttestationData + 79, // 141: xatu.ClientMeta.eth_v2_beacon_block_execution_payload_bid:type_name -> xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionPayloadBidData + 80, // 142: xatu.ClientMeta.libp2p_trace_gossipsub_execution_payload_envelope:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData + 81, // 143: xatu.ClientMeta.libp2p_trace_gossipsub_execution_payload_bid:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData + 82, // 144: xatu.ClientMeta.libp2p_trace_gossipsub_payload_attestation_message:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData + 83, // 145: xatu.ClientMeta.libp2p_trace_gossipsub_proposer_preferences:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData + 162, // 146: xatu.ClientMeta.module_name:type_name -> xatu.ModuleName + 138, // 147: xatu.ServerMeta.event:type_name -> xatu.ServerMeta.Event + 140, // 148: xatu.ServerMeta.client:type_name -> xatu.ServerMeta.Client + 142, // 149: xatu.ServerMeta.BEACON_P2P_ATTESTATION:type_name -> xatu.ServerMeta.AdditionalBeaconP2PAttestationData + 143, // 150: xatu.ServerMeta.LIBP2P_TRACE_CONNECTED:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceConnectedData + 144, // 151: xatu.ServerMeta.LIBP2P_TRACE_DISCONNECTED:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData + 147, // 152: xatu.ServerMeta.NODE_RECORD_CONSENSUS:type_name -> xatu.ServerMeta.AdditionalNodeRecordConsensusData + 148, // 153: xatu.ServerMeta.NODE_RECORD_EXECUTION:type_name -> xatu.ServerMeta.AdditionalNodeRecordExecutionData + 145, // 154: xatu.ServerMeta.LIBP2P_TRACE_SYNTHETIC_HEARTBEAT:type_name -> xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData + 146, // 155: xatu.ServerMeta.LIBP2P_TRACE_IDENTIFY:type_name -> xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData + 24, // 156: xatu.Meta.client:type_name -> xatu.ClientMeta + 25, // 157: xatu.Meta.server:type_name -> xatu.ServerMeta + 1, // 158: xatu.Event.name:type_name -> xatu.Event.Name + 154, // 159: xatu.Event.date_time:type_name -> google.protobuf.Timestamp + 153, // 160: xatu.ExecutionBlockMetrics.block_number:type_name -> google.protobuf.UInt64Value + 153, // 161: xatu.ExecutionBlockMetrics.gas_used:type_name -> google.protobuf.UInt64Value + 161, // 162: xatu.ExecutionBlockMetrics.tx_count:type_name -> google.protobuf.UInt32Value + 163, // 163: xatu.ExecutionBlockMetrics.execution_ms:type_name -> google.protobuf.DoubleValue + 163, // 164: xatu.ExecutionBlockMetrics.state_read_ms:type_name -> google.protobuf.DoubleValue + 163, // 165: xatu.ExecutionBlockMetrics.state_hash_ms:type_name -> google.protobuf.DoubleValue + 163, // 166: xatu.ExecutionBlockMetrics.commit_ms:type_name -> google.protobuf.DoubleValue + 163, // 167: xatu.ExecutionBlockMetrics.total_ms:type_name -> google.protobuf.DoubleValue + 163, // 168: xatu.ExecutionBlockMetrics.mgas_per_sec:type_name -> google.protobuf.DoubleValue + 149, // 169: xatu.ExecutionBlockMetrics.state_reads:type_name -> xatu.ExecutionBlockMetrics.StateReads + 150, // 170: xatu.ExecutionBlockMetrics.state_writes:type_name -> xatu.ExecutionBlockMetrics.StateWrites + 151, // 171: xatu.ExecutionBlockMetrics.account_cache:type_name -> xatu.ExecutionBlockMetrics.CacheEntry + 151, // 172: xatu.ExecutionBlockMetrics.storage_cache:type_name -> xatu.ExecutionBlockMetrics.CacheEntry + 152, // 173: xatu.ExecutionBlockMetrics.code_cache:type_name -> xatu.ExecutionBlockMetrics.CodeCacheEntry + 27, // 174: xatu.DecoratedEvent.event:type_name -> xatu.Event + 26, // 175: xatu.DecoratedEvent.meta:type_name -> xatu.Meta + 164, // 176: xatu.DecoratedEvent.eth_v1_events_attestation:type_name -> xatu.eth.v1.Attestation + 165, // 177: xatu.DecoratedEvent.eth_v1_events_block:type_name -> xatu.eth.v1.EventBlock + 156, // 178: xatu.DecoratedEvent.eth_v1_events_chain_reorg:type_name -> xatu.eth.v1.EventChainReorg + 166, // 179: xatu.DecoratedEvent.eth_v1_events_finalized_checkpoint:type_name -> xatu.eth.v1.EventFinalizedCheckpoint + 167, // 180: xatu.DecoratedEvent.eth_v1_events_head:type_name -> xatu.eth.v1.EventHead + 168, // 181: xatu.DecoratedEvent.eth_v1_events_voluntary_exit:type_name -> xatu.eth.v1.EventVoluntaryExit + 169, // 182: xatu.DecoratedEvent.eth_v1_events_contribution_and_proof:type_name -> xatu.eth.v1.EventContributionAndProof + 170, // 183: xatu.DecoratedEvent.eth_v2_beacon_block:type_name -> xatu.eth.v2.EventBlock + 155, // 184: xatu.DecoratedEvent.eth_v1_fork_choice:type_name -> xatu.eth.v1.ForkChoice + 13, // 185: xatu.DecoratedEvent.eth_v1_fork_choice_reorg:type_name -> xatu.DebugForkChoiceReorg + 171, // 186: xatu.DecoratedEvent.eth_v1_beacon_committee:type_name -> xatu.eth.v1.Committee + 172, // 187: xatu.DecoratedEvent.eth_v1_validator_attestation_data:type_name -> xatu.eth.v1.AttestationDataV2 + 173, // 188: xatu.DecoratedEvent.eth_v1_events_attestation_v2:type_name -> xatu.eth.v1.AttestationV2 + 174, // 189: xatu.DecoratedEvent.eth_v1_events_block_v2:type_name -> xatu.eth.v1.EventBlockV2 + 158, // 190: xatu.DecoratedEvent.eth_v1_events_chain_reorg_v2:type_name -> xatu.eth.v1.EventChainReorgV2 + 175, // 191: xatu.DecoratedEvent.eth_v1_events_finalized_checkpoint_v2:type_name -> xatu.eth.v1.EventFinalizedCheckpointV2 + 176, // 192: xatu.DecoratedEvent.eth_v1_events_head_v2:type_name -> xatu.eth.v1.EventHeadV2 + 177, // 193: xatu.DecoratedEvent.eth_v1_events_voluntary_exit_v2:type_name -> xatu.eth.v1.EventVoluntaryExitV2 + 178, // 194: xatu.DecoratedEvent.eth_v1_events_contribution_and_proof_v2:type_name -> xatu.eth.v1.EventContributionAndProofV2 + 179, // 195: xatu.DecoratedEvent.eth_v2_beacon_block_v2:type_name -> xatu.eth.v2.EventBlockV2 + 157, // 196: xatu.DecoratedEvent.eth_v1_fork_choice_v2:type_name -> xatu.eth.v1.ForkChoiceV2 + 14, // 197: xatu.DecoratedEvent.eth_v1_fork_choice_reorg_v2:type_name -> xatu.DebugForkChoiceReorgV2 + 180, // 198: xatu.DecoratedEvent.eth_v2_beacon_block_attester_slashing:type_name -> xatu.eth.v1.AttesterSlashingV2 + 181, // 199: xatu.DecoratedEvent.eth_v2_beacon_block_proposer_slashing:type_name -> xatu.eth.v1.ProposerSlashingV2 + 182, // 200: xatu.DecoratedEvent.eth_v2_beacon_block_voluntary_exit:type_name -> xatu.eth.v1.SignedVoluntaryExitV2 + 183, // 201: xatu.DecoratedEvent.eth_v2_beacon_block_deposit:type_name -> xatu.eth.v1.DepositV2 + 184, // 202: xatu.DecoratedEvent.eth_v2_beacon_block_bls_to_execution_change:type_name -> xatu.eth.v2.SignedBLSToExecutionChangeV2 + 185, // 203: xatu.DecoratedEvent.eth_v2_beacon_block_execution_transaction:type_name -> xatu.eth.v1.Transaction + 186, // 204: xatu.DecoratedEvent.eth_v2_beacon_block_withdrawal:type_name -> xatu.eth.v1.WithdrawalV2 + 187, // 205: xatu.DecoratedEvent.eth_v1_events_blob_sidecar:type_name -> xatu.eth.v1.EventBlobSidecar + 188, // 206: xatu.DecoratedEvent.eth_v1_beacon_block_blob_sidecar:type_name -> xatu.eth.v1.BlobSidecar + 173, // 207: xatu.DecoratedEvent.beacon_p2p_attestation:type_name -> xatu.eth.v1.AttestationV2 + 189, // 208: xatu.DecoratedEvent.eth_v1_proposer_duty:type_name -> xatu.eth.v1.ProposerDuty + 190, // 209: xatu.DecoratedEvent.eth_v2_beacon_block_elaborated_attestation:type_name -> xatu.eth.v1.ElaboratedAttestation + 191, // 210: xatu.DecoratedEvent.libp2p_trace_add_peer:type_name -> xatu.libp2p.AddPeer + 192, // 211: xatu.DecoratedEvent.libp2p_trace_remove_peer:type_name -> xatu.libp2p.RemovePeer + 193, // 212: xatu.DecoratedEvent.libp2p_trace_recv_rpc:type_name -> xatu.libp2p.RecvRPC + 194, // 213: xatu.DecoratedEvent.libp2p_trace_send_rpc:type_name -> xatu.libp2p.SendRPC + 195, // 214: xatu.DecoratedEvent.libp2p_trace_join:type_name -> xatu.libp2p.Join + 196, // 215: xatu.DecoratedEvent.libp2p_trace_connected:type_name -> xatu.libp2p.Connected + 197, // 216: xatu.DecoratedEvent.libp2p_trace_disconnected:type_name -> xatu.libp2p.Disconnected + 198, // 217: xatu.DecoratedEvent.libp2p_trace_handle_metadata:type_name -> xatu.libp2p.HandleMetadata + 199, // 218: xatu.DecoratedEvent.libp2p_trace_handle_status:type_name -> xatu.libp2p.HandleStatus + 200, // 219: xatu.DecoratedEvent.libp2p_trace_gossipsub_beacon_block:type_name -> xatu.libp2p.gossipsub.eth.BeaconBlock + 164, // 220: xatu.DecoratedEvent.libp2p_trace_gossipsub_beacon_attestation:type_name -> xatu.eth.v1.Attestation + 201, // 221: xatu.DecoratedEvent.libp2p_trace_gossipsub_blob_sidecar:type_name -> xatu.libp2p.gossipsub.eth.BlobSidecar + 15, // 222: xatu.DecoratedEvent.eth_v1_validators:type_name -> xatu.Validators + 202, // 223: xatu.DecoratedEvent.mev_relay_bid_trace_builder_block_submission:type_name -> xatu.mevrelay.BidTrace + 203, // 224: xatu.DecoratedEvent.mev_relay_payload_delivered:type_name -> xatu.mevrelay.ProposerPayloadDelivered + 179, // 225: xatu.DecoratedEvent.eth_v3_validator_block:type_name -> xatu.eth.v2.EventBlockV2 + 204, // 226: xatu.DecoratedEvent.mev_relay_validator_registration:type_name -> xatu.mevrelay.ValidatorRegistration + 205, // 227: xatu.DecoratedEvent.eth_v1_events_block_gossip:type_name -> xatu.eth.v1.EventBlockGossip + 206, // 228: xatu.DecoratedEvent.libp2p_trace_drop_rpc:type_name -> xatu.libp2p.DropRPC + 207, // 229: xatu.DecoratedEvent.libp2p_trace_leave:type_name -> xatu.libp2p.Leave + 208, // 230: xatu.DecoratedEvent.libp2p_trace_graft:type_name -> xatu.libp2p.Graft + 209, // 231: xatu.DecoratedEvent.libp2p_trace_prune:type_name -> xatu.libp2p.Prune + 210, // 232: xatu.DecoratedEvent.libp2p_trace_duplicate_message:type_name -> xatu.libp2p.DuplicateMessage + 211, // 233: xatu.DecoratedEvent.libp2p_trace_deliver_message:type_name -> xatu.libp2p.DeliverMessage + 212, // 234: xatu.DecoratedEvent.libp2p_trace_publish_message:type_name -> xatu.libp2p.PublishMessage + 213, // 235: xatu.DecoratedEvent.libp2p_trace_reject_message:type_name -> xatu.libp2p.RejectMessage + 214, // 236: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_ihave:type_name -> xatu.libp2p.ControlIHaveMetaItem + 215, // 237: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_iwant:type_name -> xatu.libp2p.ControlIWantMetaItem + 216, // 238: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_idontwant:type_name -> xatu.libp2p.ControlIDontWantMetaItem + 217, // 239: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_graft:type_name -> xatu.libp2p.ControlGraftMetaItem + 218, // 240: xatu.DecoratedEvent.libp2p_trace_rpc_meta_control_prune:type_name -> xatu.libp2p.ControlPruneMetaItem + 219, // 241: xatu.DecoratedEvent.libp2p_trace_rpc_meta_subscription:type_name -> xatu.libp2p.SubMetaItem + 220, // 242: xatu.DecoratedEvent.libp2p_trace_rpc_meta_message:type_name -> xatu.libp2p.MessageMetaItem + 221, // 243: xatu.DecoratedEvent.node_record_consensus:type_name -> xatu.noderecord.Consensus + 222, // 244: xatu.DecoratedEvent.node_record_execution:type_name -> xatu.noderecord.Execution + 223, // 245: xatu.DecoratedEvent.libp2p_trace_gossipsub_aggregate_and_proof:type_name -> xatu.eth.v1.SignedAggregateAttestationAndProofV2 + 224, // 246: xatu.DecoratedEvent.eth_v1_events_data_column_sidecar:type_name -> xatu.eth.v1.EventDataColumnSidecar + 225, // 247: xatu.DecoratedEvent.libp2p_trace_gossipsub_data_column_sidecar:type_name -> xatu.libp2p.gossipsub.eth.DataColumnSidecar + 226, // 248: xatu.DecoratedEvent.libp2p_trace_synthetic_heartbeat:type_name -> xatu.libp2p.SyntheticHeartbeat + 227, // 249: xatu.DecoratedEvent.libp2p_trace_identify:type_name -> xatu.libp2p.Identify + 228, // 250: xatu.DecoratedEvent.libp2p_trace_rpc_data_column_custody_probe:type_name -> xatu.libp2p.DataColumnCustodyProbe + 19, // 251: xatu.DecoratedEvent.execution_state_size:type_name -> xatu.ExecutionStateSize + 20, // 252: xatu.DecoratedEvent.consensus_engine_api_new_payload:type_name -> xatu.ConsensusEngineAPINewPayload + 21, // 253: xatu.DecoratedEvent.consensus_engine_api_get_blobs:type_name -> xatu.ConsensusEngineAPIGetBlobs + 22, // 254: xatu.DecoratedEvent.execution_engine_new_payload:type_name -> xatu.ExecutionEngineNewPayload + 23, // 255: xatu.DecoratedEvent.execution_engine_get_blobs:type_name -> xatu.ExecutionEngineGetBlobs + 229, // 256: xatu.DecoratedEvent.eth_v1_beacon_blob:type_name -> xatu.eth.v1.Blob + 16, // 257: xatu.DecoratedEvent.eth_v1_beacon_sync_committee:type_name -> xatu.SyncCommitteeData + 17, // 258: xatu.DecoratedEvent.eth_v2_beacon_block_sync_aggregate:type_name -> xatu.SyncAggregateData + 28, // 259: xatu.DecoratedEvent.execution_block_metrics:type_name -> xatu.ExecutionBlockMetrics + 230, // 260: xatu.DecoratedEvent.eth_v2_beacon_block_access_list:type_name -> xatu.eth.v1.BlockAccessListChange + 231, // 261: xatu.DecoratedEvent.eth_v1_events_execution_payload:type_name -> xatu.eth.v1.SignedExecutionPayloadEnvelope + 232, // 262: xatu.DecoratedEvent.eth_v1_events_payload_attestation:type_name -> xatu.eth.v1.PayloadAttestationMessage + 233, // 263: xatu.DecoratedEvent.eth_v1_events_execution_payload_bid:type_name -> xatu.eth.v1.SignedExecutionPayloadBid + 234, // 264: xatu.DecoratedEvent.eth_v1_events_proposer_preferences:type_name -> xatu.eth.v1.SignedProposerPreferences + 235, // 265: xatu.DecoratedEvent.eth_v2_beacon_block_payload_attestation:type_name -> xatu.eth.v1.PayloadAttestation + 233, // 266: xatu.DecoratedEvent.eth_v2_beacon_block_execution_payload_bid:type_name -> xatu.eth.v1.SignedExecutionPayloadBid + 236, // 267: xatu.DecoratedEvent.libp2p_trace_gossipsub_execution_payload_envelope:type_name -> xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope + 237, // 268: xatu.DecoratedEvent.libp2p_trace_gossipsub_execution_payload_bid:type_name -> xatu.libp2p.gossipsub.eth.ExecutionPayloadBid + 238, // 269: xatu.DecoratedEvent.libp2p_trace_gossipsub_payload_attestation_message:type_name -> xatu.libp2p.gossipsub.eth.PayloadAttestationMessage + 239, // 270: xatu.DecoratedEvent.libp2p_trace_gossipsub_proposer_preferences:type_name -> xatu.libp2p.gossipsub.eth.ProposerPreferences + 135, // 271: xatu.ClientMeta.Ethereum.network:type_name -> xatu.ClientMeta.Ethereum.Network + 136, // 272: xatu.ClientMeta.Ethereum.execution:type_name -> xatu.ClientMeta.Ethereum.Execution + 137, // 273: xatu.ClientMeta.Ethereum.consensus:type_name -> xatu.ClientMeta.Ethereum.Consensus + 4, // 274: xatu.ClientMeta.AdditionalEthV1AttestationSourceData.epoch:type_name -> xatu.Epoch + 5, // 275: xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data.epoch:type_name -> xatu.EpochV2 + 4, // 276: xatu.ClientMeta.AdditionalEthV1AttestationTargetData.epoch:type_name -> xatu.Epoch + 5, // 277: xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data.epoch:type_name -> xatu.EpochV2 + 32, // 278: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceData + 34, // 279: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetData + 6, // 280: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.slot:type_name -> xatu.Slot + 4, // 281: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.epoch:type_name -> xatu.Epoch + 9, // 282: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.propagation:type_name -> xatu.Propagation + 11, // 283: xatu.ClientMeta.AdditionalEthV1EventsAttestationData.attesting_validator:type_name -> xatu.AttestingValidator + 33, // 284: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data + 35, // 285: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data + 7, // 286: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.slot:type_name -> xatu.SlotV2 + 5, // 287: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.epoch:type_name -> xatu.EpochV2 + 10, // 288: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.propagation:type_name -> xatu.PropagationV2 + 12, // 289: xatu.ClientMeta.AdditionalEthV1EventsAttestationV2Data.attesting_validator:type_name -> xatu.AttestingValidatorV2 + 4, // 290: xatu.ClientMeta.AdditionalEthV1EventsHeadData.epoch:type_name -> xatu.Epoch + 6, // 291: xatu.ClientMeta.AdditionalEthV1EventsHeadData.slot:type_name -> xatu.Slot + 9, // 292: xatu.ClientMeta.AdditionalEthV1EventsHeadData.propagation:type_name -> xatu.Propagation + 5, // 293: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.epoch:type_name -> xatu.EpochV2 + 7, // 294: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.slot:type_name -> xatu.SlotV2 + 10, // 295: xatu.ClientMeta.AdditionalEthV1EventsHeadV2Data.propagation:type_name -> xatu.PropagationV2 + 4, // 296: xatu.ClientMeta.AdditionalEthV1EventsBlockData.epoch:type_name -> xatu.Epoch + 6, // 297: xatu.ClientMeta.AdditionalEthV1EventsBlockData.slot:type_name -> xatu.Slot + 9, // 298: xatu.ClientMeta.AdditionalEthV1EventsBlockData.propagation:type_name -> xatu.Propagation + 5, // 299: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.epoch:type_name -> xatu.EpochV2 + 7, // 300: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.slot:type_name -> xatu.SlotV2 + 10, // 301: xatu.ClientMeta.AdditionalEthV1EventsBlockV2Data.propagation:type_name -> xatu.PropagationV2 + 5, // 302: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.epoch:type_name -> xatu.EpochV2 + 7, // 303: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.slot:type_name -> xatu.SlotV2 + 10, // 304: xatu.ClientMeta.AdditionalEthV1EventsBlockGossipData.propagation:type_name -> xatu.PropagationV2 + 4, // 305: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitData.epoch:type_name -> xatu.Epoch + 5, // 306: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.epoch:type_name -> xatu.EpochV2 + 5, // 307: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 308: xatu.ClientMeta.AdditionalEthV1EventsVoluntaryExitV2Data.wallclock_slot:type_name -> xatu.SlotV2 + 4, // 309: xatu.ClientMeta.AdditionalEthV1EventsFinalizedCheckpointData.epoch:type_name -> xatu.Epoch + 5, // 310: xatu.ClientMeta.AdditionalEthV1EventsFinalizedCheckpointV2Data.epoch:type_name -> xatu.EpochV2 + 4, // 311: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.epoch:type_name -> xatu.Epoch + 6, // 312: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.slot:type_name -> xatu.Slot + 9, // 313: xatu.ClientMeta.AdditionalEthV1EventsChainReorgData.propagation:type_name -> xatu.Propagation + 5, // 314: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.epoch:type_name -> xatu.EpochV2 + 7, // 315: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.slot:type_name -> xatu.SlotV2 + 10, // 316: xatu.ClientMeta.AdditionalEthV1EventsChainReorgV2Data.propagation:type_name -> xatu.PropagationV2 + 4, // 317: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.epoch:type_name -> xatu.Epoch + 6, // 318: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.slot:type_name -> xatu.Slot + 9, // 319: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData.propagation:type_name -> xatu.Propagation + 5, // 320: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.epoch:type_name -> xatu.EpochV2 + 7, // 321: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.slot:type_name -> xatu.SlotV2 + 10, // 322: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data.propagation:type_name -> xatu.PropagationV2 + 49, // 323: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofData.contribution:type_name -> xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionData + 50, // 324: xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofV2Data.contribution:type_name -> xatu.ClientMeta.AdditionalEthV1EventsContributionAndProofContributionV2Data + 4, // 325: xatu.ClientMeta.ForkChoiceSnapshot.request_epoch:type_name -> xatu.Epoch + 6, // 326: xatu.ClientMeta.ForkChoiceSnapshot.request_slot:type_name -> xatu.Slot + 154, // 327: xatu.ClientMeta.ForkChoiceSnapshot.timestamp:type_name -> google.protobuf.Timestamp + 5, // 328: xatu.ClientMeta.ForkChoiceSnapshotV2.request_epoch:type_name -> xatu.EpochV2 + 7, // 329: xatu.ClientMeta.ForkChoiceSnapshotV2.request_slot:type_name -> xatu.SlotV2 + 153, // 330: xatu.ClientMeta.ForkChoiceSnapshotV2.requested_at_slot_start_diff_ms:type_name -> google.protobuf.UInt64Value + 153, // 331: xatu.ClientMeta.ForkChoiceSnapshotV2.request_duration_ms:type_name -> google.protobuf.UInt64Value + 154, // 332: xatu.ClientMeta.ForkChoiceSnapshotV2.timestamp:type_name -> google.protobuf.Timestamp + 53, // 333: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceData.Snapshot:type_name -> xatu.ClientMeta.ForkChoiceSnapshot + 54, // 334: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceV2Data.Snapshot:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 + 53, // 335: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgData.before:type_name -> xatu.ClientMeta.ForkChoiceSnapshot + 53, // 336: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgData.after:type_name -> xatu.ClientMeta.ForkChoiceSnapshot + 54, // 337: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgV2Data.before:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 + 54, // 338: xatu.ClientMeta.AdditionalEthV1DebugForkChoiceReOrgV2Data.after:type_name -> xatu.ClientMeta.ForkChoiceSnapshotV2 + 5, // 339: xatu.ClientMeta.AdditionalEthV1BeaconCommitteeData.epoch:type_name -> xatu.EpochV2 + 7, // 340: xatu.ClientMeta.AdditionalEthV1BeaconCommitteeData.slot:type_name -> xatu.SlotV2 + 5, // 341: xatu.ClientMeta.AdditionalEthV1BeaconSyncCommitteeData.epoch:type_name -> xatu.EpochV2 + 153, // 342: xatu.ClientMeta.AdditionalEthV1BeaconSyncCommitteeData.sync_committee_period:type_name -> google.protobuf.UInt64Value + 18, // 343: xatu.ClientMeta.AdditionalEthV2BeaconBlockSyncAggregateData.block:type_name -> xatu.BlockIdentifier + 153, // 344: xatu.ClientMeta.AdditionalEthV2BeaconBlockSyncAggregateData.sync_committee_period:type_name -> google.protobuf.UInt64Value + 153, // 345: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.nonce:type_name -> google.protobuf.UInt64Value + 153, // 346: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.gas:type_name -> google.protobuf.UInt64Value + 161, // 347: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.type:type_name -> google.protobuf.UInt32Value + 153, // 348: xatu.ClientMeta.AdditionalMempoolTransactionV2Data.blob_gas:type_name -> google.protobuf.UInt64Value + 4, // 349: xatu.ClientMeta.AdditionalEthV2BeaconBlockData.epoch:type_name -> xatu.Epoch + 6, // 350: xatu.ClientMeta.AdditionalEthV2BeaconBlockData.slot:type_name -> xatu.Slot + 5, // 351: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.epoch:type_name -> xatu.EpochV2 + 7, // 352: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.slot:type_name -> xatu.SlotV2 + 153, // 353: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_count:type_name -> google.protobuf.UInt64Value + 153, // 354: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_total_bytes:type_name -> google.protobuf.UInt64Value + 153, // 355: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.transactions_total_bytes_compressed:type_name -> google.protobuf.UInt64Value + 153, // 356: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.total_bytes:type_name -> google.protobuf.UInt64Value + 153, // 357: xatu.ClientMeta.AdditionalEthV2BeaconBlockV2Data.total_bytes_compressed:type_name -> google.protobuf.UInt64Value + 18, // 358: xatu.ClientMeta.AdditionalEthV2BeaconBlockAttesterSlashingData.block:type_name -> xatu.BlockIdentifier + 18, // 359: xatu.ClientMeta.AdditionalEthV2BeaconBlockProposerSlashingData.block:type_name -> xatu.BlockIdentifier + 18, // 360: xatu.ClientMeta.AdditionalEthV2BeaconBlockVoluntaryExitData.block:type_name -> xatu.BlockIdentifier + 18, // 361: xatu.ClientMeta.AdditionalEthV2BeaconBlockDepositData.block:type_name -> xatu.BlockIdentifier + 18, // 362: xatu.ClientMeta.AdditionalEthV2BeaconBlockBLSToExecutionChangeData.block:type_name -> xatu.BlockIdentifier + 18, // 363: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData.block:type_name -> xatu.BlockIdentifier + 153, // 364: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionTransactionData.position_in_block:type_name -> google.protobuf.UInt64Value + 18, // 365: xatu.ClientMeta.AdditionalEthV2BeaconBlockWithdrawalData.block:type_name -> xatu.BlockIdentifier + 18, // 366: xatu.ClientMeta.AdditionalEthV2BeaconBlockAccessListData.block:type_name -> xatu.BlockIdentifier + 153, // 367: xatu.ClientMeta.AdditionalEthV2BeaconBlockAccessListData.block_number:type_name -> google.protobuf.UInt64Value + 5, // 368: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadData.epoch:type_name -> xatu.EpochV2 + 7, // 369: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadData.slot:type_name -> xatu.SlotV2 + 10, // 370: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadData.propagation:type_name -> xatu.PropagationV2 + 5, // 371: xatu.ClientMeta.AdditionalEthV1EventsPayloadAttestationData.epoch:type_name -> xatu.EpochV2 + 7, // 372: xatu.ClientMeta.AdditionalEthV1EventsPayloadAttestationData.slot:type_name -> xatu.SlotV2 + 10, // 373: xatu.ClientMeta.AdditionalEthV1EventsPayloadAttestationData.propagation:type_name -> xatu.PropagationV2 + 5, // 374: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadBidData.epoch:type_name -> xatu.EpochV2 + 7, // 375: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadBidData.slot:type_name -> xatu.SlotV2 + 10, // 376: xatu.ClientMeta.AdditionalEthV1EventsExecutionPayloadBidData.propagation:type_name -> xatu.PropagationV2 + 5, // 377: xatu.ClientMeta.AdditionalEthV1EventsProposerPreferencesData.epoch:type_name -> xatu.EpochV2 + 7, // 378: xatu.ClientMeta.AdditionalEthV1EventsProposerPreferencesData.slot:type_name -> xatu.SlotV2 + 10, // 379: xatu.ClientMeta.AdditionalEthV1EventsProposerPreferencesData.propagation:type_name -> xatu.PropagationV2 + 18, // 380: xatu.ClientMeta.AdditionalEthV2BeaconBlockPayloadAttestationData.block:type_name -> xatu.BlockIdentifier + 18, // 381: xatu.ClientMeta.AdditionalEthV2BeaconBlockExecutionPayloadBidData.block:type_name -> xatu.BlockIdentifier + 5, // 382: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.epoch:type_name -> xatu.EpochV2 + 7, // 383: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.slot:type_name -> xatu.SlotV2 + 5, // 384: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 385: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 386: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.propagation:type_name -> xatu.PropagationV2 + 240, // 387: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 388: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.topic:type_name -> google.protobuf.StringValue + 161, // 389: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 390: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData.message_id:type_name -> google.protobuf.StringValue + 5, // 391: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.epoch:type_name -> xatu.EpochV2 + 7, // 392: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.slot:type_name -> xatu.SlotV2 + 5, // 393: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 394: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 395: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.propagation:type_name -> xatu.PropagationV2 + 240, // 396: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 397: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.topic:type_name -> google.protobuf.StringValue + 161, // 398: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 399: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubExecutionPayloadBidData.message_id:type_name -> google.protobuf.StringValue + 5, // 400: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.epoch:type_name -> xatu.EpochV2 + 7, // 401: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.slot:type_name -> xatu.SlotV2 + 5, // 402: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 403: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 404: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.propagation:type_name -> xatu.PropagationV2 + 240, // 405: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 406: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.topic:type_name -> google.protobuf.StringValue + 161, // 407: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 408: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData.message_id:type_name -> google.protobuf.StringValue + 5, // 409: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.epoch:type_name -> xatu.EpochV2 + 7, // 410: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.slot:type_name -> xatu.SlotV2 + 5, // 411: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 412: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 413: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.propagation:type_name -> xatu.PropagationV2 + 240, // 414: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 415: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.topic:type_name -> google.protobuf.StringValue + 161, // 416: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 417: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubProposerPreferencesData.message_id:type_name -> google.protobuf.StringValue + 153, // 418: xatu.ClientMeta.AttestationDataSnapshot.requested_at_slot_start_diff_ms:type_name -> google.protobuf.UInt64Value + 153, // 419: xatu.ClientMeta.AttestationDataSnapshot.request_duration_ms:type_name -> google.protobuf.UInt64Value + 154, // 420: xatu.ClientMeta.AttestationDataSnapshot.timestamp:type_name -> google.protobuf.Timestamp + 33, // 421: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data + 35, // 422: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data + 5, // 423: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.epoch:type_name -> xatu.EpochV2 + 7, // 424: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.slot:type_name -> xatu.SlotV2 + 84, // 425: xatu.ClientMeta.AdditionalEthV1ValidatorAttestationDataData.Snapshot:type_name -> xatu.ClientMeta.AttestationDataSnapshot + 5, // 426: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.epoch:type_name -> xatu.EpochV2 + 7, // 427: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.slot:type_name -> xatu.SlotV2 + 10, // 428: xatu.ClientMeta.AdditionalEthV1EventsBlobSidecarData.propagation:type_name -> xatu.PropagationV2 + 5, // 429: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.epoch:type_name -> xatu.EpochV2 + 7, // 430: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.slot:type_name -> xatu.SlotV2 + 10, // 431: xatu.ClientMeta.AdditionalEthV1EventsDataColumnSidecarData.propagation:type_name -> xatu.PropagationV2 + 5, // 432: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.epoch:type_name -> xatu.EpochV2 + 7, // 433: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.slot:type_name -> xatu.SlotV2 + 153, // 434: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.data_size:type_name -> google.protobuf.UInt64Value + 153, // 435: xatu.ClientMeta.AdditionalEthV1BeaconBlobSidecarData.data_empty_size:type_name -> google.protobuf.UInt64Value + 33, // 436: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data + 35, // 437: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data + 7, // 438: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.slot:type_name -> xatu.SlotV2 + 5, // 439: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.epoch:type_name -> xatu.EpochV2 + 10, // 440: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.propagation:type_name -> xatu.PropagationV2 + 12, // 441: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.attesting_validator:type_name -> xatu.AttestingValidatorV2 + 242, // 442: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.peer:type_name -> xatu.libp2p.Peer + 161, // 443: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.subnet:type_name -> google.protobuf.UInt32Value + 243, // 444: xatu.ClientMeta.AdditionalBeaconP2PAttestationData.validated:type_name -> google.protobuf.BoolValue + 5, // 445: xatu.ClientMeta.AdditionalEthV1ProposerDutyData.epoch:type_name -> xatu.EpochV2 + 7, // 446: xatu.ClientMeta.AdditionalEthV1ProposerDutyData.slot:type_name -> xatu.SlotV2 + 18, // 447: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.block:type_name -> xatu.BlockIdentifier + 153, // 448: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.position_in_block:type_name -> google.protobuf.UInt64Value + 5, // 449: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.epoch:type_name -> xatu.EpochV2 + 7, // 450: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.slot:type_name -> xatu.SlotV2 + 33, // 451: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.source:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationSourceV2Data + 35, // 452: xatu.ClientMeta.AdditionalEthV2BeaconBlockElaboratedAttestationData.target:type_name -> xatu.ClientMeta.AdditionalEthV1AttestationTargetV2Data + 240, // 453: xatu.ClientMeta.AdditionalLibP2PTraceAddPeerData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 454: xatu.ClientMeta.AdditionalLibP2PTraceRemovePeerData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 455: xatu.ClientMeta.AdditionalLibP2PTraceRecvRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 456: xatu.ClientMeta.AdditionalLibP2PTraceSendRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 457: xatu.ClientMeta.AdditionalLibP2PTraceDropRPCData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 458: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIHaveData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 459: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIWantData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 460: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlIDontWantData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 461: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlGraftData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 462: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaControlPruneData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 463: xatu.ClientMeta.AdditionalLibP2PTraceJoinData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 464: xatu.ClientMeta.AdditionalLibP2PTraceLeaveData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 465: xatu.ClientMeta.AdditionalLibP2PTraceGraftData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 466: xatu.ClientMeta.AdditionalLibP2PTracePruneData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 467: xatu.ClientMeta.AdditionalLibP2PTraceDuplicateMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 468: xatu.ClientMeta.AdditionalLibP2PTraceDeliverMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 469: xatu.ClientMeta.AdditionalLibP2PTracePublishMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 470: xatu.ClientMeta.AdditionalLibP2PTraceRejectMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 471: xatu.ClientMeta.AdditionalLibP2PTraceConnectedData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 472: xatu.ClientMeta.AdditionalLibP2PTraceDisconnectedData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 473: xatu.ClientMeta.AdditionalLibP2PTraceSyntheticHeartbeatData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 474: xatu.ClientMeta.AdditionalLibP2PTraceHandleMetadataData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 475: xatu.ClientMeta.AdditionalLibP2PTraceHandleStatusData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 476: xatu.ClientMeta.AdditionalLibP2PTraceIdentifyData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 477: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 5, // 478: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.epoch:type_name -> xatu.EpochV2 + 7, // 479: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.slot:type_name -> xatu.SlotV2 + 5, // 480: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 481: xatu.ClientMeta.AdditionalLibP2PTraceRpcDataColumnCustodyProbeData.wallclock_slot:type_name -> xatu.SlotV2 + 240, // 482: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaSubscriptionData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 240, // 483: xatu.ClientMeta.AdditionalLibP2PTraceRPCMetaMessageData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 5, // 484: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.epoch:type_name -> xatu.EpochV2 + 7, // 485: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.slot:type_name -> xatu.SlotV2 + 5, // 486: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 487: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 488: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.propagation:type_name -> xatu.PropagationV2 + 240, // 489: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 490: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.topic:type_name -> google.protobuf.StringValue + 161, // 491: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 492: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconBlockData.message_id:type_name -> google.protobuf.StringValue + 5, // 493: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData.epoch:type_name -> xatu.EpochV2 + 5, // 494: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData.epoch:type_name -> xatu.EpochV2 + 120, // 495: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.source:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData + 121, // 496: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.target:type_name -> xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData + 7, // 497: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.slot:type_name -> xatu.SlotV2 + 5, // 498: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.epoch:type_name -> xatu.EpochV2 + 10, // 499: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.propagation:type_name -> xatu.PropagationV2 + 12, // 500: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.attesting_validator:type_name -> xatu.AttestingValidatorV2 + 5, // 501: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 502: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.wallclock_slot:type_name -> xatu.SlotV2 + 240, // 503: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 504: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.topic:type_name -> google.protobuf.StringValue + 161, // 505: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 506: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBeaconAttestationData.message_id:type_name -> google.protobuf.StringValue + 5, // 507: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.epoch:type_name -> xatu.EpochV2 + 7, // 508: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.slot:type_name -> xatu.SlotV2 + 5, // 509: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 510: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 511: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.propagation:type_name -> xatu.PropagationV2 + 153, // 512: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.aggregator_index:type_name -> google.protobuf.UInt64Value + 240, // 513: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 514: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.topic:type_name -> google.protobuf.StringValue + 161, // 515: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 516: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubAggregateAndProofData.message_id:type_name -> google.protobuf.StringValue + 5, // 517: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.epoch:type_name -> xatu.EpochV2 + 7, // 518: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.slot:type_name -> xatu.SlotV2 + 5, // 519: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 520: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 521: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.propagation:type_name -> xatu.PropagationV2 + 240, // 522: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 523: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.topic:type_name -> google.protobuf.StringValue + 161, // 524: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 525: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubBlobSidecarData.message_id:type_name -> google.protobuf.StringValue + 5, // 526: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.epoch:type_name -> xatu.EpochV2 + 7, // 527: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.slot:type_name -> xatu.SlotV2 + 5, // 528: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.wallclock_epoch:type_name -> xatu.EpochV2 + 7, // 529: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.wallclock_slot:type_name -> xatu.SlotV2 + 10, // 530: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.propagation:type_name -> xatu.PropagationV2 + 240, // 531: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.metadata:type_name -> xatu.libp2p.TraceEventMetadata + 241, // 532: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.topic:type_name -> google.protobuf.StringValue + 161, // 533: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.message_size:type_name -> google.protobuf.UInt32Value + 241, // 534: xatu.ClientMeta.AdditionalLibP2PTraceGossipSubDataColumnSidecarData.message_id:type_name -> google.protobuf.StringValue + 5, // 535: xatu.ClientMeta.AdditionalEthV1ValidatorsData.epoch:type_name -> xatu.EpochV2 + 244, // 536: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.relay:type_name -> xatu.mevrelay.Relay + 7, // 537: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.slot:type_name -> xatu.SlotV2 + 7, // 538: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.wallclock_slot:type_name -> xatu.SlotV2 + 5, // 539: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.epoch:type_name -> xatu.EpochV2 + 5, // 540: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.wallclock_epoch:type_name -> xatu.EpochV2 + 153, // 541: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.requested_at_slot_time:type_name -> google.protobuf.UInt64Value + 153, // 542: xatu.ClientMeta.AdditionalMevRelayBidTraceBuilderBlockSubmissionData.response_at_slot_time:type_name -> google.protobuf.UInt64Value + 244, // 543: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.relay:type_name -> xatu.mevrelay.Relay + 7, // 544: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.slot:type_name -> xatu.SlotV2 + 7, // 545: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.wallclock_slot:type_name -> xatu.SlotV2 + 5, // 546: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.epoch:type_name -> xatu.EpochV2 + 5, // 547: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.wallclock_epoch:type_name -> xatu.EpochV2 + 153, // 548: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.requested_at_slot_time:type_name -> google.protobuf.UInt64Value + 153, // 549: xatu.ClientMeta.AdditionalMevRelayPayloadDeliveredData.response_at_slot_time:type_name -> google.protobuf.UInt64Value + 5, // 550: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.epoch:type_name -> xatu.EpochV2 + 7, // 551: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.slot:type_name -> xatu.SlotV2 + 153, // 552: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_count:type_name -> google.protobuf.UInt64Value + 153, // 553: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_total_bytes:type_name -> google.protobuf.UInt64Value + 153, // 554: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.transactions_total_bytes_compressed:type_name -> google.protobuf.UInt64Value + 153, // 555: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.total_bytes:type_name -> google.protobuf.UInt64Value + 153, // 556: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.total_bytes_compressed:type_name -> google.protobuf.UInt64Value + 153, // 557: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.request_duration_ms:type_name -> google.protobuf.UInt64Value + 154, // 558: xatu.ClientMeta.AdditionalEthV3ValidatorBlockData.requested_at:type_name -> google.protobuf.Timestamp + 244, // 559: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.relay:type_name -> xatu.mevrelay.Relay + 7, // 560: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.slot:type_name -> xatu.SlotV2 + 7, // 561: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.wallclock_slot:type_name -> xatu.SlotV2 + 5, // 562: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.epoch:type_name -> xatu.EpochV2 + 5, // 563: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.wallclock_epoch:type_name -> xatu.EpochV2 + 153, // 564: xatu.ClientMeta.AdditionalMevRelayValidatorRegistrationData.validator_index:type_name -> google.protobuf.UInt64Value + 5, // 565: xatu.ClientMeta.AdditionalNodeRecordConsensusData.finalized_epoch:type_name -> xatu.EpochV2 + 7, // 566: xatu.ClientMeta.AdditionalNodeRecordConsensusData.head_slot:type_name -> xatu.SlotV2 + 5, // 567: xatu.ClientMeta.AdditionalNodeRecordConsensusData.head_epoch:type_name -> xatu.EpochV2 + 5, // 568: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData.epoch:type_name -> xatu.EpochV2 + 7, // 569: xatu.ClientMeta.AdditionalConsensusEngineAPINewPayloadData.slot:type_name -> xatu.SlotV2 + 5, // 570: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData.epoch:type_name -> xatu.EpochV2 + 7, // 571: xatu.ClientMeta.AdditionalConsensusEngineAPIGetBlobsData.slot:type_name -> xatu.SlotV2 + 5, // 572: xatu.ClientMeta.AdditionalEthV1BeaconBlobData.epoch:type_name -> xatu.EpochV2 + 7, // 573: xatu.ClientMeta.AdditionalEthV1BeaconBlobData.slot:type_name -> xatu.SlotV2 + 8, // 574: xatu.ClientMeta.Ethereum.Execution.fork_id:type_name -> xatu.ForkID + 154, // 575: xatu.ServerMeta.Event.received_date_time:type_name -> google.protobuf.Timestamp + 139, // 576: xatu.ServerMeta.Client.geo:type_name -> xatu.ServerMeta.Geo + 139, // 577: xatu.ServerMeta.Peer.geo:type_name -> xatu.ServerMeta.Geo + 141, // 578: xatu.ServerMeta.AdditionalBeaconP2PAttestationData.peer:type_name -> xatu.ServerMeta.Peer + 141, // 579: xatu.ServerMeta.AdditionalLibp2PTraceConnectedData.peer:type_name -> xatu.ServerMeta.Peer + 141, // 580: xatu.ServerMeta.AdditionalLibp2PTraceDisconnectedData.peer:type_name -> xatu.ServerMeta.Peer + 141, // 581: xatu.ServerMeta.AdditionalLibP2PTraceSyntheticHeartbeatData.peer:type_name -> xatu.ServerMeta.Peer + 141, // 582: xatu.ServerMeta.AdditionalLibp2PTraceIdentifyData.peer:type_name -> xatu.ServerMeta.Peer + 139, // 583: xatu.ServerMeta.AdditionalNodeRecordConsensusData.geo:type_name -> xatu.ServerMeta.Geo + 139, // 584: xatu.ServerMeta.AdditionalNodeRecordExecutionData.geo:type_name -> xatu.ServerMeta.Geo + 153, // 585: xatu.ExecutionBlockMetrics.StateReads.accounts:type_name -> google.protobuf.UInt64Value + 153, // 586: xatu.ExecutionBlockMetrics.StateReads.storage_slots:type_name -> google.protobuf.UInt64Value + 153, // 587: xatu.ExecutionBlockMetrics.StateReads.code:type_name -> google.protobuf.UInt64Value + 153, // 588: xatu.ExecutionBlockMetrics.StateReads.code_bytes:type_name -> google.protobuf.UInt64Value + 153, // 589: xatu.ExecutionBlockMetrics.StateWrites.accounts:type_name -> google.protobuf.UInt64Value + 153, // 590: xatu.ExecutionBlockMetrics.StateWrites.accounts_deleted:type_name -> google.protobuf.UInt64Value + 153, // 591: xatu.ExecutionBlockMetrics.StateWrites.storage_slots:type_name -> google.protobuf.UInt64Value + 153, // 592: xatu.ExecutionBlockMetrics.StateWrites.storage_slots_deleted:type_name -> google.protobuf.UInt64Value + 153, // 593: xatu.ExecutionBlockMetrics.StateWrites.code:type_name -> google.protobuf.UInt64Value + 153, // 594: xatu.ExecutionBlockMetrics.StateWrites.code_bytes:type_name -> google.protobuf.UInt64Value + 245, // 595: xatu.ExecutionBlockMetrics.CacheEntry.hits:type_name -> google.protobuf.Int64Value + 245, // 596: xatu.ExecutionBlockMetrics.CacheEntry.misses:type_name -> google.protobuf.Int64Value + 163, // 597: xatu.ExecutionBlockMetrics.CacheEntry.hit_rate:type_name -> google.protobuf.DoubleValue + 245, // 598: xatu.ExecutionBlockMetrics.CodeCacheEntry.hits:type_name -> google.protobuf.Int64Value + 245, // 599: xatu.ExecutionBlockMetrics.CodeCacheEntry.misses:type_name -> google.protobuf.Int64Value + 163, // 600: xatu.ExecutionBlockMetrics.CodeCacheEntry.hit_rate:type_name -> google.protobuf.DoubleValue + 245, // 601: xatu.ExecutionBlockMetrics.CodeCacheEntry.hit_bytes:type_name -> google.protobuf.Int64Value + 245, // 602: xatu.ExecutionBlockMetrics.CodeCacheEntry.miss_bytes:type_name -> google.protobuf.Int64Value + 2, // 603: xatu.EventIngester.CreateEvents:input_type -> xatu.CreateEventsRequest + 3, // 604: xatu.EventIngester.CreateEvents:output_type -> xatu.CreateEventsResponse + 604, // [604:605] is the sub-list for method output_type + 603, // [603:604] is the sub-list for method input_type + 603, // [603:603] is the sub-list for extension type_name + 603, // [603:603] is the sub-list for extension extendee + 0, // [0:603] is the sub-list for field type_name } func init() { file_pkg_proto_xatu_event_ingester_proto_init() } @@ -17843,7 +19636,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AttestationDataSnapshot); i { + switch v := v.(*ClientMeta_AdditionalEthV2BeaconBlockAccessListData); i { case 0: return &v.state case 1: @@ -17855,7 +19648,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1ValidatorAttestationDataData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsExecutionPayloadData); i { case 0: return &v.state case 1: @@ -17867,7 +19660,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1EventsBlobSidecarData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsPayloadAttestationData); i { case 0: return &v.state case 1: @@ -17879,7 +19672,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsExecutionPayloadBidData); i { case 0: return &v.state case 1: @@ -17891,7 +19684,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[75].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1BeaconBlobSidecarData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsProposerPreferencesData); i { case 0: return &v.state case 1: @@ -17903,7 +19696,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[76].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalBeaconP2PAttestationData); i { + switch v := v.(*ClientMeta_AdditionalEthV2BeaconBlockPayloadAttestationData); i { case 0: return &v.state case 1: @@ -17915,7 +19708,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[77].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1ProposerDutyData); i { + switch v := v.(*ClientMeta_AdditionalEthV2BeaconBlockExecutionPayloadBidData); i { case 0: return &v.state case 1: @@ -17927,7 +19720,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[78].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData); i { case 0: return &v.state case 1: @@ -17939,7 +19732,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[79].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceAddPeerData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubExecutionPayloadBidData); i { case 0: return &v.state case 1: @@ -17951,7 +19744,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[80].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRemovePeerData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData); i { case 0: return &v.state case 1: @@ -17963,7 +19756,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[81].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRecvRPCData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubProposerPreferencesData); i { case 0: return &v.state case 1: @@ -17975,7 +19768,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[82].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceSendRPCData); i { + switch v := v.(*ClientMeta_AttestationDataSnapshot); i { case 0: return &v.state case 1: @@ -17987,7 +19780,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[83].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceDropRPCData); i { + switch v := v.(*ClientMeta_AdditionalEthV1ValidatorAttestationDataData); i { case 0: return &v.state case 1: @@ -17999,7 +19792,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[84].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsBlobSidecarData); i { case 0: return &v.state case 1: @@ -18011,7 +19804,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[85].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData); i { + switch v := v.(*ClientMeta_AdditionalEthV1EventsDataColumnSidecarData); i { case 0: return &v.state case 1: @@ -18023,7 +19816,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[86].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData); i { + switch v := v.(*ClientMeta_AdditionalEthV1BeaconBlobSidecarData); i { case 0: return &v.state case 1: @@ -18035,7 +19828,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[87].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData); i { + switch v := v.(*ClientMeta_AdditionalBeaconP2PAttestationData); i { case 0: return &v.state case 1: @@ -18047,7 +19840,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[88].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData); i { + switch v := v.(*ClientMeta_AdditionalEthV1ProposerDutyData); i { case 0: return &v.state case 1: @@ -18059,7 +19852,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[89].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceJoinData); i { + switch v := v.(*ClientMeta_AdditionalEthV2BeaconBlockElaboratedAttestationData); i { case 0: return &v.state case 1: @@ -18071,7 +19864,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[90].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceLeaveData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceAddPeerData); i { case 0: return &v.state case 1: @@ -18083,7 +19876,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[91].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGraftData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRemovePeerData); i { case 0: return &v.state case 1: @@ -18095,7 +19888,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[92].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTracePruneData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRecvRPCData); i { case 0: return &v.state case 1: @@ -18107,7 +19900,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[93].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceSendRPCData); i { case 0: return &v.state case 1: @@ -18119,7 +19912,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[94].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceDeliverMessageData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceDropRPCData); i { case 0: return &v.state case 1: @@ -18131,7 +19924,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[95].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTracePublishMessageData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIHaveData); i { case 0: return &v.state case 1: @@ -18143,7 +19936,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[96].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRejectMessageData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIWantData); i { case 0: return &v.state case 1: @@ -18155,7 +19948,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[97].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceConnectedData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlIDontWantData); i { case 0: return &v.state case 1: @@ -18167,7 +19960,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[98].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceDisconnectedData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlGraftData); i { case 0: return &v.state case 1: @@ -18179,7 +19972,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[99].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaControlPruneData); i { case 0: return &v.state case 1: @@ -18191,7 +19984,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[100].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceHandleMetadataData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceJoinData); i { case 0: return &v.state case 1: @@ -18203,7 +19996,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[101].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceHandleStatusData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceLeaveData); i { case 0: return &v.state case 1: @@ -18215,7 +20008,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[102].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceIdentifyData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGraftData); i { case 0: return &v.state case 1: @@ -18227,7 +20020,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[103].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTracePruneData); i { case 0: return &v.state case 1: @@ -18239,7 +20032,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[104].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceDuplicateMessageData); i { case 0: return &v.state case 1: @@ -18251,7 +20044,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[105].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceDeliverMessageData); i { case 0: return &v.state case 1: @@ -18263,7 +20056,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[106].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTracePublishMessageData); i { case 0: return &v.state case 1: @@ -18275,7 +20068,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[107].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRejectMessageData); i { case 0: return &v.state case 1: @@ -18287,7 +20080,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[108].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceConnectedData); i { case 0: return &v.state case 1: @@ -18299,7 +20092,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[109].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceDisconnectedData); i { case 0: return &v.state case 1: @@ -18311,7 +20104,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[110].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceSyntheticHeartbeatData); i { case 0: return &v.state case 1: @@ -18323,7 +20116,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[111].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceHandleMetadataData); i { case 0: return &v.state case 1: @@ -18335,7 +20128,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[112].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceHandleStatusData); i { case 0: return &v.state case 1: @@ -18347,7 +20140,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[113].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1ValidatorsData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceIdentifyData); i { case 0: return &v.state case 1: @@ -18359,7 +20152,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[114].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRpcDataColumnCustodyProbeData); i { case 0: return &v.state case 1: @@ -18371,7 +20164,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[115].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalMevRelayPayloadDeliveredData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaSubscriptionData); i { case 0: return &v.state case 1: @@ -18383,7 +20176,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[116].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV3ValidatorBlockData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceRPCMetaMessageData); i { case 0: return &v.state case 1: @@ -18395,7 +20188,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[117].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalMevRelayValidatorRegistrationData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconBlockData); i { case 0: return &v.state case 1: @@ -18407,7 +20200,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[118].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalNodeRecordConsensusData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationSourceData); i { case 0: return &v.state case 1: @@ -18419,7 +20212,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[119].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalConsensusEngineAPINewPayloadData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationTargetData); i { case 0: return &v.state case 1: @@ -18431,7 +20224,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[120].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBeaconAttestationData); i { case 0: return &v.state case 1: @@ -18443,7 +20236,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[121].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_AdditionalEthV1BeaconBlobData); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubAggregateAndProofData); i { case 0: return &v.state case 1: @@ -18455,7 +20248,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[122].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_Ethereum_Network); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubBlobSidecarData); i { case 0: return &v.state case 1: @@ -18467,7 +20260,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[123].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_Ethereum_Execution); i { + switch v := v.(*ClientMeta_AdditionalLibP2PTraceGossipSubDataColumnSidecarData); i { case 0: return &v.state case 1: @@ -18479,7 +20272,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[124].Exporter = func(v any, i int) any { - switch v := v.(*ClientMeta_Ethereum_Consensus); i { + switch v := v.(*ClientMeta_AdditionalEthV1ValidatorsData); i { case 0: return &v.state case 1: @@ -18491,7 +20284,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[125].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_Event); i { + switch v := v.(*ClientMeta_AdditionalMevRelayBidTraceBuilderBlockSubmissionData); i { case 0: return &v.state case 1: @@ -18503,7 +20296,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[126].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_Geo); i { + switch v := v.(*ClientMeta_AdditionalMevRelayPayloadDeliveredData); i { case 0: return &v.state case 1: @@ -18515,7 +20308,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[127].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_Client); i { + switch v := v.(*ClientMeta_AdditionalEthV3ValidatorBlockData); i { case 0: return &v.state case 1: @@ -18527,7 +20320,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[128].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_Peer); i { + switch v := v.(*ClientMeta_AdditionalMevRelayValidatorRegistrationData); i { case 0: return &v.state case 1: @@ -18539,7 +20332,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[129].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalBeaconP2PAttestationData); i { + switch v := v.(*ClientMeta_AdditionalNodeRecordConsensusData); i { case 0: return &v.state case 1: @@ -18551,7 +20344,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[130].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalLibp2PTraceConnectedData); i { + switch v := v.(*ClientMeta_AdditionalConsensusEngineAPINewPayloadData); i { case 0: return &v.state case 1: @@ -18563,7 +20356,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[131].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalLibp2PTraceDisconnectedData); i { + switch v := v.(*ClientMeta_AdditionalConsensusEngineAPIGetBlobsData); i { case 0: return &v.state case 1: @@ -18575,7 +20368,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[132].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData); i { + switch v := v.(*ClientMeta_AdditionalEthV1BeaconBlobData); i { case 0: return &v.state case 1: @@ -18587,7 +20380,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[133].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalLibp2PTraceIdentifyData); i { + switch v := v.(*ClientMeta_Ethereum_Network); i { case 0: return &v.state case 1: @@ -18599,7 +20392,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[134].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalNodeRecordConsensusData); i { + switch v := v.(*ClientMeta_Ethereum_Execution); i { case 0: return &v.state case 1: @@ -18611,7 +20404,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[135].Exporter = func(v any, i int) any { - switch v := v.(*ServerMeta_AdditionalNodeRecordExecutionData); i { + switch v := v.(*ClientMeta_Ethereum_Consensus); i { case 0: return &v.state case 1: @@ -18623,7 +20416,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[136].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionBlockMetrics_StateReads); i { + switch v := v.(*ServerMeta_Event); i { case 0: return &v.state case 1: @@ -18635,7 +20428,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[137].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionBlockMetrics_StateWrites); i { + switch v := v.(*ServerMeta_Geo); i { case 0: return &v.state case 1: @@ -18647,7 +20440,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[138].Exporter = func(v any, i int) any { - switch v := v.(*ExecutionBlockMetrics_CacheEntry); i { + switch v := v.(*ServerMeta_Client); i { case 0: return &v.state case 1: @@ -18659,6 +20452,138 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { } } file_pkg_proto_xatu_event_ingester_proto_msgTypes[139].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_Peer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[140].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalBeaconP2PAttestationData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[141].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalLibp2PTraceConnectedData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[142].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalLibp2PTraceDisconnectedData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[143].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalLibP2PTraceSyntheticHeartbeatData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[144].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalLibp2PTraceIdentifyData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[145].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalNodeRecordConsensusData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[146].Exporter = func(v any, i int) any { + switch v := v.(*ServerMeta_AdditionalNodeRecordExecutionData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[147].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionBlockMetrics_StateReads); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[148].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionBlockMetrics_StateWrites); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[149].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionBlockMetrics_CacheEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_proto_xatu_event_ingester_proto_msgTypes[150].Exporter = func(v any, i int) any { switch v := v.(*ExecutionBlockMetrics_CodeCacheEntry); i { case 0: return &v.state @@ -18753,6 +20678,17 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { (*ClientMeta_EthV1BeaconSyncCommittee)(nil), (*ClientMeta_EthV2BeaconBlockSyncAggregate)(nil), (*ClientMeta_Libp2PTraceIdentify)(nil), + (*ClientMeta_EthV2BeaconBlockAccessList)(nil), + (*ClientMeta_EthV1EventsExecutionPayload)(nil), + (*ClientMeta_EthV1EventsPayloadAttestation)(nil), + (*ClientMeta_EthV1EventsExecutionPayloadBid)(nil), + (*ClientMeta_EthV1EventsProposerPreferences)(nil), + (*ClientMeta_EthV2BeaconBlockPayloadAttestation)(nil), + (*ClientMeta_EthV2BeaconBlockExecutionPayloadBid)(nil), + (*ClientMeta_Libp2PTraceGossipsubExecutionPayloadEnvelope)(nil), + (*ClientMeta_Libp2PTraceGossipsubExecutionPayloadBid)(nil), + (*ClientMeta_Libp2PTraceGossipsubPayloadAttestationMessage)(nil), + (*ClientMeta_Libp2PTraceGossipsubProposerPreferences)(nil), } file_pkg_proto_xatu_event_ingester_proto_msgTypes[23].OneofWrappers = []any{ (*ServerMeta_BEACON_P2P_ATTESTATION)(nil), @@ -18850,6 +20786,17 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { (*DecoratedEvent_EthV1BeaconSyncCommittee)(nil), (*DecoratedEvent_EthV2BeaconBlockSyncAggregate)(nil), (*DecoratedEvent_ExecutionBlockMetrics)(nil), + (*DecoratedEvent_EthV2BeaconBlockAccessList)(nil), + (*DecoratedEvent_EthV1EventsExecutionPayload)(nil), + (*DecoratedEvent_EthV1EventsPayloadAttestation)(nil), + (*DecoratedEvent_EthV1EventsExecutionPayloadBid)(nil), + (*DecoratedEvent_EthV1EventsProposerPreferences)(nil), + (*DecoratedEvent_EthV2BeaconBlockPayloadAttestation)(nil), + (*DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid)(nil), + (*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope)(nil), + (*DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid)(nil), + (*DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage)(nil), + (*DecoratedEvent_Libp2PTraceGossipsubProposerPreferences)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -18857,7 +20804,7 @@ func file_pkg_proto_xatu_event_ingester_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_proto_xatu_event_ingester_proto_rawDesc, NumEnums: 2, - NumMessages: 140, + NumMessages: 151, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/proto/xatu/event_ingester.proto b/pkg/proto/xatu/event_ingester.proto index 2729fe80a..c89615364 100644 --- a/pkg/proto/xatu/event_ingester.proto +++ b/pkg/proto/xatu/event_ingester.proto @@ -19,6 +19,11 @@ import "pkg/proto/eth/v1/beacon_block.proto"; import "pkg/proto/eth/v1/execution_engine.proto"; import "pkg/proto/eth/v1/validator.proto"; import "pkg/proto/eth/v1/sync_committee.proto"; +import "pkg/proto/eth/v1/block_access_list.proto"; +import "pkg/proto/eth/v1/payload_attestation.proto"; +import "pkg/proto/eth/v1/execution_payload_bid.proto"; +import "pkg/proto/eth/v1/execution_payload_envelope.proto"; +import "pkg/proto/eth/v1/proposer_preferences.proto"; import "pkg/proto/mevrelay/bids.proto"; import "pkg/proto/mevrelay/relay.proto"; @@ -916,6 +921,120 @@ message ClientMeta { BlockIdentifier block = 1; } + // AdditionalEthV2BeaconBlockAccessListData contains additional data on + // block access list entries derived from beacon blocks. + message AdditionalEthV2BeaconBlockAccessListData { + // Block contains the information about the block that we are deriving the + // access list from. + BlockIdentifier block = 1; + // Execution block number from the execution payload. + google.protobuf.UInt64Value block_number = 2; + // Execution block hash from the execution payload (hex encoded). + string block_hash = 3; + } + + // EIP-7732 ePBS Additional Data messages + + // AdditionalEthV1EventsExecutionPayloadData contains additional data about + // execution payload envelope arrivals from the beacon API SSE. + message AdditionalEthV1EventsExecutionPayloadData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + PropagationV2 propagation = 3; + } + + // AdditionalEthV1EventsPayloadAttestationData contains additional data about + // individual PTC payload attestation messages from the beacon API SSE. + message AdditionalEthV1EventsPayloadAttestationData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + PropagationV2 propagation = 3; + } + + // AdditionalEthV1EventsExecutionPayloadBidData contains additional data about + // builder bids from the beacon API SSE. + message AdditionalEthV1EventsExecutionPayloadBidData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + PropagationV2 propagation = 3; + } + + // AdditionalEthV1EventsProposerPreferencesData contains additional data about + // proposer preferences from the beacon API SSE. + message AdditionalEthV1EventsProposerPreferencesData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + PropagationV2 propagation = 3; + } + + // AdditionalEthV2BeaconBlockPayloadAttestationData contains additional data + // about aggregated PTC payload attestations derived from cannon blocks. + message AdditionalEthV2BeaconBlockPayloadAttestationData { + BlockIdentifier block = 1; + } + + // AdditionalEthV2BeaconBlockExecutionPayloadBidData contains additional data + // about the winning execution payload bid derived from cannon blocks. + message AdditionalEthV2BeaconBlockExecutionPayloadBidData { + BlockIdentifier block = 1; + } + + // AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData contains additional + // data about execution payload envelope gossip from libp2p. + message AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + EpochV2 wallclock_epoch = 3 [ json_name = "wallclock_epoch" ]; + SlotV2 wallclock_slot = 4 [ json_name = "wallclock_slot" ]; + PropagationV2 propagation = 5; + xatu.libp2p.TraceEventMetadata metadata = 6; + google.protobuf.StringValue topic = 7; + google.protobuf.UInt32Value message_size = 8 [ json_name = "message_size" ]; + google.protobuf.StringValue message_id = 9 [ json_name = "message_id" ]; + } + + // AdditionalLibP2PTraceGossipSubExecutionPayloadBidData contains additional + // data about builder bid gossip from libp2p. + message AdditionalLibP2PTraceGossipSubExecutionPayloadBidData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + EpochV2 wallclock_epoch = 3 [ json_name = "wallclock_epoch" ]; + SlotV2 wallclock_slot = 4 [ json_name = "wallclock_slot" ]; + PropagationV2 propagation = 5; + xatu.libp2p.TraceEventMetadata metadata = 6; + google.protobuf.StringValue topic = 7; + google.protobuf.UInt32Value message_size = 8 [ json_name = "message_size" ]; + google.protobuf.StringValue message_id = 9 [ json_name = "message_id" ]; + } + + // AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData contains additional + // data about PTC attestation gossip from libp2p. + message AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + EpochV2 wallclock_epoch = 3 [ json_name = "wallclock_epoch" ]; + SlotV2 wallclock_slot = 4 [ json_name = "wallclock_slot" ]; + PropagationV2 propagation = 5; + xatu.libp2p.TraceEventMetadata metadata = 6; + google.protobuf.StringValue topic = 7; + google.protobuf.UInt32Value message_size = 8 [ json_name = "message_size" ]; + google.protobuf.StringValue message_id = 9 [ json_name = "message_id" ]; + } + + // AdditionalLibP2PTraceGossipSubProposerPreferencesData contains additional + // data about proposer preferences gossip from libp2p. + message AdditionalLibP2PTraceGossipSubProposerPreferencesData { + EpochV2 epoch = 1; + SlotV2 slot = 2; + EpochV2 wallclock_epoch = 3 [ json_name = "wallclock_epoch" ]; + SlotV2 wallclock_slot = 4 [ json_name = "wallclock_slot" ]; + PropagationV2 propagation = 5; + xatu.libp2p.TraceEventMetadata metadata = 6; + google.protobuf.StringValue topic = 7; + google.protobuf.UInt32Value message_size = 8 [ json_name = "message_size" ]; + google.protobuf.StringValue message_id = 9 [ json_name = "message_id" ]; + } + // AdditionalBlockprintBlockClassificationData was removed — blockprint is deprecated. message AttestationDataSnapshot { @@ -1763,6 +1882,25 @@ message ClientMeta { // AdditionalEthV2BeaconBlockSyncAggregateData contains additional data about the sync aggregate. AdditionalEthV2BeaconBlockSyncAggregateData eth_v2_beacon_block_sync_aggregate = 93 [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE" ]; AdditionalLibP2PTraceIdentifyData libp2p_trace_identify = 94 [ json_name = "LIBP2P_TRACE_IDENTIFY" ]; + // AdditionalEthV2BeaconBlockAccessListData contains additional data on + // block access list entries derived from beacon blocks. + AdditionalEthV2BeaconBlockAccessListData eth_v2_beacon_block_access_list = 95 [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" ]; + + // EIP-7732 ePBS: Sentry SSE additional data + AdditionalEthV1EventsExecutionPayloadData eth_v1_events_execution_payload = 96 [ json_name = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD" ]; + AdditionalEthV1EventsPayloadAttestationData eth_v1_events_payload_attestation = 97 [ json_name = "BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION" ]; + AdditionalEthV1EventsExecutionPayloadBidData eth_v1_events_execution_payload_bid = 98 [ json_name = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID" ]; + AdditionalEthV1EventsProposerPreferencesData eth_v1_events_proposer_preferences = 99 [ json_name = "BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES" ]; + + // EIP-7732 ePBS: Cannon additional data + AdditionalEthV2BeaconBlockPayloadAttestationData eth_v2_beacon_block_payload_attestation = 100 [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION" ]; + AdditionalEthV2BeaconBlockExecutionPayloadBidData eth_v2_beacon_block_execution_payload_bid = 101 [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID" ]; + + // EIP-7732 ePBS: LibP2P gossip additional data + AdditionalLibP2PTraceGossipSubExecutionPayloadEnvelopeData libp2p_trace_gossipsub_execution_payload_envelope = 102 [ json_name = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE" ]; + AdditionalLibP2PTraceGossipSubExecutionPayloadBidData libp2p_trace_gossipsub_execution_payload_bid = 103 [ json_name = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID" ]; + AdditionalLibP2PTraceGossipSubPayloadAttestationMessageData libp2p_trace_gossipsub_payload_attestation_message = 104 [ json_name = "LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE" ]; + AdditionalLibP2PTraceGossipSubProposerPreferencesData libp2p_trace_gossipsub_proposer_preferences = 105 [ json_name = "LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES" ]; } // ModuleName contains the name of the module that sent the event. @@ -1982,6 +2120,23 @@ message Event { BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE = 86; EXECUTION_BLOCK_METRICS = 87; LIBP2P_TRACE_IDENTIFY = 88; + BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST = 89; + + // EIP-7732 ePBS: Sentry SSE events + BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD = 90; + BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION = 91; + BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID = 92; + BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES = 93; + + // EIP-7732 ePBS: Cannon derived events + BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION = 94; + BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID = 95; + + // EIP-7732 ePBS: P2P gossip events + LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE = 96; + LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID = 97; + LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE = 98; + LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES = 99; } // Name is the name of the event. Name name = 1; @@ -2289,6 +2444,34 @@ message DecoratedEvent { [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_SYNC_AGGREGATE" ]; ExecutionBlockMetrics execution_block_metrics = 209 [ json_name = "EXECUTION_BLOCK_METRICS" ]; + xatu.eth.v1.BlockAccessListChange eth_v2_beacon_block_access_list = 210 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" ]; + + // EIP-7732 ePBS: Sentry SSE events + xatu.eth.v1.SignedExecutionPayloadEnvelope eth_v1_events_execution_payload = 211 + [ json_name = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD" ]; + xatu.eth.v1.PayloadAttestationMessage eth_v1_events_payload_attestation = 212 + [ json_name = "BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION" ]; + xatu.eth.v1.SignedExecutionPayloadBid eth_v1_events_execution_payload_bid = 213 + [ json_name = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID" ]; + xatu.eth.v1.SignedProposerPreferences eth_v1_events_proposer_preferences = 214 + [ json_name = "BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES" ]; + + // EIP-7732 ePBS: Cannon derived events + xatu.eth.v1.PayloadAttestation eth_v2_beacon_block_payload_attestation = 215 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION" ]; + xatu.eth.v1.SignedExecutionPayloadBid eth_v2_beacon_block_execution_payload_bid = 216 + [ json_name = "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID" ]; + + // EIP-7732 ePBS: P2P gossip events (use gossipsub summary types) + xatu.libp2p.gossipsub.eth.ExecutionPayloadEnvelope libp2p_trace_gossipsub_execution_payload_envelope = 217 + [ json_name = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE" ]; + xatu.libp2p.gossipsub.eth.ExecutionPayloadBid libp2p_trace_gossipsub_execution_payload_bid = 218 + [ json_name = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID" ]; + xatu.libp2p.gossipsub.eth.PayloadAttestationMessage libp2p_trace_gossipsub_payload_attestation_message = 219 + [ json_name = "LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE" ]; + xatu.libp2p.gossipsub.eth.ProposerPreferences libp2p_trace_gossipsub_proposer_preferences = 220 + [ json_name = "LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES" ]; }; } diff --git a/pkg/sentry/beacon_blob.go b/pkg/sentry/beacon_blob.go index 066cd675e..3223cc30a 100644 --- a/pkg/sentry/beacon_blob.go +++ b/pkg/sentry/beacon_blob.go @@ -200,6 +200,12 @@ func extractKZGCommitments(block *spec.VersionedSignedBeaconBlock) ([]deneb.KZGC if block.Fulu != nil && block.Fulu.Message != nil && block.Fulu.Message.Body != nil { return block.Fulu.Message.Body.BlobKZGCommitments, nil } + case spec.DataVersionGloas: + // TODO(epbs): Under EIP-7732, BlobKZGCommitments move to the ExecutionPayloadBid. + // Source from bid once go-eth2-client adds ePBS support. + if block.Gloas != nil && block.Gloas.Message != nil && block.Gloas.Message.Body != nil { + return block.Gloas.Message.Body.BlobKZGCommitments, nil + } } return nil, fmt.Errorf("block version %s does not support KZG commitments", block.Version) diff --git a/pkg/sentry/event/beacon/eth/v2/beacon_block.go b/pkg/sentry/event/beacon/eth/v2/beacon_block.go index acf5908c7..a1cc5973e 100644 --- a/pkg/sentry/event/beacon/eth/v2/beacon_block.go +++ b/pkg/sentry/event/beacon/eth/v2/beacon_block.go @@ -218,6 +218,8 @@ func getBlockMessage(block *spec.VersionedSignedBeaconBlock) (ssz.Marshaler, err return block.Electra.Message, nil case spec.DataVersionFulu: return block.Fulu.Message, nil + case spec.DataVersionGloas: + return block.Gloas.Message, nil default: return nil, fmt.Errorf("unsupported block version: %s", block.Version) } diff --git a/pkg/sentry/event/beacon/eth/v3/proposed_validator_block.go b/pkg/sentry/event/beacon/eth/v3/proposed_validator_block.go index fa094c789..9751d3b29 100644 --- a/pkg/sentry/event/beacon/eth/v3/proposed_validator_block.go +++ b/pkg/sentry/event/beacon/eth/v3/proposed_validator_block.go @@ -205,6 +205,20 @@ func (e *ValidatorBlock) getAdditionalData() (*xatu.ClientMeta_AdditionalEthV3Va } addTxData(fuluTxs) + case spec.DataVersionGloas: + // TODO(epbs): Under EIP-7732, ExecutionPayload and Transactions move to the + // envelope. Source from ExecutionPayloadEnvelope once go-eth2-client adds ePBS support. + totalBytes, totalBytesCompressed, err = computeBlockSize(e.event.Gloas.Body) + if err != nil { + e.log.WithError(err).Warn("Failed to compute gloas block size") + } + + gloasTxs := make([][]byte, len(e.event.Gloas.Body.ExecutionPayload.Transactions)) + for i, tx := range e.event.Gloas.Body.ExecutionPayload.Transactions { + gloasTxs[i] = tx + } + + addTxData(gloasTxs) default: e.log.WithError(err).Warn("Failed to get block message to compute block size. Missing fork version?") diff --git a/pkg/server/persistence/cannon/location.go b/pkg/server/persistence/cannon/location.go index c88a2d638..f0a3fe52b 100644 --- a/pkg/server/persistence/cannon/location.go +++ b/pkg/server/persistence/cannon/location.go @@ -202,6 +202,39 @@ func (l *Location) Marshal(msg *xatu.CannonLocation) error { return fmt.Errorf("%w: %s", ErrFailedToMarshal, err) } + l.Value = string(b) + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST: + l.Type = "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" + + data := msg.GetEthV2BeaconBlockAccessList() + + b, err := protojson.Marshal(data) + if err != nil { + return fmt.Errorf("%w: %s", ErrFailedToMarshal, err) + } + + l.Value = string(b) + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION: + l.Type = "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION" + + data := msg.GetEthV2BeaconBlockPayloadAttestation() + + b, err := protojson.Marshal(data) + if err != nil { + return fmt.Errorf("%w: %s", ErrFailedToMarshal, err) + } + + l.Value = string(b) + case xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID: + l.Type = "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID" + + data := msg.GetEthV2BeaconBlockExecutionPayloadBid() + + b, err := protojson.Marshal(data) + if err != nil { + return fmt.Errorf("%w: %s", ErrFailedToMarshal, err) + } + l.Value = string(b) default: return fmt.Errorf("unknown type: %s", msg.Type) @@ -414,6 +447,45 @@ func (l *Location) Unmarshal() (*xatu.CannonLocation, error) { msg.Data = &xatu.CannonLocation_EthV2BeaconBlockSyncAggregate{ EthV2BeaconBlockSyncAggregate: data, } + case "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST": + msg.Type = xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST + + data := &xatu.CannonLocationEthV2BeaconBlockAccessList{} + + err := protojson.Unmarshal([]byte(l.Value), data) + if err != nil { + return nil, fmt.Errorf("%w: %s", ErrFailedToUnmarshal, err) + } + + msg.Data = &xatu.CannonLocation_EthV2BeaconBlockAccessList{ + EthV2BeaconBlockAccessList: data, + } + case "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION": + msg.Type = xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION + + data := &xatu.CannonLocationEthV2BeaconBlockPayloadAttestation{} + + err := protojson.Unmarshal([]byte(l.Value), data) + if err != nil { + return nil, fmt.Errorf("%w: %s", ErrFailedToUnmarshal, err) + } + + msg.Data = &xatu.CannonLocation_EthV2BeaconBlockPayloadAttestation{ + EthV2BeaconBlockPayloadAttestation: data, + } + case "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID": + msg.Type = xatu.CannonType_BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID + + data := &xatu.CannonLocationEthV2BeaconBlockExecutionPayloadBid{} + + err := protojson.Unmarshal([]byte(l.Value), data) + if err != nil { + return nil, fmt.Errorf("%w: %s", ErrFailedToUnmarshal, err) + } + + msg.Data = &xatu.CannonLocation_EthV2BeaconBlockExecutionPayloadBid{ + EthV2BeaconBlockExecutionPayloadBid: data, + } default: return nil, fmt.Errorf("unknown type: %s", l.Type) } diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload.go b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload.go new file mode 100644 index 000000000..614fbb491 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload.go @@ -0,0 +1,46 @@ +package v1 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + EventsExecutionPayloadType = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD" +) + +type EventsExecutionPayload struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewEventsExecutionPayload(log logrus.FieldLogger, event *xatu.DecoratedEvent) *EventsExecutionPayload { + return &EventsExecutionPayload{ + log: log.WithField("event", EventsExecutionPayloadType), + event: event, + } +} + +func (e *EventsExecutionPayload) Type() string { + return EventsExecutionPayloadType +} + +func (e *EventsExecutionPayload) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_EthV1EventsExecutionPayload) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *EventsExecutionPayload) Filter(_ context.Context) bool { + return false +} + +func (e *EventsExecutionPayload) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload_bid.go b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload_bid.go new file mode 100644 index 000000000..95c9ca5a4 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_execution_payload_bid.go @@ -0,0 +1,46 @@ +package v1 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + EventsExecutionPayloadBidType = "BEACON_API_ETH_V1_EVENTS_EXECUTION_PAYLOAD_BID" +) + +type EventsExecutionPayloadBid struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewEventsExecutionPayloadBid(log logrus.FieldLogger, event *xatu.DecoratedEvent) *EventsExecutionPayloadBid { + return &EventsExecutionPayloadBid{ + log: log.WithField("event", EventsExecutionPayloadBidType), + event: event, + } +} + +func (e *EventsExecutionPayloadBid) Type() string { + return EventsExecutionPayloadBidType +} + +func (e *EventsExecutionPayloadBid) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_EthV1EventsExecutionPayloadBid) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *EventsExecutionPayloadBid) Filter(_ context.Context) bool { + return false +} + +func (e *EventsExecutionPayloadBid) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v1/events_payload_attestation.go b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_payload_attestation.go new file mode 100644 index 000000000..94f4c5084 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_payload_attestation.go @@ -0,0 +1,46 @@ +package v1 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + EventsPayloadAttestationType = "BEACON_API_ETH_V1_EVENTS_PAYLOAD_ATTESTATION" +) + +type EventsPayloadAttestation struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewEventsPayloadAttestation(log logrus.FieldLogger, event *xatu.DecoratedEvent) *EventsPayloadAttestation { + return &EventsPayloadAttestation{ + log: log.WithField("event", EventsPayloadAttestationType), + event: event, + } +} + +func (e *EventsPayloadAttestation) Type() string { + return EventsPayloadAttestationType +} + +func (e *EventsPayloadAttestation) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_EthV1EventsPayloadAttestation) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *EventsPayloadAttestation) Filter(_ context.Context) bool { + return false +} + +func (e *EventsPayloadAttestation) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v1/events_proposer_preferences.go b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_proposer_preferences.go new file mode 100644 index 000000000..2ea3c8c8f --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v1/events_proposer_preferences.go @@ -0,0 +1,46 @@ +package v1 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + EventsProposerPreferencesType = "BEACON_API_ETH_V1_EVENTS_PROPOSER_PREFERENCES" +) + +type EventsProposerPreferences struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewEventsProposerPreferences(log logrus.FieldLogger, event *xatu.DecoratedEvent) *EventsProposerPreferences { + return &EventsProposerPreferences{ + log: log.WithField("event", EventsProposerPreferencesType), + event: event, + } +} + +func (e *EventsProposerPreferences) Type() string { + return EventsProposerPreferencesType +} + +func (e *EventsProposerPreferences) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_EthV1EventsProposerPreferences) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *EventsProposerPreferences) Filter(_ context.Context) bool { + return false +} + +func (e *EventsProposerPreferences) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block.go b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block.go index 492986dc5..535249349 100644 --- a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block.go +++ b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block.go @@ -98,6 +98,16 @@ func (b *BeaconBlock) Filter(ctx context.Context) bool { } hash = fuluBlock.FuluBlock.StateRoot + case spec.DataVersionGloas.String(): + //nolint:staticcheck // Handled by v2 + gloasBlock, ok := data.EthV2BeaconBlock.GetMessage().(*v2.EventBlock_GloasBlock) + if !ok { + b.log.Error("failed to cast message to GloasBlock") + + return true + } + + hash = gloasBlock.GloasBlock.GetStateRoot() default: b.log.Error(fmt.Errorf("unknown version: %s", version)) diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_access_list.go b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_access_list.go new file mode 100644 index 000000000..35ec5f696 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_access_list.go @@ -0,0 +1,46 @@ +package v2 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + BeaconBlockAccessListType = "BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST" +) + +type BeaconBlockAccessList struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewBeaconBlockAccessList(log logrus.FieldLogger, event *xatu.DecoratedEvent) *BeaconBlockAccessList { + return &BeaconBlockAccessList{ + log: log.WithField("event", BeaconBlockAccessListType), + event: event, + } +} + +func (b *BeaconBlockAccessList) Type() string { + return BeaconBlockAccessListType +} + +func (b *BeaconBlockAccessList) Validate(ctx context.Context) error { + _, ok := b.event.GetData().(*xatu.DecoratedEvent_EthV2BeaconBlockAccessList) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (b *BeaconBlockAccessList) Filter(ctx context.Context) bool { + return false +} + +func (b *BeaconBlockAccessList) AppendServerMeta(ctx context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_execution_payload_bid.go b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_execution_payload_bid.go new file mode 100644 index 000000000..2a8cf6534 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_execution_payload_bid.go @@ -0,0 +1,46 @@ +package v2 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + BeaconBlockExecutionPayloadBidType = "BEACON_API_ETH_V2_BEACON_BLOCK_EXECUTION_PAYLOAD_BID" +) + +type BeaconBlockExecutionPayloadBid struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewBeaconBlockExecutionPayloadBid(log logrus.FieldLogger, event *xatu.DecoratedEvent) *BeaconBlockExecutionPayloadBid { + return &BeaconBlockExecutionPayloadBid{ + log: log.WithField("event", BeaconBlockExecutionPayloadBidType), + event: event, + } +} + +func (b *BeaconBlockExecutionPayloadBid) Type() string { + return BeaconBlockExecutionPayloadBidType +} + +func (b *BeaconBlockExecutionPayloadBid) Validate(_ context.Context) error { + _, ok := b.event.GetData().(*xatu.DecoratedEvent_EthV2BeaconBlockExecutionPayloadBid) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (b *BeaconBlockExecutionPayloadBid) Filter(_ context.Context) bool { + return false +} + +func (b *BeaconBlockExecutionPayloadBid) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_payload_attestation.go b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_payload_attestation.go new file mode 100644 index 000000000..8f757abbd --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_payload_attestation.go @@ -0,0 +1,46 @@ +package v2 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + BeaconBlockPayloadAttestationType = "BEACON_API_ETH_V2_BEACON_BLOCK_PAYLOAD_ATTESTATION" +) + +type BeaconBlockPayloadAttestation struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewBeaconBlockPayloadAttestation(log logrus.FieldLogger, event *xatu.DecoratedEvent) *BeaconBlockPayloadAttestation { + return &BeaconBlockPayloadAttestation{ + log: log.WithField("event", BeaconBlockPayloadAttestationType), + event: event, + } +} + +func (b *BeaconBlockPayloadAttestation) Type() string { + return BeaconBlockPayloadAttestationType +} + +func (b *BeaconBlockPayloadAttestation) Validate(_ context.Context) error { + _, ok := b.event.GetData().(*xatu.DecoratedEvent_EthV2BeaconBlockPayloadAttestation) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (b *BeaconBlockPayloadAttestation) Filter(_ context.Context) bool { + return false +} + +func (b *BeaconBlockPayloadAttestation) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_v2.go b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_v2.go index 8eab29dcb..47c3644c9 100644 --- a/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_v2.go +++ b/pkg/server/service/event-ingester/event/beacon/eth/v2/beacon_block_v2.go @@ -94,6 +94,15 @@ func (b *BeaconBlockV2) Filter(ctx context.Context) bool { } hash = fuluBlock.FuluBlock.StateRoot + case spec.DataVersionGloas.String(): + gloasBlock, ok := data.EthV2BeaconBlockV2.GetMessage().(*v2.EventBlockV2_GloasBlock) + if !ok { + b.log.Error("failed to cast message to GloasBlock") + + return true + } + + hash = gloasBlock.GloasBlock.GetStateRoot() default: b.log.Error(fmt.Errorf("unknown version: %s", version)) diff --git a/pkg/server/service/event-ingester/event/event.go b/pkg/server/service/event-ingester/event/event.go index a70770c1d..e9f54868e 100644 --- a/pkg/server/service/event-ingester/event/event.go +++ b/pkg/server/service/event-ingester/event/event.go @@ -65,6 +65,7 @@ var ( TypeBeaconEthV2BeaconExecutionTransaction Type = v2.BeaconBlockExecutionTransactionType TypeBeaconEthV2BeaconBLSToExecutionChange Type = v2.BeaconBlockBLSToExecutionChangeType TypeBeaconEthV2BeaconWithdrawal Type = v2.BeaconBlockWithdrawalType + TypeBeaconEthV2BeaconBlockAccessList Type = v2.BeaconBlockAccessListType TypeBeaconETHV1EventsBlobSidecar Type = v1.EventsBlobSidecarType TypeBeaconETHV1EventsDataColumnSidecar Type = v1.EventsDataColumnSidecarType TypeBeaconETHV1BeaconBlobSidecar Type = v1.BeaconBlobSidecarType @@ -111,6 +112,22 @@ var ( TypeLibP2PTraceSyntheticHeartbeat Type = Type(libp2p.TraceSyntheticHeartbeatType) TypeLibP2PTraceIdentify Type = Type(libp2p.TraceIdentifyType) TypeLibP2PRPCDataColumnCustodyProbe Type = Type(libp2p.TypeLibp2pRPCDataColumnCustodyProbe) + + // EIP-7732 ePBS: Sentry SSE events + TypeBeaconETHV1EventsExecutionPayload Type = v1.EventsExecutionPayloadType + TypeBeaconETHV1EventsPayloadAttestation Type = v1.EventsPayloadAttestationType + TypeBeaconETHV1EventsExecutionPayloadBid Type = v1.EventsExecutionPayloadBidType + TypeBeaconETHV1EventsProposerPreferences Type = v1.EventsProposerPreferencesType + + // EIP-7732 ePBS: Cannon derived events + TypeBeaconEthV2BeaconBlockPayloadAttestation Type = v2.BeaconBlockPayloadAttestationType + TypeBeaconEthV2BeaconBlockExecutionPayloadBid Type = v2.BeaconBlockExecutionPayloadBidType + + // EIP-7732 ePBS: P2P gossip events + TypeLibP2PTraceGossipSubExecutionPayloadEnvelope Type = Type(libp2p.TraceGossipSubExecutionPayloadEnvelopeType) + TypeLibP2PTraceGossipSubExecutionPayloadBid Type = Type(libp2p.TraceGossipSubExecutionPayloadBidType) + TypeLibP2PTraceGossipSubPayloadAttestationMessage Type = Type(libp2p.TraceGossipSubPayloadAttestationMessageType) + TypeLibP2PTraceGossipSubProposerPreferences Type = Type(libp2p.TraceGossipSubProposerPreferencesType) ) type Event interface { @@ -267,6 +284,9 @@ func NewEventRouter(log logrus.FieldLogger, cache store.Cache, geoipProvider geo router.RegisterHandler(TypeBeaconEthV2BeaconWithdrawal, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { return v2.NewBeaconBlockWithdrawal(router.log, event), nil }) + router.RegisterHandler(TypeBeaconEthV2BeaconBlockAccessList, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v2.NewBeaconBlockAccessList(router.log, event), nil + }) router.RegisterHandler(TypeBeaconETHV1EventsBlobSidecar, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { return v1.NewEventsBlobSidecar(router.log, event), nil }) @@ -397,6 +417,42 @@ func NewEventRouter(log logrus.FieldLogger, cache store.Cache, geoipProvider geo return libp2p.NewDataColumnCustodyProbe(router.log, event), nil }) + // EIP-7732 ePBS: Sentry SSE events + router.RegisterHandler(TypeBeaconETHV1EventsExecutionPayload, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v1.NewEventsExecutionPayload(router.log, event), nil + }) + router.RegisterHandler(TypeBeaconETHV1EventsPayloadAttestation, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v1.NewEventsPayloadAttestation(router.log, event), nil + }) + router.RegisterHandler(TypeBeaconETHV1EventsExecutionPayloadBid, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v1.NewEventsExecutionPayloadBid(router.log, event), nil + }) + router.RegisterHandler(TypeBeaconETHV1EventsProposerPreferences, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v1.NewEventsProposerPreferences(router.log, event), nil + }) + + // EIP-7732 ePBS: Cannon derived events + router.RegisterHandler(TypeBeaconEthV2BeaconBlockPayloadAttestation, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v2.NewBeaconBlockPayloadAttestation(router.log, event), nil + }) + router.RegisterHandler(TypeBeaconEthV2BeaconBlockExecutionPayloadBid, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return v2.NewBeaconBlockExecutionPayloadBid(router.log, event), nil + }) + + // EIP-7732 ePBS: P2P gossip events + router.RegisterHandler(TypeLibP2PTraceGossipSubExecutionPayloadEnvelope, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return libp2p.NewTraceGossipSubExecutionPayloadEnvelope(router.log, event), nil + }) + router.RegisterHandler(TypeLibP2PTraceGossipSubExecutionPayloadBid, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return libp2p.NewTraceGossipSubExecutionPayloadBid(router.log, event), nil + }) + router.RegisterHandler(TypeLibP2PTraceGossipSubPayloadAttestationMessage, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return libp2p.NewTraceGossipSubPayloadAttestationMessage(router.log, event), nil + }) + router.RegisterHandler(TypeLibP2PTraceGossipSubProposerPreferences, func(event *xatu.DecoratedEvent, router *EventRouter) (Event, error) { + return libp2p.NewTraceGossipSubProposerPreferences(router.log, event), nil + }) + return router } diff --git a/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_bid.go b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_bid.go new file mode 100644 index 000000000..1b0f41e54 --- /dev/null +++ b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_bid.go @@ -0,0 +1,46 @@ +package libp2p + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + TraceGossipSubExecutionPayloadBidType = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_BID" +) + +type TraceGossipSubExecutionPayloadBid struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewTraceGossipSubExecutionPayloadBid(log logrus.FieldLogger, event *xatu.DecoratedEvent) *TraceGossipSubExecutionPayloadBid { + return &TraceGossipSubExecutionPayloadBid{ + log: log.WithField("event", TraceGossipSubExecutionPayloadBidType), + event: event, + } +} + +func (e *TraceGossipSubExecutionPayloadBid) Type() string { + return TraceGossipSubExecutionPayloadBidType +} + +func (e *TraceGossipSubExecutionPayloadBid) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadBid) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *TraceGossipSubExecutionPayloadBid) Filter(_ context.Context) bool { + return false +} + +func (e *TraceGossipSubExecutionPayloadBid) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_envelope.go b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_envelope.go new file mode 100644 index 000000000..12e678323 --- /dev/null +++ b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_execution_payload_envelope.go @@ -0,0 +1,46 @@ +package libp2p + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + TraceGossipSubExecutionPayloadEnvelopeType = "LIBP2P_TRACE_GOSSIPSUB_EXECUTION_PAYLOAD_ENVELOPE" +) + +type TraceGossipSubExecutionPayloadEnvelope struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewTraceGossipSubExecutionPayloadEnvelope(log logrus.FieldLogger, event *xatu.DecoratedEvent) *TraceGossipSubExecutionPayloadEnvelope { + return &TraceGossipSubExecutionPayloadEnvelope{ + log: log.WithField("event", TraceGossipSubExecutionPayloadEnvelopeType), + event: event, + } +} + +func (e *TraceGossipSubExecutionPayloadEnvelope) Type() string { + return TraceGossipSubExecutionPayloadEnvelopeType +} + +func (e *TraceGossipSubExecutionPayloadEnvelope) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_Libp2PTraceGossipsubExecutionPayloadEnvelope) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *TraceGossipSubExecutionPayloadEnvelope) Filter(_ context.Context) bool { + return false +} + +func (e *TraceGossipSubExecutionPayloadEnvelope) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_payload_attestation_message.go b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_payload_attestation_message.go new file mode 100644 index 000000000..d38cfb1e3 --- /dev/null +++ b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_payload_attestation_message.go @@ -0,0 +1,46 @@ +package libp2p + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + TraceGossipSubPayloadAttestationMessageType = "LIBP2P_TRACE_GOSSIPSUB_PAYLOAD_ATTESTATION_MESSAGE" +) + +type TraceGossipSubPayloadAttestationMessage struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewTraceGossipSubPayloadAttestationMessage(log logrus.FieldLogger, event *xatu.DecoratedEvent) *TraceGossipSubPayloadAttestationMessage { + return &TraceGossipSubPayloadAttestationMessage{ + log: log.WithField("event", TraceGossipSubPayloadAttestationMessageType), + event: event, + } +} + +func (e *TraceGossipSubPayloadAttestationMessage) Type() string { + return TraceGossipSubPayloadAttestationMessageType +} + +func (e *TraceGossipSubPayloadAttestationMessage) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_Libp2PTraceGossipsubPayloadAttestationMessage) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *TraceGossipSubPayloadAttestationMessage) Filter(_ context.Context) bool { + return false +} + +func (e *TraceGossipSubPayloadAttestationMessage) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +} diff --git a/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_proposer_preferences.go b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_proposer_preferences.go new file mode 100644 index 000000000..2c8b0afe8 --- /dev/null +++ b/pkg/server/service/event-ingester/event/libp2p/trace_gossipsub_proposer_preferences.go @@ -0,0 +1,46 @@ +package libp2p + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + TraceGossipSubProposerPreferencesType = "LIBP2P_TRACE_GOSSIPSUB_PROPOSER_PREFERENCES" +) + +type TraceGossipSubProposerPreferences struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewTraceGossipSubProposerPreferences(log logrus.FieldLogger, event *xatu.DecoratedEvent) *TraceGossipSubProposerPreferences { + return &TraceGossipSubProposerPreferences{ + log: log.WithField("event", TraceGossipSubProposerPreferencesType), + event: event, + } +} + +func (e *TraceGossipSubProposerPreferences) Type() string { + return TraceGossipSubProposerPreferencesType +} + +func (e *TraceGossipSubProposerPreferences) Validate(_ context.Context) error { + _, ok := e.event.GetData().(*xatu.DecoratedEvent_Libp2PTraceGossipsubProposerPreferences) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (e *TraceGossipSubProposerPreferences) Filter(_ context.Context) bool { + return false +} + +func (e *TraceGossipSubProposerPreferences) AppendServerMeta(_ context.Context, meta *xatu.ServerMeta) *xatu.ServerMeta { + return meta +}