From 13e6e9f829889a9690b89cf3c49541902317f500 Mon Sep 17 00:00:00 2001 From: Simon Paitrault Date: Tue, 28 Apr 2026 20:26:24 +0200 Subject: [PATCH] feat(grpc): reject non-writable proof versions at ingress (#1522) Reject certificates carrying non-writable SP1 proof versions at gRPC ingress and return a dedicated structured UnsupportedProofVersion error. Rely on agglayer-sp1 policy semantics for the version decision, carry unsupported versions through a typed compat conversion error, and reuse shared typed proof fixtures in grpc tests. --------- Signed-off-by: Simon Paitrault --- Cargo.lock | 2 + crates/agglayer-grpc-api/Cargo.toml | 2 + .../src/certificate_submission_service/mod.rs | 21 +- .../src/tests/certificate_submission.rs | 240 ++++ crates/agglayer-grpc-api/src/tests/mod.rs | 1 + crates/agglayer-grpc-types/Cargo.toml | 3 +- .../src/compat/v1/certificate.rs | 104 +- .../certificate_submission_error_kind.rs | 3 + .../agglayer-grpc-types/src/compat/v1/mod.rs | 1 + .../src/compat/v1/tests.rs | 127 ++- .../src/generated/agglayer.node.v1.rs | 1006 +++++++++-------- .../src/generated/agglayer.node.v1.serde.rs | 3 + crates/agglayer-sp1/src/error.rs | 28 + crates/agglayer-sp1/tests/policy.rs | 20 + crates/agglayer-types/src/certificate/mod.rs | 2 +- .../src/certificate/testutils.rs | 15 +- crates/agglayer-types/src/lib.rs | 4 +- .../node/v1/certificate_submission.proto | 3 + typos.toml | 2 +- 19 files changed, 1072 insertions(+), 515 deletions(-) create mode 100644 crates/agglayer-grpc-api/src/tests/certificate_submission.rs diff --git a/Cargo.lock b/Cargo.lock index 3bc935cda..cb6e33538 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -271,6 +271,7 @@ dependencies = [ "agglayer-storage", "agglayer-types", "alloy", + "async-trait", "axum 0.8.8", "eyre", "http 1.4.0", @@ -308,6 +309,7 @@ name = "agglayer-grpc-types" version = "0.1.0" dependencies = [ "agglayer-interop", + "agglayer-sp1", "agglayer-types", "bolero", "eyre", diff --git a/crates/agglayer-grpc-api/Cargo.toml b/crates/agglayer-grpc-api/Cargo.toml index d36c8a941..5d3cbd278 100644 --- a/crates/agglayer-grpc-api/Cargo.toml +++ b/crates/agglayer-grpc-api/Cargo.toml @@ -31,6 +31,8 @@ uuid = { version = "1.22", features = ["v4"] } [dev-dependencies] agglayer-grpc-client.workspace = true agglayer-storage = { workspace = true, features = ["testutils"] } +agglayer-types = { workspace = true, features = ["testutils"] } +async-trait.workspace = true tokio = { workspace = true, features = [ "macros", diff --git a/crates/agglayer-grpc-api/src/certificate_submission_service/mod.rs b/crates/agglayer-grpc-api/src/certificate_submission_service/mod.rs index fa0eee1de..d93996f34 100644 --- a/crates/agglayer-grpc-api/src/certificate_submission_service/mod.rs +++ b/crates/agglayer-grpc-api/src/certificate_submission_service/mod.rs @@ -44,14 +44,27 @@ where ) -> Result, tonic::Status> { let certificate: agglayer_types::Certificate = match request.into_inner().certificate { Some(certificate) => certificate.try_into().map_err( - |error: agglayer_grpc_types::compat::v1::Error| { + |error: agglayer_grpc_types::compat::v1::CertificateConversionError| { + let (message, kind, details) = match error.unsupported_proof_version() { + Some(version) => ( + "Unsupported proof version", + SubmitCertificateErrorKind::UnsupportedProofVersion.as_str_name(), + [("proof_version".into(), version.to_owned())], + ), + None => ( + "Invalid certificate", + SubmitCertificateErrorKind::from(error.kind()).as_str_name(), + [("error".into(), format!("{error:?}"))], + ), + }; + tonic::Status::with_error_details( tonic::Code::InvalidArgument, - "Invalid certificate", + message, ErrorDetails::with_error_info( - SubmitCertificateErrorKind::from(error.kind()), + kind, SUBMIT_CERTIFICATE_METHOD_PATH, - [("error".into(), format!("{error:?}"))], + details, ), ) }, diff --git a/crates/agglayer-grpc-api/src/tests/certificate_submission.rs b/crates/agglayer-grpc-api/src/tests/certificate_submission.rs new file mode 100644 index 000000000..f1fa494f6 --- /dev/null +++ b/crates/agglayer-grpc-api/src/tests/certificate_submission.rs @@ -0,0 +1,240 @@ +use std::{sync::Arc, time::Duration}; + +use agglayer_config::Config; +use agglayer_contracts::{AggchainContract, L1RpcError, L1TransactionFetcher, RollupContract}; +use agglayer_grpc_client::node::v1::certificate_submission_service_client::CertificateSubmissionServiceClient; +use agglayer_grpc_server::node::v1::certificate_submission_service_server::CertificateSubmissionServiceServer; +use agglayer_grpc_types::node::{ + types::v1, + v1::{SubmitCertificateErrorKind, SubmitCertificateRequest}, +}; +use agglayer_interop::grpc::v1 as interop_v1; +use agglayer_rpc::AgglayerService; +use agglayer_storage::{ + backup::BackupClient, + stores::{debug::DebugStore, epochs::EpochsStore, pending::PendingStore, state::StateStore}, + tests::TempDBDir, +}; +use agglayer_types::{ + aggchain_proof::AggchainProof, testutils::dummy_sp1_stark_proof_with_version, Certificate, + Digest, +}; +use alloy::{network::Ethereum, providers::RootProvider, rpc::types::TransactionReceipt}; +use tokio::{net::TcpListener, sync::oneshot, task::JoinHandle}; +use tonic::{transport::Channel, Code}; +use tonic_types::StatusExt as _; +use tower::ServiceExt as _; + +use crate::certificate_submission_service::CertificateSubmissionServer; + +const SUBMIT_CERTIFICATE_METHOD_PATH: &str = + "agglayer-node.grpc-api.v1.certificate-submission-service.submit_certificate"; + +struct L1Rpc; + +#[async_trait::async_trait] +impl RollupContract for L1Rpc { + async fn get_trusted_sequencer_address( + &self, + _rollup_id: u32, + _proof_signers: std::collections::HashMap, + ) -> Result { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_rollup_contract_address( + &self, + _rollup_id: u32, + ) -> Result { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_prev_pessimistic_root( + &self, + _rollup_id: u32, + _before_tx: Option, + ) -> Result<[u8; 32], L1RpcError> { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_l1_info_root(&self, _l1_leaf_count: u32) -> Result<[u8; 32], L1RpcError> { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_verifier_type( + &self, + _rollup_id: u32, + ) -> Result { + unreachable!("invalid certificates are rejected before L1 access") + } + + fn default_l1_info_tree_entry(&self) -> (u32, [u8; 32]) { + unreachable!("invalid certificates are rejected before L1 access") + } + + fn get_rollup_manager_address(&self) -> agglayer_types::Address { + unreachable!("invalid certificates are rejected before L1 access") + } + + fn get_event_filter_block_range(&self) -> u64 { + unreachable!("invalid certificates are rejected before L1 access") + } +} + +#[async_trait::async_trait] +impl AggchainContract for L1Rpc { + async fn get_aggchain_vkey_hash( + &self, + _rollup_address: agglayer_types::Address, + _aggchain_vkey_selector: u16, + ) -> Result { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_aggchain_hash( + &self, + _rollup_address: agglayer_types::Address, + _aggchain_data: alloy::primitives::Bytes, + ) -> Result<[u8; 32], L1RpcError> { + unreachable!("invalid certificates are rejected before L1 access") + } + + async fn get_multisig_context( + &self, + _rollup_address: agglayer_types::Address, + ) -> Result<(Vec, usize), L1RpcError> { + unreachable!("invalid certificates are rejected before L1 access") + } +} + +#[async_trait::async_trait] +impl L1TransactionFetcher for L1Rpc { + type Provider = RootProvider; + + async fn fetch_transaction_receipt( + &self, + _tx_hash: agglayer_types::SettlementTxHash, + ) -> Result, L1RpcError> { + unreachable!("invalid certificates are rejected before L1 access") + } + + fn get_provider(&self) -> &Self::Provider { + unreachable!("invalid certificates are rejected before L1 access") + } +} + +#[tokio::test] +async fn submit_certificate_preserves_unsupported_proof_version_error() { + let tmp = TempDBDir::new(); + let config = Arc::new(Config::new(&tmp.path)); + let certificate = generic_certificate_proto("v6.0.1"); + + let (mut client, tx, jh) = start_server_with_certificate_submission_service(config).await; + + let response = client + .submit_certificate(SubmitCertificateRequest { + certificate: Some(certificate), + }) + .await; + + let error = response.expect_err("non-writable proof version should be rejected"); + assert_eq!(error.code(), Code::InvalidArgument); + assert_eq!(error.message(), "Unsupported proof version"); + + let error_details = error.get_error_details(); + let error_info = error_details + .error_info() + .expect("error info should be present"); + assert_eq!( + error_info.reason, + SubmitCertificateErrorKind::UnsupportedProofVersion.as_str_name() + ); + assert_eq!(error_info.domain, SUBMIT_CERTIFICATE_METHOD_PATH); + assert_eq!( + error_info.metadata.get("proof_version"), + Some(&"v6.0.1".to_owned()) + ); + + tx.send(()).unwrap(); + jh.await.unwrap(); +} + +fn generic_certificate_proto(version: &str) -> v1::Certificate { + let certificate = Certificate::default(); + let proof = interop_v1::AggchainProof::try_from(AggchainProof { + proof: dummy_sp1_stark_proof_with_version(version), + aggchain_params: Digest::default(), + public_values: None, + }) + .expect("aggchain proof should serialize"); + + let mut certificate = + v1::Certificate::try_from(certificate).expect("test certificate should serialize"); + certificate.aggchain_data = Some(interop_v1::AggchainData { + data: Some(interop_v1::aggchain_data::Data::Generic( + interop_v1::AggchainProof { + signature: None, + ..proof + }, + )), + }); + certificate.metadata = None; + certificate +} + +async fn start_server_with_certificate_submission_service( + config: Arc, +) -> ( + CertificateSubmissionServiceClient, + oneshot::Sender<()>, + JoinHandle<()>, +) { + let (sender, _receiver) = tokio::sync::mpsc::channel(10); + let pending_store = + Arc::new(PendingStore::new_with_path(&config.storage.pending_db_path).unwrap()); + let state_store = Arc::new( + StateStore::new_with_path(&config.storage.state_db_path, BackupClient::noop()).unwrap(), + ); + let service = Arc::new(AgglayerService::new( + sender, + pending_store.clone(), + state_store.clone(), + Arc::new(DebugStore::new_with_path(&config.storage.debug_db_path).unwrap()), + Arc::new( + EpochsStore::new( + config.clone(), + pending_store, + state_store, + BackupClient::noop(), + ) + .unwrap(), + ), + config, + Arc::new(L1Rpc), + )); + let (tx, rx) = oneshot::channel::<()>(); + let svc = CertificateSubmissionServiceServer::new(CertificateSubmissionServer { service }); + + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + let addr = listener.local_addr().unwrap(); + + let app = axum::Router::new().route_service( + "/agglayer.node.v1.CertificateSubmissionService/{*rest}", + svc.map_request(|r: http::Request| r.map(tonic::body::Body::new)), + ); + + let jh = tokio::spawn(async move { + axum::serve(listener, app) + .with_graceful_shutdown(async { drop(rx.await) }) + .await + .unwrap(); + }); + + tokio::time::sleep(Duration::from_millis(100)).await; + + let client = CertificateSubmissionServiceClient::connect(format!("http://{addr}")) + .await + .unwrap(); + + (client, tx, jh) +} diff --git a/crates/agglayer-grpc-api/src/tests/mod.rs b/crates/agglayer-grpc-api/src/tests/mod.rs index ddf88daf5..bbf602366 100644 --- a/crates/agglayer-grpc-api/src/tests/mod.rs +++ b/crates/agglayer-grpc-api/src/tests/mod.rs @@ -1,2 +1,3 @@ +mod certificate_submission; mod configuration; mod node_state; diff --git a/crates/agglayer-grpc-types/Cargo.toml b/crates/agglayer-grpc-types/Cargo.toml index 59443799b..2785e58ce 100644 --- a/crates/agglayer-grpc-types/Cargo.toml +++ b/crates/agglayer-grpc-types/Cargo.toml @@ -6,13 +6,14 @@ license.workspace = true [features] default = [] -compat = ["dep:agglayer-types", "dep:thiserror"] +compat = ["dep:agglayer-sp1", "dep:agglayer-types", "dep:thiserror"] [lints] workspace = true [dependencies] agglayer-interop = { workspace = true, features = ["grpc-compat"] } +agglayer-sp1 = { workspace = true, optional = true } agglayer-types = { workspace = true, optional = true } diff --git a/crates/agglayer-grpc-types/src/compat/v1/certificate.rs b/crates/agglayer-grpc-types/src/compat/v1/certificate.rs index 8e82c6710..72ca2639a 100644 --- a/crates/agglayer-grpc-types/src/compat/v1/certificate.rs +++ b/crates/agglayer-grpc-types/src/compat/v1/certificate.rs @@ -1,10 +1,92 @@ +use agglayer_sp1::{AcceptancePolicy, ProofError, ProofExt}; use agglayer_types::{aggchain_proof::AggchainData, Certificate, Height, Metadata, NetworkId}; +use thiserror::Error as ThisError; use super::Error; use crate::node::types::v1; +const AGGCHAIN_PROOF_FIELD: &str = "aggchain_proof"; + +#[derive(Debug, ThisError)] +pub enum CertificateConversionError { + #[error(transparent)] + Compat(#[from] Error), + + #[error("aggchain_proof: unsupported proof version `{version}`")] + UnsupportedProofVersion { version: String }, + + #[error("aggchain_proof: invalid proof version `{version}`")] + InvalidProofVersion { version: String }, +} + +impl CertificateConversionError { + #[must_use] + pub fn unsupported_proof_version(&self) -> Option<&str> { + match self { + Self::UnsupportedProofVersion { version } => Some(version), + Self::Compat(_) | Self::InvalidProofVersion { .. } => None, + } + } + + #[must_use] + pub fn kind(&self) -> super::ErrorKind { + match self { + Self::Compat(error) => error.kind(), + Self::UnsupportedProofVersion { .. } | Self::InvalidProofVersion { .. } => { + super::ErrorKind::InvalidData + } + } + } +} + +impl From for Error { + fn from(value: CertificateConversionError) -> Self { + match value { + CertificateConversionError::Compat(error) => error, + CertificateConversionError::UnsupportedProofVersion { version } => { + Error::invalid_data(format!("unsupported proof version `{version}`")) + .inside_field(AGGCHAIN_PROOF_FIELD) + } + CertificateConversionError::InvalidProofVersion { version } => { + Error::invalid_data(format!("invalid proof version `{version}`")) + .inside_field(AGGCHAIN_PROOF_FIELD) + } + } + } +} + +fn proof_version_error(error: ProofError) -> CertificateConversionError { + if let Some(version) = error.unsupported_version() { + CertificateConversionError::UnsupportedProofVersion { + version: version.to_owned(), + } + } else if let Some(version) = error.invalid_version() { + CertificateConversionError::InvalidProofVersion { + version: version.to_owned(), + } + } else { + CertificateConversionError::Compat( + Error::invalid_data(error.to_string()).inside_field(AGGCHAIN_PROOF_FIELD), + ) + } +} + +fn ensure_writable_proof_version( + aggchain_data: &AggchainData, +) -> Result<(), CertificateConversionError> { + let proof = match aggchain_data { + AggchainData::Generic { proof, .. } => proof, + AggchainData::MultisigAndAggchainProof { aggchain_proof, .. } => &aggchain_proof.proof, + AggchainData::ECDSA { .. } | AggchainData::MultisigOnly { .. } => return Ok(()), + }; + + proof + .ensure_writable(&AcceptancePolicy::DEFAULT) + .map_err(proof_version_error) +} + impl TryFrom for Certificate { - type Error = Error; + type Error = CertificateConversionError; fn try_from(value: v1::Certificate) -> Result { let aggchain_data: AggchainData = required_field!(value, aggchain_data); @@ -19,11 +101,11 @@ impl TryFrom for Certificate { // forbidden case if has_multisig && value.metadata.is_some() { - return Err(Error::invalid_data( - "metadata provided with multisig".to_owned(), - )); + return Err(Error::invalid_data("metadata provided with multisig".to_owned()).into()); } + ensure_writable_proof_version(&aggchain_data)?; + let certificate = Certificate { network_id: NetworkId::new(value.network_id), height: Height::new(value.height), @@ -34,16 +116,24 @@ impl TryFrom for Certificate { .into_iter() .map(TryInto::try_into) .collect::>() - .map_err(|e: Error| e.inside_field("bridge_exits"))?, + .map_err(|e: Error| { + CertificateConversionError::Compat(e.inside_field("bridge_exits")) + })?, imported_bridge_exits: value .imported_bridge_exits .into_iter() .map(TryInto::try_into) .collect::>() - .map_err(|e: Error| e.inside_field("imported_bridge_exits"))?, + .map_err(|e: Error| { + CertificateConversionError::Compat(e.inside_field("imported_bridge_exits")) + })?, aggchain_data, metadata: if let Some(metadata) = value.metadata { - Metadata::new(metadata.try_into()?) + Metadata::new( + metadata + .try_into() + .map_err(CertificateConversionError::from)?, + ) } else { Metadata::default() }, diff --git a/crates/agglayer-grpc-types/src/compat/v1/error_kinds/certificate_submission_error_kind.rs b/crates/agglayer-grpc-types/src/compat/v1/error_kinds/certificate_submission_error_kind.rs index b6bfee590..81fe657d7 100644 --- a/crates/agglayer-grpc-types/src/compat/v1/error_kinds/certificate_submission_error_kind.rs +++ b/crates/agglayer-grpc-types/src/compat/v1/error_kinds/certificate_submission_error_kind.rs @@ -16,6 +16,9 @@ impl Display for SubmitCertificateErrorKind { SubmitCertificateErrorKind::UnableToReplacePendingCertificate => { write!(f, "Unable to replace pending certificate") } + SubmitCertificateErrorKind::UnsupportedProofVersion => { + write!(f, "Unsupported proof version") + } } } } diff --git a/crates/agglayer-grpc-types/src/compat/v1/mod.rs b/crates/agglayer-grpc-types/src/compat/v1/mod.rs index 869db0393..f07f4779e 100644 --- a/crates/agglayer-grpc-types/src/compat/v1/mod.rs +++ b/crates/agglayer-grpc-types/src/compat/v1/mod.rs @@ -17,6 +17,7 @@ mod error_kinds; mod network_info; pub use agglayer_interop::grpc::compat::v1::{Error, ErrorKind}; +pub use certificate::CertificateConversionError; #[cfg(test)] pub mod tests; diff --git a/crates/agglayer-grpc-types/src/compat/v1/tests.rs b/crates/agglayer-grpc-types/src/compat/v1/tests.rs index 3d404d169..17722c674 100644 --- a/crates/agglayer-grpc-types/src/compat/v1/tests.rs +++ b/crates/agglayer-grpc-types/src/compat/v1/tests.rs @@ -1,4 +1,11 @@ -use agglayer_types::{bincode, primitives::SignatureError, CertificateId, EpochConfiguration}; +use agglayer_interop::grpc::v1 as interop_v1; +use agglayer_types::{ + aggchain_proof::{AggchainData, AggchainProof, MultisigPayload}, + bincode, + primitives::SignatureError, + testutils::dummy_sp1_stark_proof_with_version, + Certificate, CertificateId, Digest, EpochConfiguration, +}; use prost::Message; use super::Error; @@ -74,3 +81,121 @@ make_round_trip_fuzzers!( v1::EpochConfiguration, EpochConfiguration ); + +#[derive(Clone, Copy)] +enum ProofCarrier { + Generic, + MultisigAndProof, +} + +fn certificate_proto_fixture(aggchain_data: AggchainData) -> v1::Certificate { + let certificate = Certificate { + aggchain_data, + ..Certificate::default() + }; + + let mut certificate = + v1::Certificate::try_from(certificate).expect("test certificate should serialize"); + certificate.metadata = None; + certificate +} + +fn default_certificate_signature() -> agglayer_types::primitives::Signature { + match Certificate::default().aggchain_data { + AggchainData::ECDSA { signature } => signature, + other => panic!("expected ECDSA certificate, got {other:?}"), + } +} + +fn proof_certificate_proto(carrier: ProofCarrier, version: &str) -> v1::Certificate { + let proof = AggchainProof { + proof: dummy_sp1_stark_proof_with_version(version), + aggchain_params: Digest::default(), + public_values: None, + }; + + match carrier { + ProofCarrier::Generic => { + let certificate = Certificate::default(); + let proof = interop_v1::AggchainProof::try_from(proof) + .expect("aggchain proof should serialize"); + + let mut certificate = + v1::Certificate::try_from(certificate).expect("test certificate should serialize"); + certificate.aggchain_data = Some(interop_v1::AggchainData { + data: Some(interop_v1::aggchain_data::Data::Generic( + interop_v1::AggchainProof { + signature: None, + ..proof + }, + )), + }); + certificate.metadata = None; + certificate + } + ProofCarrier::MultisigAndProof => { + let signature = default_certificate_signature(); + + certificate_proto_fixture(AggchainData::MultisigAndAggchainProof { + multisig: MultisigPayload(vec![Some(signature)]), + aggchain_proof: proof, + }) + } + } +} + +fn multisig_only_certificate_proto() -> v1::Certificate { + let signature = default_certificate_signature(); + + certificate_proto_fixture(AggchainData::MultisigOnly { + multisig: MultisigPayload(vec![Some(signature)]), + }) +} + +#[rstest::rstest] +#[case::generic(proof_certificate_proto(ProofCarrier::Generic, "v5.2.2"))] +#[case::multisig_and_proof(proof_certificate_proto(ProofCarrier::MultisigAndProof, "v5.2.2"))] +fn accepts_writable_proof_versions_in_certificate_ingress(#[case] certificate: v1::Certificate) { + let result = Certificate::try_from(certificate); + + assert!( + result.is_ok(), + "writable proof version should be accepted: {result:?}" + ); +} + +#[rstest::rstest] +#[case::generic(proof_certificate_proto(ProofCarrier::Generic, "v6.0.1"))] +#[case::multisig_and_proof(proof_certificate_proto(ProofCarrier::MultisigAndProof, "v6.0.1"))] +fn rejects_non_writable_proof_versions_in_certificate_ingress( + #[case] certificate: v1::Certificate, +) { + let result = Certificate::try_from(certificate); + let error = result.expect_err("non-writable proof version should be rejected"); + + assert_eq!(error.unsupported_proof_version(), Some("v6.0.1")); +} + +#[test] +fn invalid_proof_versions_remain_invalid_certificate_errors() { + let error = Certificate::try_from(proof_certificate_proto(ProofCarrier::Generic, "abc")) + .expect_err("invalid proof version should be rejected"); + + assert_eq!(error.unsupported_proof_version(), None); + assert_eq!( + error.to_string(), + "aggchain_proof: invalid proof version `abc`" + ); +} + +#[rstest::rstest] +#[case::ecdsa(v1::Certificate::try_from(Certificate::default()).expect("test certificate should serialize"))] +#[case::multisig_only(multisig_only_certificate_proto())] +fn non_proof_certificate_variants_are_unaffected(#[case] certificate: v1::Certificate) { + let result = Certificate::try_from(certificate); + + assert!( + result.is_ok(), + "non-proof variants should remain accepted: {result:?}" + ); +} diff --git a/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.rs b/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.rs index aaa2d2692..cf9a96d34 100644 --- a/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.rs +++ b/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.rs @@ -28,6 +28,8 @@ pub enum SubmitCertificateErrorKind { SignatureVerification = 3, /// Unable to replace pending certificate. UnableToReplacePendingCertificate = 4, + /// The certificate carries a proof version that gRPC ingress does not accept. + UnsupportedProofVersion = 5, } impl SubmitCertificateErrorKind { /// String value of the enum field names used in the ProtoBuf definition. @@ -41,6 +43,7 @@ impl SubmitCertificateErrorKind { Self::InvalidData => "SUBMIT_CERTIFICATE_ERROR_KIND_INVALID_DATA", Self::SignatureVerification => "SUBMIT_CERTIFICATE_ERROR_KIND_SIGNATURE_VERIFICATION", Self::UnableToReplacePendingCertificate => "SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE", + Self::UnsupportedProofVersion => "SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -51,6 +54,7 @@ impl SubmitCertificateErrorKind { "SUBMIT_CERTIFICATE_ERROR_KIND_INVALID_DATA" => Some(Self::InvalidData), "SUBMIT_CERTIFICATE_ERROR_KIND_SIGNATURE_VERIFICATION" => Some(Self::SignatureVerification), "SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE" => Some(Self::UnableToReplacePendingCertificate), + "SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION" => Some(Self::UnsupportedProofVersion), _ => None, } } @@ -292,7 +296,7 @@ impl LatestCertificateRequestType { } /// Encoded file descriptor set for the `agglayer.node.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xb0, 0x0f, 0x0a, 0x2d, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, + 0x0a, 0xe4, 0x10, 0x0a, 0x2d, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, @@ -314,7 +318,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x2a, 0xaf, 0x02, 0x0a, 0x1a, 0x53, 0x75, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x2a, 0xec, 0x02, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x45, @@ -333,517 +337,529 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x45, - 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x04, 0x32, 0x8c, 0x01, 0x0a, 0x1c, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x11, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x2a, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x94, 0x01, 0x0a, 0x14, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0xa2, 0x02, 0x03, 0x41, 0x4e, 0x58, 0xaa, 0x02, 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x41, 0x67, 0x67, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, - 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x41, - 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, 0x56, - 0x31, 0x4a, 0xe7, 0x07, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x29, 0x01, 0x0a, 0x08, 0x0a, 0x01, - 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, - 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x32, 0x0a, 0x09, 0x0a, 0x02, 0x03, - 0x01, 0x12, 0x03, 0x05, 0x00, 0x35, 0x0a, 0x45, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x08, 0x00, - 0x0b, 0x01, 0x1a, 0x39, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x67, - 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x08, 0x08, 0x24, 0x0a, 0x33, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x0a, 0x02, 0x56, 0x1a, 0x26, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x61, - 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x06, 0x17, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0a, 0x18, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x0a, 0x3b, 0x54, 0x0a, 0x30, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, - 0x0e, 0x00, 0x11, 0x01, 0x1a, 0x24, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, - 0x01, 0x12, 0x03, 0x0e, 0x08, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x10, 0x02, 0x16, 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x10, 0x02, - 0x27, 0x1a, 0x1c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, 0x17, 0x22, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x10, 0x25, 0x26, 0x0a, 0x40, 0x0a, 0x02, 0x04, - 0x01, 0x12, 0x04, 0x14, 0x00, 0x17, 0x01, 0x1a, 0x34, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x75, - 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x14, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x06, 0x12, 0x03, 0x16, 0x02, 0x18, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, - 0x03, 0x16, 0x02, 0x2c, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x16, 0x19, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x16, 0x2a, 0x2b, 0x0a, 0x53, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x1a, 0x00, 0x29, 0x01, - 0x1a, 0x47, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, - 0x12, 0x03, 0x1a, 0x05, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x1c, 0x02, 0x2b, 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1c, 0x02, 0x30, - 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, - 0x03, 0x1c, 0x2e, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1f, - 0x02, 0x2d, 0x0a, 0x1d, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1f, 0x02, 0x32, 0x1a, - 0x10, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1f, 0x30, 0x31, 0x0a, - 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x22, 0x02, 0x2c, 0x0a, 0x1c, 0x0a, - 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x22, 0x02, 0x31, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, - 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x22, 0x2f, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x25, 0x02, 0x36, 0x0a, 0x31, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x03, 0x12, - 0x03, 0x25, 0x02, 0x3b, 0x1a, 0x24, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, - 0x02, 0x03, 0x02, 0x12, 0x03, 0x25, 0x39, 0x3a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x04, - 0x01, 0x12, 0x03, 0x28, 0x02, 0x45, 0x0a, 0x35, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x04, 0x12, 0x03, - 0x28, 0x02, 0x4a, 0x1a, 0x28, 0x20, 0x55, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x05, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x28, 0x48, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, 0x0a, 0xea, 0x0b, 0x0a, 0x24, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x61, 0x67, - 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x30, - 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x9b, - 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x45, 0x0a, 0x41, 0x47, 0x45, 0x54, 0x5f, 0x45, 0x50, 0x4f, - 0x43, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x45, 0x58, - 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x32, 0x90, 0x01, 0x0a, - 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, - 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x3b, 0x0a, 0x37, 0x53, + 0x55, 0x42, 0x4d, 0x49, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, + 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x5f, 0x56, + 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x32, 0x8c, 0x01, 0x0a, 0x1c, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x8c, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, + 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x67, 0x67, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x94, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, + 0x42, 0x1a, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, 0x41, 0x4e, 0x58, 0xaa, 0x02, 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x41, 0x67, 0x67, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x97, - 0x06, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x1e, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, + 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xde, + 0x08, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x2c, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x3a, 0x0a, 0x43, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, - 0x07, 0x00, 0x0a, 0x01, 0x1a, 0x37, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x32, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, + 0x05, 0x00, 0x35, 0x0a, 0x45, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x08, 0x00, 0x0b, 0x01, 0x1a, + 0x39, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x67, 0x67, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, + 0x01, 0x12, 0x03, 0x08, 0x08, 0x24, 0x0a, 0x33, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, + 0x0a, 0x02, 0x56, 0x1a, 0x26, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x61, 0x20, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x06, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x02, 0x12, 0x03, 0x0a, 0x18, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x0a, 0x3b, 0x54, 0x0a, 0x30, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x0e, 0x00, 0x11, + 0x01, 0x1a, 0x24, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, + 0x0e, 0x08, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x10, 0x02, + 0x16, 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x10, 0x02, 0x27, 0x1a, 0x1c, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, 0x17, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x10, 0x25, 0x26, 0x0a, 0x40, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, + 0x14, 0x00, 0x17, 0x01, 0x1a, 0x34, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, + 0x01, 0x12, 0x03, 0x14, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x16, 0x02, 0x18, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x16, 0x02, + 0x2c, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x69, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x16, 0x19, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x2a, + 0x2b, 0x0a, 0x53, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x1a, 0x00, 0x2c, 0x01, 0x1a, 0x47, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x1a, + 0x05, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1c, 0x02, 0x2b, + 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1c, 0x02, 0x30, 0x1a, 0x14, 0x20, + 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x1c, 0x2e, + 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1f, 0x02, 0x2d, 0x0a, + 0x1d, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1f, 0x02, 0x32, 0x1a, 0x10, 0x20, 0x4d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1f, 0x30, 0x31, 0x0a, 0x0c, 0x0a, 0x05, + 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x22, 0x02, 0x2c, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x00, + 0x02, 0x02, 0x12, 0x03, 0x22, 0x02, 0x31, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, + 0x02, 0x12, 0x03, 0x22, 0x2f, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x03, 0x01, 0x12, + 0x03, 0x25, 0x02, 0x36, 0x0a, 0x31, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x03, 0x12, 0x03, 0x25, 0x02, + 0x3b, 0x1a, 0x24, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x03, 0x02, + 0x12, 0x03, 0x25, 0x39, 0x3a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, + 0x28, 0x02, 0x45, 0x0a, 0x35, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x04, 0x12, 0x03, 0x28, 0x02, 0x4a, + 0x1a, 0x28, 0x20, 0x55, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, + 0x02, 0x04, 0x02, 0x12, 0x03, 0x28, 0x48, 0x49, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x05, + 0x01, 0x12, 0x03, 0x2b, 0x02, 0x39, 0x0a, 0x59, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x05, 0x12, 0x03, + 0x2b, 0x02, 0x3e, 0x1a, 0x4c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, + 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x67, 0x52, 0x50, 0x43, 0x20, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x20, + 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x2b, 0x3c, 0x3d, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xea, 0x0b, 0x0a, 0x24, 0x61, 0x67, 0x67, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x10, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x1a, 0x30, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, + 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x7c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2a, 0x9b, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x45, 0x50, 0x4f, + 0x43, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x45, 0x0a, 0x41, 0x47, 0x45, 0x54, + 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x4c, 0x4f, 0x43, 0x4b, + 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, + 0x32, 0x90, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x8c, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x67, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0xa2, 0x02, 0x03, 0x41, 0x4e, 0x58, 0xaa, 0x02, 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x41, 0x67, + 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x1c, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, + 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, + 0x56, 0x31, 0x4a, 0x97, 0x06, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x1e, 0x01, 0x0a, 0x08, 0x0a, + 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, + 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x3a, 0x0a, 0x43, 0x0a, 0x02, + 0x06, 0x00, 0x12, 0x04, 0x07, 0x00, 0x0a, 0x01, 0x1a, 0x37, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x07, 0x08, 0x1c, 0x0a, 0x42, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x09, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x09, 0x06, 0x1b, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x09, 0x1c, 0x38, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x09, 0x43, 0x60, 0x0a, 0x62, 0x0a, 0x02, 0x05, + 0x00, 0x12, 0x04, 0x0e, 0x00, 0x15, 0x01, 0x1a, 0x56, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6b, 0x69, + 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x05, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, 0x02, 0x30, 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x00, 0x02, + 0x00, 0x12, 0x03, 0x10, 0x02, 0x35, 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x10, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x02, 0x43, 0x0a, 0x77, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, + 0x12, 0x03, 0x14, 0x02, 0x48, 0x1a, 0x6a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x67, 0x67, 0x4c, + 0x61, 0x79, 0x65, 0x72, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x75, 0x73, 0x20, 0x6e, 0x6f, 0x0a, 0x20, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x14, 0x46, 0x47, 0x0a, + 0x3c, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x03, 0x18, 0x00, 0x27, 0x1a, 0x31, 0x20, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x07, 0x08, 0x1c, 0x0a, 0x42, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x09, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x09, 0x06, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x09, 0x1c, 0x38, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x09, 0x43, 0x60, 0x0a, 0x62, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x0e, - 0x00, 0x15, 0x01, 0x1a, 0x56, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, - 0x66, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x0a, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, - 0x00, 0x01, 0x12, 0x03, 0x0e, 0x05, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x10, 0x02, 0x30, 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x10, - 0x02, 0x35, 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, - 0x02, 0x12, 0x03, 0x10, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x14, 0x02, 0x43, 0x0a, 0x77, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x14, 0x02, - 0x48, 0x1a, 0x6a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x67, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, - 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6c, - 0x6f, 0x63, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x75, 0x73, 0x20, 0x6e, 0x6f, 0x0a, 0x20, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x14, 0x46, 0x47, 0x0a, 0x3c, 0x0a, 0x02, 0x04, - 0x00, 0x12, 0x03, 0x18, 0x00, 0x27, 0x1a, 0x31, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, - 0x12, 0x03, 0x18, 0x08, 0x24, 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x1b, 0x00, 0x1e, - 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, - 0x12, 0x03, 0x1b, 0x08, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x1d, 0x02, 0x1d, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x1d, 0x02, 0x36, - 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x1e, 0x31, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x34, 0x35, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, - 0x0a, 0xdd, 0x29, 0x0a, 0x21, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, - 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x2f, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x61, 0x67, 0x67, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x6b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4c, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x52, - 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x22, 0x78, - 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, - 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x67, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x61, - 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x64, 0x22, 0x7e, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x22, 0x36, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 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, 0x0d, 0x52, 0x09, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x67, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0xec, 0x01, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x31, 0x0a, - 0x2d, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, + 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x18, 0x08, 0x24, 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x01, 0x12, + 0x04, 0x1b, 0x00, 0x1e, 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, + 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x1b, 0x08, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x00, 0x06, 0x12, 0x03, 0x1d, 0x02, 0x1d, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, + 0x03, 0x1d, 0x02, 0x36, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x1e, 0x31, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x34, 0x35, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xdd, 0x29, 0x0a, 0x21, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x61, 0x67, 0x67, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x2f, 0x61, 0x67, + 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x61, + 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x61, 0x67, 0x67, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, + 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x49, 0x64, 0x22, 0x78, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x58, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x86, 0x01, 0x0a, + 0x21, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x12, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x36, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 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, 0x0d, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x60, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2a, + 0xec, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x31, 0x0a, 0x2d, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x2f, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, + 0x47, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, + 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, + 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, + 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x2f, 0x0a, + 0x2b, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, + 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0x8e, + 0x02, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x34, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x41, + 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x33, 0x0a, 0x2f, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x45, 0x52, - 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, - 0x49, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x2f, 0x0a, 0x2b, 0x47, 0x45, 0x54, - 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, - 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0x8e, 0x02, 0x0a, 0x23, 0x47, - 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x34, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, - 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x3a, 0x0a, 0x36, + 0x12, 0x3a, 0x0a, 0x36, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, + 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, + 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x39, 0x0a, 0x35, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x39, 0x0a, 0x35, 0x47, 0x45, 0x54, 0x5f, - 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, - 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x10, 0x02, 0x12, 0x36, 0x0a, 0x32, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x53, - 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x48, 0x45, - 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0x94, 0x02, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x27, 0x47, 0x45, 0x54, 0x5f, 0x4e, - 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, - 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, - 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, + 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x36, 0x0a, 0x32, 0x47, 0x45, 0x54, 0x5f, 0x4c, + 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, + 0x94, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x66, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x27, 0x47, + 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, + 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, + 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x32, 0x0a, 0x2e, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, - 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, - 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x04, 0x2a, 0xa9, 0x01, 0x0a, 0x1c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, - 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, - 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, - 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, - 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x32, 0xf8, - 0x02, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x61, 0x67, - 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x67, 0x67, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x2e, 0x61, 0x67, 0x67, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, + 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, + 0x12, 0x34, 0x0a, 0x30, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, + 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x45, + 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0xa9, 0x01, 0x0a, 0x1c, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x4c, 0x41, 0x54, 0x45, 0x53, + 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x4c, 0x41, 0x54, 0x45, + 0x53, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, + 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x54, 0x5f, + 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, + 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x44, + 0x10, 0x02, 0x32, 0xf8, 0x02, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x2d, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x88, 0x01, 0x0a, 0x14, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x42, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, 0x41, 0x4e, 0x58, 0xaa, 0x02, 0x10, 0x41, 0x67, 0x67, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, - 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, - 0xe2, 0x02, 0x1c, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, 0x65, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x12, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x4e, 0x6f, 0x64, 0x65, - 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xc1, 0x17, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x75, 0x01, 0x0a, - 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, - 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x39, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x35, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, - 0x03, 0x06, 0x00, 0x33, 0x0a, 0x2e, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x09, 0x00, 0x12, 0x01, - 0x1a, 0x22, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x18, - 0x0a, 0x55, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0b, 0x02, 0x5f, 0x1a, 0x48, 0x20, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x61, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x49, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x0b, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, - 0x0b, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x41, - 0x5d, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0e, 0x02, 0x71, 0x1a, 0x47, - 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x0e, 0x06, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, - 0x0e, 0x21, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0e, 0x4d, - 0x6f, 0x0a, 0x4c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x11, 0x02, 0x4d, 0x1a, 0x3f, - 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x67, 0x65, 0x74, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x61, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6e, - 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x11, 0x06, 0x14, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x11, 0x15, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x11, 0x35, 0x4b, 0x0a, 0x36, 0x0a, 0x02, 0x05, 0x00, 0x12, - 0x04, 0x15, 0x00, 0x21, 0x01, 0x1a, 0x2a, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6b, 0x69, - 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x52, 0x50, 0x43, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x15, 0x05, 0x22, 0x0a, 0x0c, 0x0a, - 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x17, 0x02, 0x2f, 0x0a, 0x21, 0x0a, 0x04, 0x05, - 0x00, 0x02, 0x00, 0x12, 0x03, 0x17, 0x02, 0x34, 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x17, 0x32, 0x33, 0x0a, 0x0c, 0x0a, 0x05, - 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1a, 0x02, 0x31, 0x0a, 0x1d, 0x0a, 0x04, 0x05, 0x00, - 0x02, 0x01, 0x12, 0x03, 0x1a, 0x02, 0x36, 0x1a, 0x10, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, - 0x01, 0x02, 0x12, 0x03, 0x1a, 0x34, 0x35, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x1d, 0x02, 0x30, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x1d, - 0x02, 0x35, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x1d, 0x33, - 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x20, 0x02, 0x2d, 0x0a, - 0x25, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x03, 0x12, 0x03, 0x20, 0x02, 0x32, 0x1a, 0x18, 0x20, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x03, 0x02, 0x12, - 0x03, 0x20, 0x30, 0x31, 0x0a, 0x3c, 0x0a, 0x02, 0x05, 0x01, 0x12, 0x04, 0x24, 0x00, 0x30, 0x01, - 0x1a, 0x30, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x52, 0x50, 0x43, - 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x01, 0x01, 0x12, 0x03, 0x24, 0x05, 0x28, 0x0a, 0x0c, - 0x0a, 0x05, 0x05, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x26, 0x02, 0x36, 0x0a, 0x21, 0x0a, 0x04, - 0x05, 0x01, 0x02, 0x00, 0x12, 0x03, 0x26, 0x02, 0x3b, 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x00, 0x02, 0x12, 0x03, 0x26, 0x39, 0x3a, 0x0a, 0x0c, 0x0a, - 0x05, 0x05, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x29, 0x02, 0x38, 0x0a, 0x1d, 0x0a, 0x04, 0x05, - 0x01, 0x02, 0x01, 0x12, 0x03, 0x29, 0x02, 0x3d, 0x1a, 0x10, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, - 0x02, 0x01, 0x02, 0x12, 0x03, 0x29, 0x3b, 0x3c, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x02, - 0x01, 0x12, 0x03, 0x2c, 0x02, 0x37, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x02, 0x12, 0x03, - 0x2c, 0x02, 0x3c, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x02, 0x02, 0x12, 0x03, 0x2c, - 0x3a, 0x3b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x2f, 0x02, 0x34, - 0x0a, 0x25, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x03, 0x12, 0x03, 0x2f, 0x02, 0x39, 0x1a, 0x18, 0x20, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x03, 0x02, - 0x12, 0x03, 0x2f, 0x37, 0x38, 0x0a, 0x30, 0x0a, 0x02, 0x05, 0x02, 0x12, 0x04, 0x33, 0x00, 0x42, - 0x01, 0x1a, 0x24, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x20, 0x52, 0x50, 0x43, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x02, 0x01, 0x12, 0x03, - 0x33, 0x05, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x35, 0x02, - 0x29, 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x00, 0x12, 0x03, 0x35, 0x02, 0x2e, 0x1a, 0x14, - 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x00, 0x02, 0x12, 0x03, 0x35, - 0x2c, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x38, 0x02, 0x30, - 0x0a, 0x34, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x03, 0x38, 0x02, 0x35, 0x1a, 0x27, 0x20, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, - 0x49, 0x44, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x01, 0x02, 0x12, - 0x03, 0x38, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, 0x3b, - 0x02, 0x30, 0x0a, 0x25, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x02, 0x12, 0x03, 0x3b, 0x02, 0x35, 0x1a, - 0x18, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, - 0x02, 0x02, 0x12, 0x03, 0x3b, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x03, 0x01, - 0x12, 0x03, 0x3e, 0x02, 0x32, 0x0a, 0x2f, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, 0x03, 0x3e, - 0x02, 0x37, 0x1a, 0x22, 0x20, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x03, 0x02, 0x12, - 0x03, 0x3e, 0x35, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x04, 0x01, 0x12, 0x03, 0x41, - 0x02, 0x2c, 0x0a, 0x26, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x04, 0x12, 0x03, 0x41, 0x02, 0x31, 0x1a, - 0x19, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, - 0x02, 0x04, 0x02, 0x12, 0x03, 0x41, 0x2f, 0x30, 0x0a, 0x50, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, - 0x45, 0x00, 0x48, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, - 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, - 0x01, 0x12, 0x03, 0x45, 0x08, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x47, 0x02, 0x18, 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x47, 0x02, - 0x2c, 0x1a, 0x1d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x47, 0x19, 0x27, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x47, 0x2a, 0x2b, 0x0a, 0x38, 0x0a, 0x02, - 0x04, 0x01, 0x12, 0x04, 0x4b, 0x00, 0x4e, 0x01, 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x4b, - 0x08, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x4d, 0x02, 0x1c, - 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x4d, 0x02, 0x34, 0x1a, 0x19, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x4d, 0x1d, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x4d, 0x32, 0x33, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x51, 0x00, 0x57, 0x01, - 0x1a, 0x53, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, - 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x6c, - 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x51, 0x08, - 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x53, 0x02, 0x1e, 0x0a, - 0x3f, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x53, 0x02, 0x28, 0x1a, 0x32, 0x20, 0x57, - 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x61, 0x74, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, + 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x2e, + 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x2e, 0x61, 0x67, 0x67, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x88, 0x01, + 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, 0x41, 0x4e, 0x58, 0xaa, 0x02, + 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x10, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x4e, 0x6f, 0x64, + 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, + 0x4e, 0x6f, 0x64, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x41, 0x67, 0x67, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, + 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xc1, 0x17, 0x0a, 0x06, 0x12, 0x04, 0x00, + 0x00, 0x75, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, + 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, + 0x00, 0x39, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x35, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x33, 0x0a, 0x2e, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, + 0x09, 0x00, 0x12, 0x01, 0x1a, 0x22, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x6f, 0x64, 0x65, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, + 0x03, 0x09, 0x08, 0x18, 0x0a, 0x55, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0b, 0x02, + 0x5f, 0x1a, 0x48, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x02, 0x12, 0x03, 0x0b, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x0b, 0x41, 0x5d, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0e, + 0x02, 0x71, 0x1a, 0x47, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0e, 0x06, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x01, 0x02, 0x12, 0x03, 0x0e, 0x21, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x03, 0x0e, 0x4d, 0x6f, 0x0a, 0x4c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x11, + 0x02, 0x4d, 0x1a, 0x3f, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x61, 0x73, 0x20, + 0x73, 0x65, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x11, 0x06, + 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x11, 0x15, 0x2a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x11, 0x35, 0x4b, 0x0a, 0x36, 0x0a, + 0x02, 0x05, 0x00, 0x12, 0x04, 0x15, 0x00, 0x21, 0x01, 0x1a, 0x2a, 0x20, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x47, 0x65, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, + 0x52, 0x50, 0x43, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x15, 0x05, + 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x17, 0x02, 0x2f, 0x0a, + 0x21, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x17, 0x02, 0x34, 0x1a, 0x14, 0x20, 0x55, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x17, 0x32, 0x33, + 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1a, 0x02, 0x31, 0x0a, 0x1d, + 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1a, 0x02, 0x36, 0x1a, 0x10, 0x20, 0x4d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1a, 0x34, 0x35, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x1d, 0x02, 0x30, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x00, 0x02, + 0x02, 0x12, 0x03, 0x1d, 0x02, 0x35, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, + 0x12, 0x03, 0x1d, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, + 0x20, 0x02, 0x2d, 0x0a, 0x25, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x03, 0x12, 0x03, 0x20, 0x02, 0x32, + 0x1a, 0x18, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, + 0x02, 0x03, 0x02, 0x12, 0x03, 0x20, 0x30, 0x31, 0x0a, 0x3c, 0x0a, 0x02, 0x05, 0x01, 0x12, 0x04, + 0x24, 0x00, 0x30, 0x01, 0x1a, 0x30, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6b, 0x69, 0x6e, + 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x20, 0x52, 0x50, 0x43, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x01, 0x01, 0x12, 0x03, 0x24, + 0x05, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x26, 0x02, 0x36, + 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x00, 0x12, 0x03, 0x26, 0x02, 0x3b, 0x1a, 0x14, 0x20, + 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x00, 0x02, 0x12, 0x03, 0x26, 0x39, + 0x3a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x29, 0x02, 0x38, 0x0a, + 0x1d, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x01, 0x12, 0x03, 0x29, 0x02, 0x3d, 0x1a, 0x10, 0x20, 0x4d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x05, 0x01, 0x02, 0x01, 0x02, 0x12, 0x03, 0x29, 0x3b, 0x3c, 0x0a, 0x0c, 0x0a, 0x05, + 0x05, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x37, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x01, + 0x02, 0x02, 0x12, 0x03, 0x2c, 0x02, 0x3c, 0x1a, 0x0f, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x02, + 0x02, 0x12, 0x03, 0x2c, 0x3a, 0x3b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x03, 0x01, 0x12, + 0x03, 0x2f, 0x02, 0x34, 0x0a, 0x25, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x03, 0x12, 0x03, 0x2f, 0x02, + 0x39, 0x1a, 0x18, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x01, 0x02, 0x03, 0x02, 0x12, 0x03, 0x2f, 0x37, 0x38, 0x0a, 0x30, 0x0a, 0x02, 0x05, 0x02, 0x12, + 0x04, 0x33, 0x00, 0x42, 0x01, 0x1a, 0x24, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6b, 0x69, + 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x52, 0x50, 0x43, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, + 0x02, 0x01, 0x12, 0x03, 0x33, 0x05, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x35, 0x02, 0x29, 0x0a, 0x21, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x00, 0x12, 0x03, 0x35, + 0x02, 0x2e, 0x1a, 0x14, 0x20, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x00, + 0x02, 0x12, 0x03, 0x35, 0x2c, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x38, 0x02, 0x30, 0x0a, 0x34, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x03, 0x38, 0x02, + 0x35, 0x1a, 0x27, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x20, 0x49, 0x44, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, + 0x02, 0x01, 0x02, 0x12, 0x03, 0x38, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x02, + 0x01, 0x12, 0x03, 0x3b, 0x02, 0x30, 0x0a, 0x25, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x02, 0x12, 0x03, + 0x3b, 0x02, 0x35, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x02, 0x02, 0x02, 0x02, 0x12, 0x03, 0x3b, 0x33, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x02, 0x02, 0x03, 0x01, 0x12, 0x03, 0x3e, 0x02, 0x32, 0x0a, 0x2f, 0x0a, 0x04, 0x05, 0x02, 0x02, + 0x03, 0x12, 0x03, 0x3e, 0x02, 0x37, 0x1a, 0x22, 0x20, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x74, 0x79, 0x70, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, + 0x02, 0x03, 0x02, 0x12, 0x03, 0x3e, 0x35, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x02, 0x02, 0x04, + 0x01, 0x12, 0x03, 0x41, 0x02, 0x2c, 0x0a, 0x26, 0x0a, 0x04, 0x05, 0x02, 0x02, 0x04, 0x12, 0x03, + 0x41, 0x02, 0x31, 0x1a, 0x19, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x05, 0x02, 0x02, 0x04, 0x02, 0x12, 0x03, 0x41, 0x2f, 0x30, 0x0a, 0x50, 0x0a, 0x02, + 0x04, 0x00, 0x12, 0x04, 0x45, 0x00, 0x48, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x45, 0x08, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x47, 0x02, 0x18, 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, + 0x12, 0x03, 0x47, 0x02, 0x2c, 0x1a, 0x1d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x47, + 0x19, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x47, 0x2a, 0x2b, + 0x0a, 0x38, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x4b, 0x00, 0x4e, 0x01, 0x1a, 0x2c, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, + 0x01, 0x12, 0x03, 0x4b, 0x08, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x4d, 0x02, 0x1c, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x4d, 0x02, + 0x34, 0x1a, 0x19, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4d, 0x1d, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x4d, 0x32, 0x33, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, + 0x51, 0x00, 0x57, 0x01, 0x1a, 0x53, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, + 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x73, + 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, + 0x12, 0x03, 0x51, 0x08, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, + 0x53, 0x02, 0x1e, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x53, 0x02, 0x28, + 0x1a, 0x32, 0x20, 0x57, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x77, 0x65, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, + 0x65, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x53, + 0x1f, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x53, 0x26, 0x27, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x56, 0x02, 0x08, 0x0a, 0x26, + 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x56, 0x02, 0x18, 0x1a, 0x19, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x56, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x56, + 0x16, 0x17, 0x0a, 0x3c, 0x0a, 0x02, 0x05, 0x03, 0x12, 0x04, 0x5a, 0x00, 0x63, 0x01, 0x1a, 0x30, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x65, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x53, 0x1f, 0x23, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x53, 0x26, 0x27, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x56, 0x02, 0x08, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x56, 0x02, 0x18, 0x1a, 0x19, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x56, 0x09, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x56, 0x16, 0x17, 0x0a, 0x3c, - 0x0a, 0x02, 0x05, 0x03, 0x12, 0x04, 0x5a, 0x00, 0x63, 0x01, 0x1a, 0x30, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x65, 0x20, 0x77, - 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x05, 0x03, 0x01, 0x12, 0x03, 0x5a, 0x05, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x5c, 0x02, 0x2d, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x03, 0x02, 0x00, 0x12, 0x03, - 0x5c, 0x02, 0x32, 0x1a, 0x0f, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x00, 0x02, 0x12, 0x03, 0x5c, - 0x30, 0x31, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5f, 0x02, 0x29, - 0x0a, 0x23, 0x0a, 0x04, 0x05, 0x03, 0x02, 0x01, 0x12, 0x03, 0x5f, 0x02, 0x2e, 0x1a, 0x16, 0x20, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x01, 0x02, 0x12, 0x03, - 0x5f, 0x2c, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x62, 0x02, - 0x29, 0x0a, 0x23, 0x0a, 0x04, 0x05, 0x03, 0x02, 0x02, 0x12, 0x03, 0x62, 0x02, 0x2e, 0x1a, 0x16, - 0x20, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x02, 0x02, 0x12, - 0x03, 0x62, 0x2c, 0x2d, 0x0a, 0x56, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x66, 0x00, 0x69, 0x01, - 0x1a, 0x4a, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x20, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x03, 0x01, 0x12, 0x03, 0x66, 0x08, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x06, 0x12, 0x03, 0x68, 0x02, 0x1c, 0x0a, 0x2d, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, - 0x68, 0x02, 0x34, 0x1a, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x68, 0x1d, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x68, 0x32, - 0x33, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x6c, 0x00, 0x6f, 0x01, 0x1a, 0x47, 0x20, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2c, 0x20, - 0x61, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x6c, - 0x08, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x03, 0x6e, 0x02, 0x08, - 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x6e, 0x02, 0x18, 0x1a, 0x19, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x6e, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x6e, 0x16, 0x17, 0x0a, 0x54, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x72, 0x00, 0x75, 0x01, - 0x1a, 0x48, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x69, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, - 0x01, 0x12, 0x03, 0x72, 0x08, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x74, 0x02, 0x16, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x74, 0x02, - 0x28, 0x1a, 0x29, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x74, 0x17, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x74, 0x26, 0x27, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x03, 0x01, 0x12, 0x03, 0x5a, 0x05, 0x21, 0x0a, 0x0c, 0x0a, 0x05, + 0x05, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5c, 0x02, 0x2d, 0x0a, 0x1c, 0x0a, 0x04, 0x05, 0x03, + 0x02, 0x00, 0x12, 0x03, 0x5c, 0x02, 0x32, 0x1a, 0x0f, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x00, + 0x02, 0x12, 0x03, 0x5c, 0x30, 0x31, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x5f, 0x02, 0x29, 0x0a, 0x23, 0x0a, 0x04, 0x05, 0x03, 0x02, 0x01, 0x12, 0x03, 0x5f, 0x02, + 0x2e, 0x1a, 0x16, 0x20, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, + 0x01, 0x02, 0x12, 0x03, 0x5f, 0x2c, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, 0x02, 0x02, 0x01, + 0x12, 0x03, 0x62, 0x02, 0x29, 0x0a, 0x23, 0x0a, 0x04, 0x05, 0x03, 0x02, 0x02, 0x12, 0x03, 0x62, + 0x02, 0x2e, 0x1a, 0x16, 0x20, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x03, + 0x02, 0x02, 0x02, 0x12, 0x03, 0x62, 0x2c, 0x2d, 0x0a, 0x56, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, + 0x66, 0x00, 0x69, 0x01, 0x1a, 0x4a, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x65, 0x74, 0x74, + 0x6c, 0x65, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, + 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x66, 0x08, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x68, 0x02, 0x1c, 0x0a, 0x2d, 0x0a, 0x04, 0x04, 0x03, + 0x02, 0x00, 0x12, 0x03, 0x68, 0x02, 0x34, 0x1a, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x68, 0x1d, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x68, 0x32, 0x33, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x6c, 0x00, 0x6f, + 0x01, 0x1a, 0x47, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, + 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x69, + 0x6e, 0x66, 0x6f, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, + 0x01, 0x12, 0x03, 0x6c, 0x08, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, + 0x03, 0x6e, 0x02, 0x08, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x6e, 0x02, + 0x18, 0x1a, 0x19, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6e, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x6e, 0x16, 0x17, 0x0a, 0x54, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, + 0x72, 0x00, 0x75, 0x01, 0x1a, 0x48, 0x20, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x72, 0x08, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x74, 0x02, 0x16, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, + 0x12, 0x03, 0x74, 0x02, 0x28, 0x1a, 0x29, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x74, 0x17, 0x23, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x74, 0x26, 0x27, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, ]; include!("agglayer.node.v1.serde.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.serde.rs b/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.serde.rs index f91e7c007..92dd46316 100644 --- a/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.serde.rs +++ b/crates/agglayer-grpc-types/src/generated/agglayer.node.v1.serde.rs @@ -1128,6 +1128,7 @@ impl serde::Serialize for SubmitCertificateErrorKind { Self::InvalidData => "SUBMIT_CERTIFICATE_ERROR_KIND_INVALID_DATA", Self::SignatureVerification => "SUBMIT_CERTIFICATE_ERROR_KIND_SIGNATURE_VERIFICATION", Self::UnableToReplacePendingCertificate => "SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE", + Self::UnsupportedProofVersion => "SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION", }; serializer.serialize_str(variant) } @@ -1144,6 +1145,7 @@ impl<'de> serde::Deserialize<'de> for SubmitCertificateErrorKind { "SUBMIT_CERTIFICATE_ERROR_KIND_INVALID_DATA", "SUBMIT_CERTIFICATE_ERROR_KIND_SIGNATURE_VERIFICATION", "SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE", + "SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION", ]; struct GeneratedVisitor; @@ -1189,6 +1191,7 @@ impl<'de> serde::Deserialize<'de> for SubmitCertificateErrorKind { "SUBMIT_CERTIFICATE_ERROR_KIND_INVALID_DATA" => Ok(SubmitCertificateErrorKind::InvalidData), "SUBMIT_CERTIFICATE_ERROR_KIND_SIGNATURE_VERIFICATION" => Ok(SubmitCertificateErrorKind::SignatureVerification), "SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE" => Ok(SubmitCertificateErrorKind::UnableToReplacePendingCertificate), + "SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION" => Ok(SubmitCertificateErrorKind::UnsupportedProofVersion), _ => Err(serde::de::Error::unknown_variant(value, FIELDS)), } } diff --git a/crates/agglayer-sp1/src/error.rs b/crates/agglayer-sp1/src/error.rs index 0a888a964..4a06ed40c 100644 --- a/crates/agglayer-sp1/src/error.rs +++ b/crates/agglayer-sp1/src/error.rs @@ -31,3 +31,31 @@ pub enum ProofError { source: bincode::Error, }, } + +impl ProofError { + #[must_use] + pub fn invalid_version(&self) -> Option<&str> { + match self { + Self::InvalidSp1Version { version } => Some(version), + Self::UnsupportedReadableSp1Version { .. } + | Self::UnsupportedSp1VersionMajor { .. } + | Self::UnsupportedExecutableSp1Version { .. } + | Self::UnsupportedWritableSp1Version { .. } + | Self::DeserializeSp1Proof { .. } + | Self::DeserializeSp1Vkey { .. } => None, + } + } + + #[must_use] + pub fn unsupported_version(&self) -> Option<&str> { + match self { + Self::UnsupportedReadableSp1Version { version } + | Self::UnsupportedSp1VersionMajor { version } + | Self::UnsupportedExecutableSp1Version { version } + | Self::UnsupportedWritableSp1Version { version } + | Self::DeserializeSp1Proof { version, .. } + | Self::DeserializeSp1Vkey { version, .. } => Some(version), + Self::InvalidSp1Version { .. } => None, + } + } +} diff --git a/crates/agglayer-sp1/tests/policy.rs b/crates/agglayer-sp1/tests/policy.rs index 14adc90ef..d0856943d 100644 --- a/crates/agglayer-sp1/tests/policy.rs +++ b/crates/agglayer-sp1/tests/policy.rs @@ -80,6 +80,26 @@ fn proof_reports_execute_specific_error_for_unknown_major() { )); } +#[test] +fn proof_error_exposes_unsupported_version_for_write_rejections() { + let err = mock_proof("v6.0.1") + .ensure_writable(&AcceptancePolicy::DEFAULT) + .unwrap_err(); + + assert_eq!(err.unsupported_version(), Some("v6.0.1")); + assert_eq!(err.invalid_version(), None); +} + +#[test] +fn proof_error_exposes_invalid_version_for_unparsable_inputs() { + let err = mock_proof("abc") + .ensure_writable(&AcceptancePolicy::DEFAULT) + .unwrap_err(); + + assert_eq!(err.invalid_version(), Some("abc")); + assert_eq!(err.unsupported_version(), None); +} + #[test] fn proof_vkey_hash_helpers_are_infallible() { let proof = mock_proof("v5.2.2"); diff --git a/crates/agglayer-types/src/certificate/mod.rs b/crates/agglayer-types/src/certificate/mod.rs index 11ac4765e..7a20a2474 100644 --- a/crates/agglayer-types/src/certificate/mod.rs +++ b/crates/agglayer-types/src/certificate/mod.rs @@ -27,7 +27,7 @@ pub use id::CertificateId; pub use index::CertificateIndex; pub use metadata::Metadata; #[cfg(feature = "testutils")] -pub use testutils::{compute_signature_info, EMPTY_ELF}; +pub use testutils::{compute_signature_info, dummy_sp1_stark_proof_with_version, EMPTY_ELF}; /// Represents the data submitted by the chains to the AggLayer. /// diff --git a/crates/agglayer-types/src/certificate/testutils.rs b/crates/agglayer-types/src/certificate/testutils.rs index 778317092..38a31c6aa 100644 --- a/crates/agglayer-types/src/certificate/testutils.rs +++ b/crates/agglayer-types/src/certificate/testutils.rs @@ -248,9 +248,10 @@ pub enum AggchainDataType { /// This is a minimal ELF that can be used to create dummy SP1 proofs in tests. pub const EMPTY_ELF: &[u8] = include_bytes!("tests/empty.elf"); -/// Create a dummy STARK proof for testing purposes. -/// This creates a minimal SP1 proof that can be used in tests. -fn create_dummy_stark_proof() -> agglayer_interop_types::aggchain_proof::Proof { +/// Create a dummy STARK proof for testing purposes with a specific SP1 version. +pub fn dummy_sp1_stark_proof_with_version( + version: &str, +) -> agglayer_interop_types::aggchain_proof::Proof { use sp1_sdk::Prover; let (proof, vkey) = { @@ -270,11 +271,17 @@ fn create_dummy_stark_proof() -> agglayer_interop_types::aggchain_proof::Proof { agglayer_interop_types::aggchain_proof::SP1StarkWithContext { proof, vkey, - version: "test".to_string(), + version: version.to_owned(), }, ) } +/// Create a dummy STARK proof for testing purposes. +/// This creates a minimal SP1 proof that can be used in tests. +fn create_dummy_stark_proof() -> agglayer_interop_types::aggchain_proof::Proof { + dummy_sp1_stark_proof_with_version("test") +} + impl Certificate { /// Retrieve the signer from the certificate signature. pub fn retrieve_signer( diff --git a/crates/agglayer-types/src/lib.rs b/crates/agglayer-types/src/lib.rs index b07894e21..fdda922be 100644 --- a/crates/agglayer-types/src/lib.rs +++ b/crates/agglayer-types/src/lib.rs @@ -15,7 +15,9 @@ mod settlement; #[cfg(feature = "testutils")] pub mod testutils { - pub use crate::certificate::{compute_signature_info, EMPTY_ELF}; + pub use crate::certificate::{ + compute_signature_info, dummy_sp1_stark_proof_with_version, EMPTY_ELF, + }; } pub use certificate::{ Certificate, CertificateHeader, CertificateId, CertificateIndex, CertificateStatus, Height, diff --git a/proto/agglayer/node/v1/certificate_submission.proto b/proto/agglayer/node/v1/certificate_submission.proto index a30b795f6..71feeb0df 100644 --- a/proto/agglayer/node/v1/certificate_submission.proto +++ b/proto/agglayer/node/v1/certificate_submission.proto @@ -39,4 +39,7 @@ enum SubmitCertificateErrorKind { // Unable to replace pending certificate. SUBMIT_CERTIFICATE_ERROR_KIND_UNABLE_TO_REPLACE_PENDING_CERTIFICATE = 4; + + // The certificate carries a proof version that gRPC ingress does not accept. + SUBMIT_CERTIFICATE_ERROR_KIND_UNSUPPORTED_PROOF_VERSION = 5; } diff --git a/typos.toml b/typos.toml index 0f1870596..4c82555d5 100644 --- a/typos.toml +++ b/typos.toml @@ -1,5 +1,5 @@ [default] -extend-ignore-identifiers-re = ["[gG]roth16"] +extend-ignore-identifiers-re = ["[gG]roth(?:16)?", "PROOF_MODE_GROTH16"] [files] extend-exclude = ["crates/agglayer-grpc-types/src/compat/v1/snapshots/**"]