diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a906119..f18eddb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -97,14 +97,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install minimal stable with clippy and rustfmt - uses: actions-rs/toolchain@v1 + - name: Setup rust toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 with: - profile: default - toolchain: "stable" - override: true - - - uses: Swatinem/rust-cache@v2 + toolchain: stable - name: Run integration tests run: cargo test --tests diff --git a/buf.gen.yaml b/buf.gen.yaml index 5ec7df1..5e3d518 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -46,5 +46,5 @@ plugins: # opt: # - openapi_naming_strategy=simple # - allow_merge=true - # - remote: buf.build/community/google-gnostic-openapi:v0.7.0 - # out: gnostic + - remote: buf.build/community/google-gnostic-openapi:v0.7.0 + out: openapi diff --git a/delta-sharing/client/src/gen/delta_sharing.v1.rs b/delta-sharing/client/src/gen/delta_sharing.v1.rs index dfcce36..93fa45a 100644 --- a/delta-sharing/client/src/gen/delta_sharing.v1.rs +++ b/delta-sharing/client/src/gen/delta_sharing.v1.rs @@ -157,6 +157,65 @@ pub struct ListShareTablesResponse { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] +pub struct Profile { + /// The file format version of the profile file. This version will be increased whenever + /// non-forward-compatible changes are made to the profile format. When a client is running + /// an unsupported profile file format version, it should show an error message instructing + /// the user to upgrade to a newer version of their client. + #[prost(int32, tag="1")] + pub share_credentials_version: i32, + /// The url of the sharing server. + #[prost(string, tag="2")] + pub endpoint: ::prost::alloc::string::String, + /// The bearer token to access the server. + #[prost(string, tag="3")] + pub bearer_token: ::prost::alloc::string::String, + /// The expiration time of the bearer token in ISO 8601 format. This field is optional + /// and if it is not provided, the bearer token can be seen as never expire. + #[prost(string, optional, tag="4")] + pub expiration_time: ::core::option::Option<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Format { + /// Name of the encoding for files in this table + #[prost(string, tag="1")] + pub provider: ::prost::alloc::string::String, + /// A map containing configuration options for the format + #[prost(map="string, string", tag="2")] + pub options: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Metadata { + /// Unique identifier for this table + /// Validate GUID + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// User-provided identifier for this table + #[prost(string, optional, tag="2")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + /// User-provided description for this table + #[prost(string, optional, tag="3")] + pub description: ::core::option::Option<::prost::alloc::string::String>, + /// Specification of the encoding for the files stored in the table + #[prost(message, optional, tag="4")] + pub format: ::core::option::Option, + /// Schema of the table + #[prost(string, tag="5")] + pub schema_string: ::prost::alloc::string::String, + /// An array containing the names of columns by which the data should be partitioned + #[prost(string, repeated, tag="6")] + pub partition_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The time when this metadata action is created, in milliseconds since the Unix epoch + #[prost(int64, optional, tag="7")] + pub created_time: ::core::option::Option, + /// A map containing configuration options for the metadata action + #[prost(map="string, string", tag="8")] + pub options: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTableVersionRequest { /// The share name to query. It's case-insensitive. #[prost(string, tag="1")] @@ -182,27 +241,143 @@ pub struct GetTableVersionResponse { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Profile { - /// The file format version of the profile file. This version will be increased whenever - /// non-forward-compatible changes are made to the profile format. When a client is running - /// an unsupported profile file format version, it should show an error message instructing - /// the user to upgrade to a newer version of their client. - #[prost(int32, tag="1")] - pub share_credentials_version: i32, - /// The url of the sharing server. +pub struct GetTableMetadataRequest { + /// The share name to query. It's case-insensitive. + #[prost(string, tag="1")] + pub share: ::prost::alloc::string::String, + /// The schema name to query. It's case-insensitive. #[prost(string, tag="2")] - pub endpoint: ::prost::alloc::string::String, - /// The bearer token to access the server. + pub schema: ::prost::alloc::string::String, + /// The table name to query. It's case-insensitive. #[prost(string, tag="3")] - pub bearer_token: ::prost::alloc::string::String, - /// The expiration time of the bearer token in ISO 8601 format. This field is optional - /// and if it is not provided, the bearer token can be seen as never expire. - #[prost(string, optional, tag="4")] - pub expiration_time: ::core::option::Option<::prost::alloc::string::String>, + pub table: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QueryResponse { + #[prost(oneof="query_response::Response", tags="1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `QueryResponse`. +pub mod query_response { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + /// Parquet response format + #[prost(message, tag="1")] + Parquet(super::ParquetResponse), + /// Delta response format + #[prost(message, tag="2")] + Delta(super::DeltaResponse), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ParquetResponse { + #[prost(message, repeated, tag="1")] + pub entries: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ParquetLogMessage { + #[prost(oneof="parquet_log_message::Entry", tags="1, 2")] + pub entry: ::core::option::Option, +} +/// Nested message and enum types in `ParquetLogMessage`. +pub mod parquet_log_message { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Entry { + #[prost(message, tag="1")] + Protocol(super::ProtocolParquet), + #[prost(message, tag="2")] + Metadata(super::MetadataParquet), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ProtocolParquet { + /// The minimum version of the protocol that a client must implement + /// in order to correctly read a Delta Lake table. + #[prost(int32, tag="1")] + pub min_reader_version: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MetadataParquet { + /// Unique identifier for this table + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// User-provided identifier for this table + #[prost(string, optional, tag="2")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + /// User-provided description for this table + #[prost(string, optional, tag="3")] + pub description: ::core::option::Option<::prost::alloc::string::String>, + /// Specification of the encoding for the files stored in the table + #[prost(message, optional, tag="4")] + pub format: ::core::option::Option, + /// Schema of the table + #[prost(string, tag="5")] + pub schema_string: ::prost::alloc::string::String, + /// An array containing the names of columns by which the data should be partitioned + #[prost(string, repeated, tag="6")] + pub partition_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeltaResponse { + #[prost(message, repeated, tag="1")] + pub entries: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeltaLogMessage { + #[prost(oneof="delta_log_message::Entry", tags="1, 2")] + pub entry: ::core::option::Option, +} +/// Nested message and enum types in `DeltaLogMessage`. +pub mod delta_log_message { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Entry { + #[prost(message, tag="1")] + Protocol(super::ProtocolDelta), + #[prost(message, tag="2")] + Metadata(super::MetadatDelta), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ProtocolDelta { + /// The minimum version of the protocol that a client must implement + /// in order to correctly read a Delta Lake table. + #[prost(int32, tag="1")] + pub min_reader_version: i32, + #[prost(int32, tag="2")] + pub min_writer_version: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MetadatDelta { + /// Metadata from Delta protocol + #[prost(message, optional, tag="1")] + pub delta_metadata: ::core::option::Option, + /// The table version the metadata corresponds to, returned when querying + /// table data with a version or timestamp parameter, or cdf query + /// with includeHistoricalMetadata set to true. + #[prost(int64, optional, tag="2")] + pub version: ::core::option::Option, + /// The size of the table in bytes, will be returned if available in the delta log. + #[prost(int64, optional, tag="3")] + pub size: ::core::option::Option, + /// The number of files in the table, will be returned if available in the delta log. + #[prost(int64, optional, tag="4")] + pub num_files: ::core::option::Option, } /// Encoded file descriptor set for the `delta_sharing.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xfa, 0x44, 0x0a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x0a, 0xe2, 0x3b, 0x0a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, @@ -302,6 +477,527 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xc6, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0xd1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, + 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, + 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xfe, 0x2b, 0x0a, + 0x07, 0x12, 0x05, 0x00, 0x00, 0x8b, 0x01, 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, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, + 0x00, 0x14, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x12, 0x0a, + 0x94, 0x04, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0e, 0x02, 0x46, 0x1a, 0x86, 0x04, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x70, + 0x65, 0x72, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, + 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0a, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, + 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, + 0x6e, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x73, + 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x65, + 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, + 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x2e, 0x0a, 0x20, 0x4d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x20, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x0e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0e, + 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x11, 0x1c, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x1f, 0x20, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x0e, 0x21, 0x45, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x03, 0x05, 0x12, 0x03, 0x0e, 0x22, 0x44, 0x0a, 0xf3, + 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x13, 0x02, 0x21, 0x1a, 0xe5, 0x01, 0x20, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x20, 0x53, + 0x65, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x0a, 0x20, 0x62, 0x79, 0x20, 0x61, + 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, + 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x13, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x13, 0x0b, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x13, 0x12, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x13, 0x1f, 0x20, 0x0a, 0xd5, 0x01, 0x0a, + 0x02, 0x04, 0x01, 0x12, 0x04, 0x18, 0x00, 0x1d, 0x01, 0x1a, 0xc8, 0x01, 0x20, 0x41, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6e, + 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x20, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x41, 0x20, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x18, 0x08, 0x0d, + 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x1a, 0x02, 0x19, 0x1a, 0x22, 0x20, + 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1a, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x1a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1a, 0x17, 0x18, 0x0a, 0x21, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x01, 0x12, 0x03, 0x1c, 0x02, 0x12, 0x1a, 0x14, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x1c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x1c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x1c, 0x10, 0x11, 0x0a, 0x5d, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x20, 0x00, + 0x25, 0x01, 0x1a, 0x51, 0x20, 0x41, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x41, + 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x20, 0x08, + 0x0e, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x22, 0x02, 0x12, 0x1a, 0x18, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x73, 0x63, 0x68, 0x61, 0x6d, 0x61, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, + 0x05, 0x12, 0x03, 0x22, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, + 0x03, 0x22, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x22, + 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x02, 0x13, 0x1a, + 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x01, 0x03, 0x12, 0x03, 0x24, 0x11, 0x12, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x28, + 0x00, 0x33, 0x01, 0x1a, 0x47, 0x20, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, + 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x03, 0x01, 0x12, 0x03, 0x28, 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, + 0x12, 0x03, 0x2a, 0x02, 0x19, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x00, 0x04, 0x12, 0x03, 0x2a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x2a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x2a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x17, + 0x18, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x12, 0x1a, 0x18, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, + 0x05, 0x12, 0x03, 0x2c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x2c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, + 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x2e, 0x02, 0x14, 0x1a, + 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x2e, 0x12, 0x13, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x03, 0x12, + 0x03, 0x30, 0x02, 0x13, 0x1a, 0x2b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x05, 0x12, 0x03, 0x30, 0x02, 0x08, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x01, 0x12, 0x03, 0x30, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x12, 0x03, 0x30, 0x11, 0x12, 0x0a, 0x47, 0x0a, 0x04, 0x04, + 0x03, 0x02, 0x04, 0x12, 0x03, 0x32, 0x02, 0x1f, 0x1a, 0x3a, 0x20, 0x41, 0x20, 0x75, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, + 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x04, 0x12, 0x03, 0x32, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x01, 0x12, 0x03, 0x32, 0x12, 0x1a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x03, 0x12, 0x03, 0x32, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x04, 0x12, 0x04, 0x35, 0x00, 0x37, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, + 0x03, 0x35, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x36, 0x02, + 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x02, 0x0c, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x36, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x36, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, + 0x05, 0x12, 0x04, 0x39, 0x00, 0x3f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, + 0x39, 0x08, 0x1a, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x02, 0x1b, + 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, 0x03, 0x3b, 0x02, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3b, 0x0b, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3b, 0x11, 0x16, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3b, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, + 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, 0x3e, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, + 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, + 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x72, + 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x05, 0x02, 0x01, 0x04, 0x12, 0x03, 0x3e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, + 0x01, 0x05, 0x12, 0x03, 0x3e, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, + 0x12, 0x03, 0x3e, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, + 0x3e, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x41, 0x00, 0x44, 0x01, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x3e, 0x0a, 0x04, 0x04, + 0x06, 0x02, 0x00, 0x12, 0x03, 0x43, 0x02, 0x13, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x43, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x43, 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x46, 0x00, 0x49, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x46, 0x08, 0x18, 0x0a, 0x2c, 0x0a, + 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x48, 0x02, 0x12, 0x1a, 0x1f, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x48, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x48, 0x08, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x48, 0x10, 0x11, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x4b, 0x00, 0x50, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x4b, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x4c, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x4c, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x4c, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x4c, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x4f, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4f, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x03, 0x4f, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x08, 0x12, 0x03, 0x4f, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x08, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x4f, 0x14, 0x3b, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x52, 0x00, 0x58, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, + 0x01, 0x12, 0x03, 0x52, 0x08, 0x1b, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, + 0x54, 0x02, 0x1c, 0x1a, 0x22, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x04, + 0x12, 0x03, 0x54, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, + 0x54, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x54, 0x12, + 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x54, 0x1a, 0x1b, 0x0a, + 0x9f, 0x01, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x03, 0x57, 0x02, 0x26, 0x1a, 0x91, 0x01, + 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x20, 0x41, + 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x04, 0x12, 0x03, 0x57, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x05, 0x12, 0x03, 0x57, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x03, 0x57, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, 0x57, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, + 0x04, 0x5a, 0x00, 0x62, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x5a, 0x08, + 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x02, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5b, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5b, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, + 0x12, 0x03, 0x5e, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, + 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x5e, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5e, + 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x08, 0x12, 0x03, 0x5e, 0x13, 0x3c, + 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x5e, + 0x14, 0x3b, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x02, 0x12, 0x03, 0x61, 0x02, 0x3e, 0x1a, + 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x05, 0x12, 0x03, 0x61, 0x02, + 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x01, 0x12, 0x03, 0x61, 0x09, 0x0f, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x03, 0x12, 0x03, 0x61, 0x12, 0x13, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0a, 0x02, 0x02, 0x08, 0x12, 0x03, 0x61, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, + 0x0a, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x61, 0x15, 0x3c, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x0b, 0x12, 0x04, 0x64, 0x00, 0x6a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, + 0x12, 0x03, 0x64, 0x08, 0x20, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x66, + 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x66, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x66, 0x0b, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x66, 0x11, 0x16, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x03, 0x66, 0x19, 0x1a, 0x0a, 0x9d, 0x01, + 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x12, 0x03, 0x69, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, 0x12, 0x03, 0x69, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, 0x69, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, + 0x01, 0x01, 0x12, 0x03, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, + 0x12, 0x03, 0x69, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x04, 0x6c, 0x00, 0x71, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x03, 0x6c, 0x08, 0x1e, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x03, 0x6d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x6d, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x6d, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x6d, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x03, 0x70, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x05, 0x12, 0x03, 0x70, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x03, 0x70, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x12, 0x03, 0x70, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x08, 0x12, 0x03, 0x70, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x0c, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x70, 0x14, 0x3b, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x04, 0x73, 0x00, 0x79, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0d, + 0x01, 0x12, 0x03, 0x73, 0x08, 0x1f, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x03, + 0x75, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x75, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x03, 0x75, + 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x11, 0x16, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x19, 0x1a, 0x0a, 0x9d, + 0x01, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x03, 0x78, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x04, 0x12, 0x03, 0x78, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, 0x03, 0x78, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x78, 0x24, 0x25, 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x05, 0x7b, 0x00, + 0x8b, 0x01, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x03, 0x7b, 0x08, 0x0f, 0x0a, + 0xd0, 0x02, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0x80, 0x01, 0x02, 0x26, 0x1a, 0xc1, + 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, + 0x65, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x0a, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x0a, + 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x74, 0x20, + 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x05, 0x12, 0x04, 0x80, 0x01, 0x02, + 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0x80, 0x01, 0x08, 0x21, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x01, 0x24, 0x25, 0x0a, + 0x2e, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x01, 0x12, 0x04, 0x83, 0x01, 0x02, 0x16, 0x1a, 0x20, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x75, 0x72, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x12, 0x04, 0x83, 0x01, 0x02, 0x08, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x01, 0x12, 0x04, 0x83, 0x01, 0x09, 0x11, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0e, 0x02, 0x01, 0x03, 0x12, 0x04, 0x83, 0x01, 0x14, 0x15, 0x0a, 0x36, 0x0a, 0x04, + 0x04, 0x0e, 0x02, 0x02, 0x12, 0x04, 0x86, 0x01, 0x02, 0x1a, 0x1a, 0x28, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, + 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x05, 0x12, 0x04, 0x86, + 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0x86, 0x01, + 0x09, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0x86, 0x01, 0x18, + 0x19, 0x0a, 0xad, 0x01, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x03, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x26, + 0x1a, 0x9e, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, + 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, + 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, 0x69, + 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, + 0x61, 0x73, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x04, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x05, 0x12, 0x04, 0x8a, 0x01, 0x0b, 0x11, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x12, 0x21, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x03, 0x12, 0x04, 0x8a, 0x01, 0x24, 0x25, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xf6, 0x10, 0x0a, 0x1f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x06, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, + 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x03, 0x0a, + 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x26, 0x0a, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0xd3, + 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, + 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, + 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xef, 0x09, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x27, 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, 0x25, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x0c, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, + 0x01, 0x12, 0x03, 0x06, 0x08, 0x0e, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, + 0x08, 0x02, 0x16, 0x1a, 0x2e, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x08, 0x02, + 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x09, 0x11, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x08, 0x14, 0x15, 0x0a, 0x44, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0b, 0x02, 0x22, 0x1a, 0x37, 0x20, 0x41, 0x20, 0x6d, + 0x61, 0x70, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0b, 0x02, + 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0b, 0x16, 0x1d, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0b, 0x20, 0x21, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x01, 0x12, 0x04, 0x0e, 0x00, 0x27, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, + 0x12, 0x03, 0x0e, 0x08, 0x10, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x11, + 0x02, 0x10, 0x1a, 0x31, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x47, 0x55, 0x49, 0x44, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x11, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x11, 0x09, + 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x11, 0x0e, 0x0f, 0x0a, + 0x36, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x14, 0x02, 0x1b, 0x1a, 0x29, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x04, + 0x12, 0x03, 0x14, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, + 0x14, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x12, + 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x14, 0x19, 0x1a, 0x0a, + 0x37, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x17, 0x02, 0x22, 0x1a, 0x2a, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, + 0x04, 0x12, 0x03, 0x17, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x17, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x17, + 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x17, 0x20, 0x21, + 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x1a, 0x02, 0x14, 0x1a, 0x41, 0x20, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x1a, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1a, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x1a, 0x12, 0x13, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x01, + 0x02, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x1b, 0x1a, 0x15, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x05, 0x12, 0x03, 0x1d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x04, 0x01, 0x12, 0x03, 0x1d, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x04, 0x03, 0x12, 0x03, 0x1d, 0x19, 0x1a, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x05, + 0x12, 0x03, 0x20, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x20, 0x62, 0x79, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x05, 0x04, 0x12, 0x03, 0x20, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x05, + 0x12, 0x03, 0x20, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x01, 0x12, 0x03, + 0x20, 0x12, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x03, 0x12, 0x03, 0x20, 0x26, + 0x27, 0x0a, 0x62, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x06, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x55, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2c, 0x20, + 0x69, 0x6e, 0x20, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x20, + 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x78, 0x20, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x04, 0x12, 0x03, + 0x23, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x05, 0x12, 0x03, 0x23, 0x0b, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x01, 0x12, 0x03, 0x23, 0x11, 0x1d, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x03, 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x4d, 0x0a, + 0x04, 0x04, 0x01, 0x02, 0x07, 0x12, 0x03, 0x26, 0x02, 0x22, 0x1a, 0x40, 0x20, 0x41, 0x20, 0x6d, + 0x61, 0x70, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x07, 0x06, 0x12, 0x03, 0x26, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x07, 0x01, 0x12, 0x03, 0x26, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, + 0x03, 0x12, 0x03, 0x26, 0x20, 0x21, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x81, + 0x2e, 0x0a, 0x1c, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, @@ -317,22 +1013,458 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x74, 0x61, 0x6d, 0x70, 0x22, 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc6, 0x01, 0x0a, 0x07, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x42, 0xd1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x71, 0x75, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x0a, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x0f, 0x50, 0x61, 0x72, + 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x11, + 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, + 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x3f, 0x0a, 0x0f, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x12, + 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, + 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfe, 0x01, + 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4c, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3b, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, + 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x6b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x02, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x88, 0x01, + 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x42, 0xd0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, + 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, + 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xd0, 0x1e, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, + 0x76, 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, + 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x29, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x00, 0x12, 0x04, 0x07, 0x00, 0x15, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, + 0x03, 0x07, 0x08, 0x1e, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x09, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x09, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x09, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x09, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x09, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x09, 0x14, 0x3b, 0x0a, 0x3f, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0c, 0x02, 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, + 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x0c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0c, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0c, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x01, 0x08, 0x12, 0x03, 0x0c, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x01, 0x08, + 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x0c, 0x15, 0x3c, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x02, 0x12, 0x03, 0x0f, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x02, 0x05, 0x12, 0x03, 0x0f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, + 0x12, 0x03, 0x0f, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, + 0x0f, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x08, 0x12, 0x03, 0x0f, 0x13, + 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, + 0x0f, 0x14, 0x3b, 0x0a, 0x99, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x14, 0x02, + 0x29, 0x1a, 0x8b, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x49, 0x53, 0x4f, 0x38, 0x36, 0x30, + 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x55, 0x54, 0x43, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x2c, 0x0a, 0x20, + 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x32, 0x30, 0x32, 0x32, 0x2d, 0x30, 0x31, 0x2d, + 0x30, 0x31, 0x54, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x5a, 0x2e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x61, 0x72, + 0x6c, 0x69, 0x65, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x0a, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, + 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x14, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x14, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x14, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x03, 0x03, 0x12, 0x03, 0x14, 0x27, 0x28, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x17, + 0x00, 0x1a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x17, 0x08, 0x1f, 0x0a, + 0x34, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x19, 0x02, 0x14, 0x1a, 0x27, 0x20, 0x54, + 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x19, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x19, 0x08, + 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x19, 0x12, 0x13, 0x0a, + 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x1c, 0x00, 0x25, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, + 0x02, 0x01, 0x12, 0x03, 0x1c, 0x08, 0x1f, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, + 0x03, 0x1e, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x1e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x1e, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1e, 0x11, + 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x03, 0x1e, 0x13, 0x3c, 0x0a, + 0x10, 0x0a, 0x09, 0x04, 0x02, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x1e, 0x14, + 0x3b, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x21, 0x02, 0x3e, 0x1a, 0x32, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x21, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x21, 0x09, 0x0f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x21, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x01, 0x08, 0x12, 0x03, 0x21, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x02, + 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x21, 0x15, 0x3c, 0x0a, 0x3e, 0x0a, 0x04, + 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x24, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x02, 0x05, 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, + 0x03, 0x12, 0x03, 0x24, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x08, 0x12, + 0x03, 0x24, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x02, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, + 0x02, 0x12, 0x03, 0x24, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x27, 0x00, + 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x27, 0x08, 0x15, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x03, 0x08, 0x00, 0x12, 0x04, 0x28, 0x02, 0x2d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x03, 0x08, 0x00, 0x01, 0x12, 0x03, 0x28, 0x08, 0x10, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x03, + 0x02, 0x00, 0x12, 0x03, 0x2a, 0x04, 0x20, 0x1a, 0x19, 0x20, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2a, 0x04, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, 0x14, 0x1b, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x1e, 0x1f, 0x0a, 0x24, 0x0a, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x04, 0x1c, 0x1a, 0x17, 0x20, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x06, 0x12, 0x03, 0x2c, 0x04, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2c, 0x12, 0x17, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x32, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, + 0x03, 0x30, 0x08, 0x17, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x31, 0x02, + 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x03, 0x31, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x31, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x31, 0x1d, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x31, 0x27, 0x28, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, + 0x04, 0x34, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x34, 0x08, + 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x08, 0x00, 0x12, 0x04, 0x35, 0x02, 0x38, 0x03, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x01, 0x12, 0x03, 0x35, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x36, 0x04, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x04, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x36, 0x14, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x36, 0x1f, 0x20, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, 0x37, 0x04, + 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x03, 0x37, 0x04, 0x13, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x37, 0x14, 0x1c, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x37, 0x1f, 0x20, 0x0a, 0x0a, 0x0a, 0x02, 0x04, + 0x06, 0x12, 0x04, 0x3b, 0x00, 0x3f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, + 0x3b, 0x08, 0x17, 0x0a, 0x7f, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3e, 0x02, 0x1f, + 0x1a, 0x72, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, + 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, + 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x3e, + 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3e, 0x08, 0x1a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3e, 0x1d, 0x1e, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x41, 0x00, 0x53, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, + 0x01, 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, + 0x43, 0x02, 0x10, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x43, 0x09, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x43, 0x0e, + 0x0f, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x03, 0x46, 0x02, 0x1b, 0x1a, 0x29, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x01, 0x04, 0x12, 0x03, 0x46, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x05, + 0x12, 0x03, 0x46, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x46, 0x12, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x12, 0x03, 0x46, 0x19, + 0x1a, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x02, 0x12, 0x03, 0x49, 0x02, 0x22, 0x1a, 0x2a, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x02, 0x04, 0x12, 0x03, 0x49, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, + 0x05, 0x12, 0x03, 0x49, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x01, 0x12, + 0x03, 0x49, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x03, 0x12, 0x03, 0x49, + 0x20, 0x21, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x03, 0x12, 0x03, 0x4c, 0x02, 0x14, 0x1a, + 0x41, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x20, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x06, 0x12, 0x03, 0x4c, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x01, 0x12, 0x03, 0x4c, 0x09, 0x0f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4c, 0x12, 0x13, 0x0a, 0x22, 0x0a, 0x04, + 0x04, 0x07, 0x02, 0x04, 0x12, 0x03, 0x4f, 0x02, 0x1b, 0x1a, 0x15, 0x20, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x05, 0x12, 0x03, 0x4f, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x04, 0x03, 0x12, 0x03, 0x4f, 0x19, 0x1a, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x07, + 0x02, 0x05, 0x12, 0x03, 0x52, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x20, 0x62, 0x79, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x05, 0x04, 0x12, 0x03, 0x52, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x05, 0x05, 0x12, 0x03, 0x52, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x01, + 0x12, 0x03, 0x52, 0x12, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x03, 0x12, 0x03, + 0x52, 0x26, 0x27, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x55, 0x00, 0x57, 0x01, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x55, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x08, 0x02, 0x00, 0x12, 0x03, 0x56, 0x02, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x04, 0x12, 0x03, 0x56, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x56, 0x0b, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x56, + 0x1b, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x56, 0x25, 0x26, + 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x59, 0x00, 0x5e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x09, 0x01, 0x12, 0x03, 0x59, 0x08, 0x17, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x08, 0x00, + 0x12, 0x04, 0x5a, 0x02, 0x5d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x08, 0x00, 0x01, 0x12, + 0x03, 0x5a, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x04, + 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5b, 0x04, 0x11, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5b, 0x12, 0x1a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x09, 0x02, 0x01, 0x12, 0x03, 0x5c, 0x04, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, + 0x06, 0x12, 0x03, 0x5c, 0x04, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x5c, 0x11, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5c, + 0x1c, 0x1d, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x04, 0x60, 0x00, 0x66, 0x01, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x60, 0x08, 0x15, 0x0a, 0x7f, 0x0a, 0x04, 0x04, 0x0a, + 0x02, 0x00, 0x12, 0x03, 0x63, 0x02, 0x1f, 0x1a, 0x72, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, + 0x79, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, + 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x0a, 0x02, 0x00, 0x05, 0x12, 0x03, 0x63, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x63, 0x08, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x63, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, 0x12, 0x03, 0x65, + 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x05, 0x12, 0x03, 0x65, 0x02, 0x07, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, 0x03, 0x65, 0x08, 0x1a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x65, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x0b, 0x12, 0x04, 0x68, 0x00, 0x76, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, + 0x03, 0x68, 0x08, 0x14, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x6a, 0x02, + 0x1e, 0x1a, 0x1e, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x6a, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6a, 0x0b, 0x19, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6a, 0x1c, 0x1d, 0x0a, 0xc2, 0x01, 0x0a, 0x04, + 0x04, 0x0b, 0x02, 0x01, 0x12, 0x03, 0x6f, 0x02, 0x1d, 0x1a, 0xb4, 0x01, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x2c, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, + 0x6e, 0x67, 0x0a, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x72, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x64, 0x66, 0x20, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x0a, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, 0x12, 0x03, 0x6f, 0x02, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, 0x6f, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x03, 0x6f, 0x11, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, + 0x02, 0x01, 0x03, 0x12, 0x03, 0x6f, 0x1b, 0x1c, 0x0a, 0x5e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x02, + 0x12, 0x03, 0x72, 0x02, 0x1a, 0x1a, 0x51, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, + 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, + 0x04, 0x12, 0x03, 0x72, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x72, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x12, 0x03, 0x72, + 0x11, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x03, 0x12, 0x03, 0x72, 0x18, 0x19, + 0x0a, 0x60, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x03, 0x12, 0x03, 0x75, 0x02, 0x1f, 0x1a, 0x53, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x6c, 0x6f, 0x67, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x04, 0x12, 0x03, 0x75, 0x02, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x05, 0x12, 0x03, 0x75, 0x0b, 0x10, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x01, 0x12, 0x03, 0x75, 0x11, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x03, 0x03, 0x12, 0x03, 0x75, 0x1d, 0x1e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, 0x0a, 0xd6, 0x1b, 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x1a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xb4, + 0x0b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x58, 0x92, 0x41, 0x46, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, + 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x2a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x09, 0x12, 0x07, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, + 0x92, 0x41, 0x44, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, + 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x12, 0xbb, + 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x24, + 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, + 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, + 0x61, 0x6c, 0x12, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0xe8, 0x01, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x92, 0x41, 0x4b, 0x0a, 0x07, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, + 0x12, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x27, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, + 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, + 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xe1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x79, 0x92, 0x41, 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, + 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, + 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, + 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, + 0x1a, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, + 0x2f, 0x61, 0x6c, 0x6c, 0x2d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x02, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x28, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x92, 0x41, 0x59, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x34, 0x47, 0x65, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x2a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0xa0, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0xce, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x08, + 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, @@ -343,623 +1475,112 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x9c, 0x33, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xa0, - 0x01, 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, - 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x14, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x12, 0x0a, 0x94, 0x04, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x0e, 0x02, 0x46, 0x1a, 0x86, 0x04, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, - 0x73, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, - 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0a, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x75, 0x62, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, - 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x0a, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x69, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x20, 0x4d, 0x75, 0x73, - 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x2e, 0x20, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x6e, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, - 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x61, - 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0e, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0e, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x11, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x08, 0x12, 0x03, 0x0e, 0x21, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, - 0x09, 0x03, 0x05, 0x12, 0x03, 0x0e, 0x22, 0x44, 0x0a, 0xf3, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x13, 0x02, 0x21, 0x1a, 0xe5, 0x01, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x20, 0x53, 0x65, 0x74, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x65, 0x64, 0x0a, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, - 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, - 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x2e, 0x0a, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x13, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x13, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x13, 0x12, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x13, 0x1f, 0x20, 0x0a, 0xd5, 0x01, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x18, - 0x00, 0x1d, 0x01, 0x1a, 0xc8, 0x01, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x41, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, - 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, - 0x6e, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, - 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x18, 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x00, 0x12, 0x03, 0x1a, 0x02, 0x19, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x1a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x1a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x1a, 0x17, 0x18, 0x0a, 0x21, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x1c, 0x02, 0x12, - 0x1a, 0x14, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x1c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1c, - 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1c, 0x10, 0x11, - 0x0a, 0x5d, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x20, 0x00, 0x25, 0x01, 0x1a, 0x51, 0x20, 0x41, - 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, - 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x20, 0x08, 0x0e, 0x0a, 0x25, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x00, 0x12, 0x03, 0x22, 0x02, 0x12, 0x1a, 0x18, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x61, 0x6d, - 0x61, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x22, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x22, 0x09, 0x0d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x22, 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x02, 0x13, 0x1a, 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, - 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x24, 0x11, - 0x12, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x28, 0x00, 0x33, 0x01, 0x1a, 0x47, 0x20, - 0x41, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, - 0x66, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x28, - 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x2a, 0x02, 0x19, 0x1a, - 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x2a, 0x02, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x2a, 0x0b, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x17, 0x18, 0x0a, 0x25, 0x0a, 0x04, 0x04, - 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x12, 0x1a, 0x18, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x05, 0x12, 0x03, 0x2c, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2c, 0x09, 0x0d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, - 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x2e, 0x02, 0x14, 0x1a, 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, - 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, - 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, - 0x2e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2e, 0x12, - 0x13, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x03, 0x12, 0x03, 0x30, 0x02, 0x13, 0x1a, 0x2b, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, - 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x03, 0x05, 0x12, 0x03, 0x30, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x30, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x30, 0x11, 0x12, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x04, 0x12, 0x03, 0x32, - 0x02, 0x1f, 0x1a, 0x3a, 0x20, 0x41, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x04, 0x12, 0x03, 0x32, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x04, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x04, 0x01, 0x12, 0x03, 0x32, 0x12, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, - 0x03, 0x12, 0x03, 0x32, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x35, 0x00, - 0x37, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x35, 0x08, 0x19, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x36, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x36, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x36, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x39, 0x00, 0x3f, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x39, 0x08, 0x1a, 0x0a, 0x2e, 0x0a, - 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, 0x03, 0x3b, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3b, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x3b, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x3b, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, - 0x3e, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, - 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x3e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3e, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3e, 0x12, 0x21, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3e, 0x24, 0x25, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x06, 0x12, 0x04, 0x41, 0x00, 0x44, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, - 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x43, - 0x02, 0x13, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x43, 0x09, - 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x43, 0x11, 0x12, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x46, 0x00, 0x49, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x07, 0x01, 0x12, 0x03, 0x46, 0x08, 0x18, 0x0a, 0x2c, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, - 0x03, 0x48, 0x02, 0x12, 0x1a, 0x1f, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x48, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x48, 0x08, - 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x48, 0x10, 0x11, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x4b, 0x00, 0x50, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x08, 0x01, 0x12, 0x03, 0x4b, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, - 0x03, 0x4c, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x03, 0x4c, - 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4c, 0x0d, 0x17, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4c, 0x1a, 0x1b, 0x0a, 0x3e, - 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x4f, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, - 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x4f, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, - 0x08, 0x12, 0x03, 0x4f, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x08, 0x02, 0x01, 0x08, 0x87, - 0x09, 0x0e, 0x02, 0x12, 0x03, 0x4f, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, - 0x52, 0x00, 0x58, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x03, 0x52, 0x08, 0x1b, - 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x54, 0x02, 0x1c, 0x1a, 0x22, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x04, 0x12, 0x03, 0x54, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, 0x54, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x54, 0x12, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x54, 0x1a, 0x1b, 0x0a, 0x9f, 0x01, 0x0a, 0x04, 0x04, 0x09, - 0x02, 0x01, 0x12, 0x03, 0x57, 0x02, 0x26, 0x1a, 0x91, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, - 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, - 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x01, 0x04, 0x12, 0x03, 0x57, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x57, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x57, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x57, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x04, 0x5a, 0x00, 0x62, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x5a, 0x08, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x0a, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, - 0x06, 0x12, 0x03, 0x5b, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, - 0x03, 0x5b, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, - 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, 0x12, 0x03, 0x5e, 0x02, 0x3d, 0x1a, - 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, - 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5e, 0x09, 0x0e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5e, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0a, 0x02, 0x01, 0x08, 0x12, 0x03, 0x5e, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, - 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x5e, 0x14, 0x3b, 0x0a, 0x3f, 0x0a, 0x04, - 0x04, 0x0a, 0x02, 0x02, 0x12, 0x03, 0x61, 0x02, 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, - 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x0a, 0x02, 0x02, 0x05, 0x12, 0x03, 0x61, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0a, 0x02, 0x02, 0x01, 0x12, 0x03, 0x61, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, - 0x02, 0x03, 0x12, 0x03, 0x61, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x08, - 0x12, 0x03, 0x61, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, 0x02, 0x02, 0x08, 0x87, 0x09, - 0x0e, 0x02, 0x12, 0x03, 0x61, 0x15, 0x3c, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x04, 0x64, - 0x00, 0x6a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x03, 0x64, 0x08, 0x20, 0x0a, - 0x2e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x66, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, - 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x03, 0x66, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x66, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x66, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x66, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, - 0x12, 0x03, 0x69, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, - 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, - 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, - 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, - 0x12, 0x03, 0x69, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, - 0x69, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x03, 0x69, 0x12, - 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x12, 0x03, 0x69, 0x24, 0x25, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x04, 0x6c, 0x00, 0x71, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x0c, 0x01, 0x12, 0x03, 0x6c, 0x08, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, - 0x03, 0x6d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x03, 0x6d, - 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6d, 0x0d, 0x17, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6d, 0x1a, 0x1b, 0x0a, 0x3e, - 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x03, 0x70, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, - 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x05, 0x12, 0x03, 0x70, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x03, 0x70, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x70, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, - 0x08, 0x12, 0x03, 0x70, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0c, 0x02, 0x01, 0x08, 0x87, - 0x09, 0x0e, 0x02, 0x12, 0x03, 0x70, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x04, - 0x73, 0x00, 0x79, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, 0x03, 0x73, 0x08, 0x1f, - 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x03, 0x75, 0x02, 0x1b, 0x1a, 0x21, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, 0x03, 0x75, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x03, 0x75, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x0d, 0x02, - 0x01, 0x12, 0x03, 0x78, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, - 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, - 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, - 0x04, 0x12, 0x03, 0x78, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x78, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x03, 0x78, - 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x03, 0x78, 0x24, 0x25, - 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x05, 0x7b, 0x00, 0x89, 0x01, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x0e, 0x01, 0x12, 0x03, 0x7b, 0x08, 0x1e, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0e, 0x02, - 0x00, 0x12, 0x03, 0x7d, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x7d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x7d, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x7d, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x12, 0x03, 0x7d, 0x13, - 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, - 0x7d, 0x14, 0x3b, 0x0a, 0x40, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x01, 0x12, 0x04, 0x80, 0x01, 0x02, - 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x12, 0x04, - 0x80, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x01, 0x12, 0x04, 0x80, - 0x01, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x03, 0x12, 0x04, 0x80, 0x01, - 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x08, 0x12, 0x04, 0x80, 0x01, 0x14, - 0x3d, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, - 0x80, 0x01, 0x15, 0x3c, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x02, 0x12, 0x04, 0x83, 0x01, - 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x05, 0x12, 0x04, - 0x83, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0x83, - 0x01, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0x83, 0x01, - 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x08, 0x12, 0x04, 0x83, 0x01, 0x13, - 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, - 0x83, 0x01, 0x14, 0x3b, 0x0a, 0x9a, 0x02, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x03, 0x12, 0x04, 0x88, - 0x01, 0x02, 0x29, 0x1a, 0x8b, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x49, 0x53, 0x4f, 0x38, - 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x55, 0x54, 0x43, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x2c, - 0x0a, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x32, 0x30, 0x32, 0x32, 0x2d, 0x30, - 0x31, 0x2d, 0x30, 0x31, 0x54, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x5a, 0x2e, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, - 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x0a, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x04, 0x12, 0x04, 0x88, 0x01, 0x02, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x05, 0x12, 0x04, 0x88, 0x01, 0x0b, 0x11, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x01, 0x12, 0x04, 0x88, 0x01, 0x12, 0x24, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x03, 0x12, 0x04, 0x88, 0x01, 0x27, 0x28, 0x0a, 0x0c, 0x0a, - 0x02, 0x04, 0x0f, 0x12, 0x06, 0x8b, 0x01, 0x00, 0x8e, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x0f, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x08, 0x1f, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, - 0x12, 0x04, 0x8d, 0x01, 0x02, 0x14, 0x1a, 0x27, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x05, 0x12, 0x04, 0x8d, 0x01, 0x02, 0x07, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x08, 0x0f, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x02, - 0x04, 0x10, 0x12, 0x06, 0x90, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, - 0x01, 0x12, 0x04, 0x90, 0x01, 0x08, 0x0f, 0x0a, 0xd0, 0x02, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, - 0x12, 0x04, 0x95, 0x01, 0x02, 0x26, 0x1a, 0xc1, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x0a, 0x20, - 0x6e, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x2d, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x57, - 0x68, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x73, - 0x68, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6e, 0x67, - 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x65, 0x72, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, - 0x72, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x00, 0x05, 0x12, 0x04, 0x95, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x00, 0x01, 0x12, 0x04, 0x95, 0x01, 0x08, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, - 0x03, 0x12, 0x04, 0x95, 0x01, 0x24, 0x25, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, - 0x04, 0x98, 0x01, 0x02, 0x16, 0x1a, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x72, 0x6c, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x05, - 0x12, 0x04, 0x98, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, - 0x04, 0x98, 0x01, 0x09, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, - 0x98, 0x01, 0x14, 0x15, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x02, 0x12, 0x04, 0x9b, 0x01, - 0x02, 0x1a, 0x1a, 0x28, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x10, 0x02, 0x02, 0x05, 0x12, 0x04, 0x9b, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x10, 0x02, 0x02, 0x01, 0x12, 0x04, 0x9b, 0x01, 0x09, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x02, 0x03, 0x12, 0x04, 0x9b, 0x01, 0x18, 0x19, 0x0a, 0xad, 0x01, 0x0a, 0x04, 0x04, 0x10, - 0x02, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x26, 0x1a, 0x9e, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, - 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, - 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x03, 0x04, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, - 0x05, 0x12, 0x04, 0x9f, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x01, - 0x12, 0x04, 0x9f, 0x01, 0x12, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x03, 0x12, - 0x04, 0x9f, 0x01, 0x24, 0x25, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xd5, 0x19, - 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, - 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, - 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1d, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, - 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x91, 0x0a, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, - 0x41, 0x46, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, - 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, - 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x92, 0x41, 0x44, - 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, - 0x61, 0x6c, 0x12, 0x26, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x08, 0x47, 0x65, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, - 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, 0x0a, 0x06, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, - 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, - 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x6c, 0x74, - 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x92, 0x41, 0x4b, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x2a, 0x4c, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x8a, 0x0d, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x61, + 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, 0x27, + 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x06, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, + 0x38, 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x09, 0x00, 0x61, 0x01, 0x0a, 0x0a, 0x0a, + 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, + 0x00, 0x12, 0x04, 0x0b, 0x02, 0x16, 0x03, 0x1a, 0x28, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x06, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0b, 0x11, 0x22, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x2d, 0x3f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0c, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x0c, 0x04, 0x30, 0x0a, 0x11, 0x0a, 0x0a, 0x06, + 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x0c, 0x20, 0x2e, 0x0a, 0x0d, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x0e, 0x04, 0x15, 0x06, 0x0a, 0x0f, 0x0a, + 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x0e, 0x04, 0x15, 0x06, 0x0a, 0x0f, + 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x0f, 0x06, 0x37, 0x0a, + 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x11, 0x08, + 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, + 0x12, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x05, 0x12, + 0x03, 0x14, 0x06, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x19, 0x02, + 0x24, 0x03, 0x1a, 0x28, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x19, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x01, 0x02, 0x12, 0x03, 0x19, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x19, 0x29, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, + 0x03, 0x1a, 0x04, 0x38, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x12, 0x03, 0x1a, 0x04, 0x38, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, + 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x1a, 0x20, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x01, 0x04, 0x12, 0x04, 0x1c, 0x04, 0x23, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, + 0x04, 0x92, 0x08, 0x12, 0x04, 0x1c, 0x04, 0x23, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, + 0x01, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x1d, 0x06, 0x37, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x1f, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, + 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x20, 0x08, 0x12, 0x0a, 0x0f, + 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x22, 0x06, 0x1e, 0x0a, + 0x2c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x27, 0x02, 0x32, 0x03, 0x1a, 0x1e, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x27, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x27, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x27, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x12, 0x03, 0x28, 0x04, 0x3d, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, + 0xbc, 0x22, 0x02, 0x12, 0x03, 0x28, 0x04, 0x3d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, + 0x04, 0x12, 0x04, 0x2a, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x92, 0x08, 0x12, 0x04, 0x2a, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, + 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x2b, 0x06, 0x2d, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x02, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x2d, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, + 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x2e, 0x08, 0x12, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x30, 0x06, 0x21, 0x0a, 0x3a, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x35, 0x02, 0x40, 0x03, 0x1a, 0x2c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x27, - 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0xe1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x92, - 0x41, 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, - 0x63, 0x69, 0x61, 0x6c, 0x12, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x61, 0x6c, - 0x6c, 0x2d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, - 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x9b, 0x01, 0x92, 0x41, 0x59, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, - 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x34, 0x47, 0x65, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, - 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, - 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, - 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0xce, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, - 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, - 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x4a, 0xca, 0x0c, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x5c, 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, 0x27, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, - 0x12, 0x03, 0x05, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x38, - 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x08, 0x00, 0x5c, 0x01, 0x0a, 0x0a, 0x0a, 0x03, - 0x06, 0x00, 0x01, 0x12, 0x03, 0x08, 0x08, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, - 0x12, 0x04, 0x0a, 0x02, 0x15, 0x03, 0x1a, 0x28, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x06, 0x10, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0a, 0x11, 0x22, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0a, 0x2d, 0x3f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x04, 0x12, 0x03, 0x0b, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x0b, 0x04, 0x30, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, - 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x0b, 0x20, 0x2e, 0x0a, 0x0d, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x0d, 0x04, 0x14, 0x06, 0x0a, 0x0f, 0x0a, 0x07, - 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x0d, 0x04, 0x14, 0x06, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x0e, 0x06, 0x37, 0x0a, 0x10, - 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x10, 0x08, 0x10, - 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x11, - 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, - 0x13, 0x06, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x18, 0x02, 0x23, - 0x03, 0x1a, 0x28, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x18, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x02, 0x12, 0x03, 0x18, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x18, 0x29, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x19, 0x04, 0x38, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x03, 0x19, 0x04, 0x38, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x02, 0x12, 0x03, 0x19, 0x20, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, - 0x04, 0x12, 0x04, 0x1b, 0x04, 0x22, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x1b, 0x04, 0x22, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, - 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x1c, 0x06, 0x37, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x01, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x1e, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x1f, 0x08, 0x12, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x21, 0x06, 0x1e, 0x0a, 0x2c, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x26, 0x02, 0x31, 0x03, 0x1a, 0x1e, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, - 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x26, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x02, 0x02, 0x12, 0x03, 0x26, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x03, 0x12, 0x03, 0x26, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, - 0x03, 0x27, 0x04, 0x40, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x12, 0x03, 0x27, 0x04, 0x40, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x27, 0x20, 0x3e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x04, 0x12, 0x04, 0x29, 0x04, 0x30, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, - 0x04, 0x92, 0x08, 0x12, 0x04, 0x29, 0x04, 0x30, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, - 0x02, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x2a, 0x06, 0x2d, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x2c, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, - 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x2d, 0x08, 0x12, 0x0a, 0x0f, - 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x2f, 0x06, 0x21, 0x0a, - 0x3a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x34, 0x02, 0x3f, 0x03, 0x1a, 0x2c, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, - 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x27, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x34, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x03, 0x02, 0x12, 0x03, 0x34, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x34, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, - 0x35, 0x04, 0x50, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x03, 0x35, 0x04, 0x50, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x02, 0x12, 0x03, 0x35, 0x20, 0x4e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, - 0x04, 0x12, 0x04, 0x37, 0x04, 0x3e, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x03, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x37, 0x04, 0x3e, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x03, - 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x38, 0x06, 0x3b, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x03, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x3a, 0x08, 0x11, 0x0a, 0x10, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x3b, 0x08, 0x12, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x3d, 0x06, 0x20, 0x0a, 0x41, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x42, 0x02, 0x4d, 0x03, 0x1a, 0x33, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x42, 0x06, 0x15, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x42, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x42, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x43, 0x04, 0x43, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x43, 0x04, 0x43, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x43, 0x20, 0x41, 0x0a, 0x0d, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x45, 0x04, 0x4c, 0x06, 0x0a, 0x0f, 0x0a, - 0x07, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x45, 0x04, 0x4c, 0x06, 0x0a, 0x0f, - 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x46, 0x06, 0x42, 0x0a, - 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x48, 0x08, - 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, - 0x49, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x05, 0x12, - 0x03, 0x4b, 0x06, 0x23, 0x0a, 0x44, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x50, 0x02, - 0x5b, 0x03, 0x1a, 0x36, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, - 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x05, 0x01, 0x12, 0x03, 0x50, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, - 0x02, 0x12, 0x03, 0x50, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, - 0x03, 0x50, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x03, 0x51, - 0x04, 0x60, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, - 0x03, 0x51, 0x04, 0x60, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x02, 0x12, 0x03, 0x51, 0x20, 0x5e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, - 0x12, 0x04, 0x53, 0x04, 0x5a, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, - 0x08, 0x12, 0x04, 0x53, 0x04, 0x5a, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, - 0x92, 0x08, 0x02, 0x12, 0x03, 0x54, 0x06, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, - 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x56, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x05, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x57, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, - 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x59, 0x06, 0x25, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x01, 0x12, 0x03, 0x35, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x35, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x35, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x36, + 0x04, 0x50, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, + 0x03, 0x36, 0x04, 0x50, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x02, 0x12, 0x03, 0x36, 0x20, 0x4e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, + 0x12, 0x04, 0x38, 0x04, 0x3f, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, + 0x08, 0x12, 0x04, 0x38, 0x04, 0x3f, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x03, 0x04, + 0x92, 0x08, 0x02, 0x12, 0x03, 0x39, 0x06, 0x3b, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, + 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x3b, 0x08, 0x11, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x03, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x3c, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, + 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x3e, 0x06, 0x20, 0x0a, 0x41, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x43, 0x02, 0x4e, 0x03, 0x1a, 0x33, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x43, 0x06, 0x15, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x43, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x43, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x04, 0x04, 0x12, 0x03, 0x44, 0x04, 0x43, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, + 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x44, 0x04, 0x43, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, + 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x44, 0x20, 0x41, 0x0a, 0x0d, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x46, 0x04, 0x4d, 0x06, 0x0a, 0x0f, 0x0a, 0x07, + 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x46, 0x04, 0x4d, 0x06, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x47, 0x06, 0x42, 0x0a, 0x10, + 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x49, 0x08, 0x10, + 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x4a, + 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, + 0x4c, 0x06, 0x23, 0x0a, 0x44, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x51, 0x02, 0x5c, + 0x03, 0x1a, 0x36, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x05, 0x01, 0x12, 0x03, 0x51, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, + 0x12, 0x03, 0x51, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, + 0x51, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x03, 0x52, 0x04, + 0x5d, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, + 0x03, 0x52, 0x04, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, 0x54, + 0x04, 0x5b, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x12, 0x04, + 0x54, 0x04, 0x5b, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x02, + 0x12, 0x03, 0x55, 0x06, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, + 0x01, 0x00, 0x12, 0x03, 0x57, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, + 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x58, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, + 0x05, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x5a, 0x06, 0x25, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x06, 0x12, 0x04, 0x5e, 0x02, 0x60, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, + 0x01, 0x12, 0x03, 0x5e, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, + 0x03, 0x5e, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x5e, + 0x39, 0x46, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, 0x03, 0x5f, 0x04, 0x5e, + 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, + 0x5f, 0x04, 0x5e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("delta_sharing.v1.serde.rs"); include!("delta_sharing.v1.tonic.rs"); diff --git a/delta-sharing/client/src/gen/delta_sharing.v1.serde.rs b/delta-sharing/client/src/gen/delta_sharing.v1.serde.rs index ba5a5f6..2eb755c 100644 --- a/delta-sharing/client/src/gen/delta_sharing.v1.serde.rs +++ b/delta-sharing/client/src/gen/delta_sharing.v1.serde.rs @@ -1,5 +1,5 @@ // @generated -impl serde::Serialize for GetShareRequest { +impl serde::Serialize for DeltaLogMessage { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -7,29 +7,38 @@ impl serde::Serialize for GetShareRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.share.is_empty() { + if self.entry.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareRequest", len)?; - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.DeltaLogMessage", len)?; + if let Some(v) = self.entry.as_ref() { + match v { + delta_log_message::Entry::Protocol(v) => { + struct_ser.serialize_field("protocol", v)?; + } + delta_log_message::Entry::Metadata(v) => { + struct_ser.serialize_field("metadata", v)?; + } + } } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetShareRequest { +impl<'de> serde::Deserialize<'de> for DeltaLogMessage { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", + "protocol", + "metadata", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, + Protocol, + Metadata, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -51,7 +60,8 @@ impl<'de> serde::Deserialize<'de> for GetShareRequest { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), + "protocol" => Ok(GeneratedField::Protocol), + "metadata" => Ok(GeneratedField::Metadata), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -61,36 +71,44 @@ impl<'de> serde::Deserialize<'de> for GetShareRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetShareRequest; + type Value = DeltaLogMessage; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetShareRequest") + formatter.write_str("struct delta_sharing.v1.DeltaLogMessage") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; + let mut entry__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); + GeneratedField::Protocol => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("protocol")); } - share__ = Some(map_.next_value()?); + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(delta_log_message::Entry::Protocol) +; + } + GeneratedField::Metadata => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("metadata")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(delta_log_message::Entry::Metadata) +; } } } - Ok(GetShareRequest { - share: share__.unwrap_or_default(), + Ok(DeltaLogMessage { + entry: entry__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetShareRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.DeltaLogMessage", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetShareResponse { +impl serde::Serialize for DeltaResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -98,29 +116,29 @@ impl serde::Serialize for GetShareResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if self.share.is_some() { + if !self.entries.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareResponse", len)?; - if let Some(v) = self.share.as_ref() { - struct_ser.serialize_field("share", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.DeltaResponse", len)?; + if !self.entries.is_empty() { + struct_ser.serialize_field("entries", &self.entries)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetShareResponse { +impl<'de> serde::Deserialize<'de> for DeltaResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", + "entries", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, + Entries, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -142,7 +160,7 @@ impl<'de> serde::Deserialize<'de> for GetShareResponse { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), + "entries" => Ok(GeneratedField::Entries), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -152,36 +170,36 @@ impl<'de> serde::Deserialize<'de> for GetShareResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetShareResponse; + type Value = DeltaResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetShareResponse") + formatter.write_str("struct delta_sharing.v1.DeltaResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; + let mut entries__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); + GeneratedField::Entries => { + if entries__.is_some() { + return Err(serde::de::Error::duplicate_field("entries")); } - share__ = map_.next_value()?; + entries__ = Some(map_.next_value()?); } } } - Ok(GetShareResponse { - share: share__, + Ok(DeltaResponse { + entries: entries__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetShareResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.DeltaResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetTableVersionRequest { +impl serde::Serialize for Format { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -189,54 +207,37 @@ impl serde::Serialize for GetTableVersionRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.share.is_empty() { - len += 1; - } - if !self.schema.is_empty() { - len += 1; - } - if !self.table.is_empty() { + if !self.provider.is_empty() { len += 1; } - if self.starting_timestamp.is_some() { + if !self.options.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionRequest", len)?; - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; - } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; - } - if !self.table.is_empty() { - struct_ser.serialize_field("table", &self.table)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Format", len)?; + if !self.provider.is_empty() { + struct_ser.serialize_field("provider", &self.provider)?; } - if let Some(v) = self.starting_timestamp.as_ref() { - struct_ser.serialize_field("startingTimestamp", v)?; + if !self.options.is_empty() { + struct_ser.serialize_field("options", &self.options)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { +impl<'de> serde::Deserialize<'de> for Format { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", - "schema", - "table", - "starting_timestamp", - "startingTimestamp", + "provider", + "options", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, - Schema, - Table, - StartingTimestamp, + Provider, + Options, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -258,10 +259,8 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), - "schema" => Ok(GeneratedField::Schema), - "table" => Ok(GeneratedField::Table), - "startingTimestamp" | "starting_timestamp" => Ok(GeneratedField::StartingTimestamp), + "provider" => Ok(GeneratedField::Provider), + "options" => Ok(GeneratedField::Options), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -271,60 +270,46 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetTableVersionRequest; + type Value = Format; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetTableVersionRequest") + formatter.write_str("struct delta_sharing.v1.Format") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; - let mut schema__ = None; - let mut table__ = None; - let mut starting_timestamp__ = None; + let mut provider__ = None; + let mut options__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); - } - share__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); - } - GeneratedField::Table => { - if table__.is_some() { - return Err(serde::de::Error::duplicate_field("table")); + GeneratedField::Provider => { + if provider__.is_some() { + return Err(serde::de::Error::duplicate_field("provider")); } - table__ = Some(map_.next_value()?); + provider__ = Some(map_.next_value()?); } - GeneratedField::StartingTimestamp => { - if starting_timestamp__.is_some() { - return Err(serde::de::Error::duplicate_field("startingTimestamp")); + GeneratedField::Options => { + if options__.is_some() { + return Err(serde::de::Error::duplicate_field("options")); } - starting_timestamp__ = map_.next_value()?; + options__ = Some( + map_.next_value::>()? + ); } } } - Ok(GetTableVersionRequest { - share: share__.unwrap_or_default(), - schema: schema__.unwrap_or_default(), - table: table__.unwrap_or_default(), - starting_timestamp: starting_timestamp__, + Ok(Format { + provider: provider__.unwrap_or_default(), + options: options__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.Format", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetTableVersionResponse { +impl serde::Serialize for GetShareRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -332,31 +317,29 @@ impl serde::Serialize for GetTableVersionResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if self.version != 0 { + if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionResponse", len)?; - if self.version != 0 { - #[allow(clippy::needless_borrow)] - #[allow(clippy::needless_borrows_for_generic_args)] - struct_ser.serialize_field("version", ToString::to_string(&self.version).as_str())?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareRequest", len)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { +impl<'de> serde::Deserialize<'de> for GetShareRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "version", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Version, + Share, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -378,7 +361,7 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { E: serde::de::Error, { match value { - "version" => Ok(GeneratedField::Version), + "share" => Ok(GeneratedField::Share), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -388,38 +371,36 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetTableVersionResponse; + type Value = GetShareRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetTableVersionResponse") + formatter.write_str("struct delta_sharing.v1.GetShareRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut version__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Version => { - if version__.is_some() { - return Err(serde::de::Error::duplicate_field("version")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - version__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; + share__ = Some(map_.next_value()?); } } } - Ok(GetTableVersionResponse { - version: version__.unwrap_or_default(), + Ok(GetShareRequest { + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetShareRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemaTablesRequest { +impl serde::Serialize for GetShareResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -427,45 +408,29 @@ impl serde::Serialize for ListSchemaTablesRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.pagination.is_some() { - len += 1; - } - if !self.share.is_empty() { - len += 1; - } - if !self.schema.is_empty() { + if self.share.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesRequest", len)?; - if let Some(v) = self.pagination.as_ref() { - struct_ser.serialize_field("pagination", v)?; - } - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; - } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareResponse", len)?; + if let Some(v) = self.share.as_ref() { + struct_ser.serialize_field("share", v)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { +impl<'de> serde::Deserialize<'de> for GetShareResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "pagination", "share", - "schema", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Pagination, Share, - Schema, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -487,9 +452,7 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { E: serde::de::Error, { match value { - "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), - "schema" => Ok(GeneratedField::Schema), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -499,52 +462,36 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemaTablesRequest; + type Value = GetShareResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemaTablesRequest") + formatter.write_str("struct delta_sharing.v1.GetShareResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut pagination__ = None; let mut share__ = None; - let mut schema__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Pagination => { - if pagination__.is_some() { - return Err(serde::de::Error::duplicate_field("pagination")); - } - pagination__ = map_.next_value()?; - } GeneratedField::Share => { if share__.is_some() { return Err(serde::de::Error::duplicate_field("share")); } - share__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); + share__ = map_.next_value()?; } } } - Ok(ListSchemaTablesRequest { - pagination: pagination__, - share: share__.unwrap_or_default(), - schema: schema__.unwrap_or_default(), + Ok(GetShareResponse { + share: share__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetShareResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemaTablesResponse { +impl serde::Serialize for GetTableMetadataRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -552,38 +499,45 @@ impl serde::Serialize for ListSchemaTablesResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.items.is_empty() { + if !self.share.is_empty() { len += 1; } - if self.next_page_token.is_some() { + if !self.schema.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesResponse", len)?; - if !self.items.is_empty() { - struct_ser.serialize_field("items", &self.items)?; + if !self.table.is_empty() { + len += 1; } - if let Some(v) = self.next_page_token.as_ref() { - struct_ser.serialize_field("nextPageToken", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableMetadataRequest", len)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; + } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } + if !self.table.is_empty() { + struct_ser.serialize_field("table", &self.table)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { +impl<'de> serde::Deserialize<'de> for GetTableMetadataRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "items", - "next_page_token", - "nextPageToken", + "share", + "schema", + "table", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Items, - NextPageToken, + Share, + Schema, + Table, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -605,8 +559,9 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { E: serde::de::Error, { match value { - "items" => Ok(GeneratedField::Items), - "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), + "table" => Ok(GeneratedField::Table), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -616,44 +571,52 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemaTablesResponse; + type Value = GetTableMetadataRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemaTablesResponse") + formatter.write_str("struct delta_sharing.v1.GetTableMetadataRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut items__ = None; - let mut next_page_token__ = None; + let mut share__ = None; + let mut schema__ = None; + let mut table__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Items => { - if items__.is_some() { - return Err(serde::de::Error::duplicate_field("items")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - items__ = Some(map_.next_value()?); + share__ = Some(map_.next_value()?); } - GeneratedField::NextPageToken => { - if next_page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("nextPageToken")); + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); } - next_page_token__ = map_.next_value()?; + schema__ = Some(map_.next_value()?); + } + GeneratedField::Table => { + if table__.is_some() { + return Err(serde::de::Error::duplicate_field("table")); + } + table__ = Some(map_.next_value()?); } } } - Ok(ListSchemaTablesResponse { - items: items__.unwrap_or_default(), - next_page_token: next_page_token__, + Ok(GetTableMetadataRequest { + share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), + table: table__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableMetadataRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemasRequest { +impl serde::Serialize for GetTableVersionRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -661,37 +624,54 @@ impl serde::Serialize for ListSchemasRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.pagination.is_some() { + if !self.share.is_empty() { len += 1; } - if !self.share.is_empty() { + if !self.schema.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasRequest", len)?; - if let Some(v) = self.pagination.as_ref() { - struct_ser.serialize_field("pagination", v)?; + if !self.table.is_empty() { + len += 1; + } + if self.starting_timestamp.is_some() { + len += 1; } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionRequest", len)?; if !self.share.is_empty() { struct_ser.serialize_field("share", &self.share)?; } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } + if !self.table.is_empty() { + struct_ser.serialize_field("table", &self.table)?; + } + if let Some(v) = self.starting_timestamp.as_ref() { + struct_ser.serialize_field("startingTimestamp", v)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemasRequest { +impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "pagination", "share", + "schema", + "table", + "starting_timestamp", + "startingTimestamp", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Pagination, Share, + Schema, + Table, + StartingTimestamp, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -713,8 +693,10 @@ impl<'de> serde::Deserialize<'de> for ListSchemasRequest { E: serde::de::Error, { match value { - "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), + "table" => Ok(GeneratedField::Table), + "startingTimestamp" | "starting_timestamp" => Ok(GeneratedField::StartingTimestamp), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -724,44 +706,60 @@ impl<'de> serde::Deserialize<'de> for ListSchemasRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemasRequest; + type Value = GetTableVersionRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemasRequest") + formatter.write_str("struct delta_sharing.v1.GetTableVersionRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut pagination__ = None; let mut share__ = None; + let mut schema__ = None; + let mut table__ = None; + let mut starting_timestamp__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Pagination => { - if pagination__.is_some() { - return Err(serde::de::Error::duplicate_field("pagination")); - } - pagination__ = map_.next_value()?; - } GeneratedField::Share => { if share__.is_some() { return Err(serde::de::Error::duplicate_field("share")); } share__ = Some(map_.next_value()?); } + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); + } + schema__ = Some(map_.next_value()?); + } + GeneratedField::Table => { + if table__.is_some() { + return Err(serde::de::Error::duplicate_field("table")); + } + table__ = Some(map_.next_value()?); + } + GeneratedField::StartingTimestamp => { + if starting_timestamp__.is_some() { + return Err(serde::de::Error::duplicate_field("startingTimestamp")); + } + starting_timestamp__ = map_.next_value()?; + } } } - Ok(ListSchemasRequest { - pagination: pagination__, + Ok(GetTableVersionRequest { share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), + table: table__.unwrap_or_default(), + starting_timestamp: starting_timestamp__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemasRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemasResponse { +impl serde::Serialize for GetTableVersionResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -769,38 +767,31 @@ impl serde::Serialize for ListSchemasResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.items.is_empty() { - len += 1; - } - if self.next_page_token.is_some() { + if self.version != 0 { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasResponse", len)?; - if !self.items.is_empty() { - struct_ser.serialize_field("items", &self.items)?; - } - if let Some(v) = self.next_page_token.as_ref() { - struct_ser.serialize_field("nextPageToken", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionResponse", len)?; + if self.version != 0 { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("version", ToString::to_string(&self.version).as_str())?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemasResponse { +impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "items", - "next_page_token", - "nextPageToken", + "version", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Items, - NextPageToken, + Version, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -822,8 +813,7 @@ impl<'de> serde::Deserialize<'de> for ListSchemasResponse { E: serde::de::Error, { match value { - "items" => Ok(GeneratedField::Items), - "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + "version" => Ok(GeneratedField::Version), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -833,44 +823,38 @@ impl<'de> serde::Deserialize<'de> for ListSchemasResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemasResponse; + type Value = GetTableVersionResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemasResponse") + formatter.write_str("struct delta_sharing.v1.GetTableVersionResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut items__ = None; - let mut next_page_token__ = None; + let mut version__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Items => { - if items__.is_some() { - return Err(serde::de::Error::duplicate_field("items")); - } - items__ = Some(map_.next_value()?); - } - GeneratedField::NextPageToken => { - if next_page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("nextPageToken")); + GeneratedField::Version => { + if version__.is_some() { + return Err(serde::de::Error::duplicate_field("version")); } - next_page_token__ = map_.next_value()?; + version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; } } } - Ok(ListSchemasResponse { - items: items__.unwrap_or_default(), - next_page_token: next_page_token__, + Ok(GetTableVersionResponse { + version: version__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemasResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListShareTablesRequest { +impl serde::Serialize for ListSchemaTablesRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -884,17 +868,23 @@ impl serde::Serialize for ListShareTablesRequest { if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesRequest", len)?; + if !self.schema.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesRequest", len)?; if let Some(v) = self.pagination.as_ref() { struct_ser.serialize_field("pagination", v)?; } if !self.share.is_empty() { struct_ser.serialize_field("share", &self.share)?; } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { +impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -903,12 +893,14 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { const FIELDS: &[&str] = &[ "pagination", "share", + "schema", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Pagination, Share, + Schema, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -932,6 +924,7 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { match value { "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -941,18 +934,19 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListShareTablesRequest; + type Value = ListSchemaTablesRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListShareTablesRequest") + formatter.write_str("struct delta_sharing.v1.ListSchemaTablesRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { let mut pagination__ = None; let mut share__ = None; + let mut schema__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Pagination => { @@ -967,18 +961,25 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { } share__ = Some(map_.next_value()?); } + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); + } + schema__ = Some(map_.next_value()?); + } } } - Ok(ListShareTablesRequest { + Ok(ListSchemaTablesRequest { pagination: pagination__, share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListShareTablesResponse { +impl serde::Serialize for ListSchemaTablesResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -992,7 +993,7 @@ impl serde::Serialize for ListShareTablesResponse { if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesResponse", len)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesResponse", len)?; if !self.items.is_empty() { struct_ser.serialize_field("items", &self.items)?; } @@ -1002,7 +1003,7 @@ impl serde::Serialize for ListShareTablesResponse { struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { +impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1050,13 +1051,13 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListShareTablesResponse; + type Value = ListSchemaTablesResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListShareTablesResponse") + formatter.write_str("struct delta_sharing.v1.ListSchemaTablesResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { @@ -1078,16 +1079,16 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { } } } - Ok(ListShareTablesResponse { + Ok(ListSchemaTablesResponse { items: items__.unwrap_or_default(), next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSharesRequest { +impl serde::Serialize for ListSchemasRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1098,14 +1099,20 @@ impl serde::Serialize for ListSharesRequest { if self.pagination.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesRequest", len)?; + if !self.share.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasRequest", len)?; if let Some(v) = self.pagination.as_ref() { struct_ser.serialize_field("pagination", v)?; } + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSharesRequest { +impl<'de> serde::Deserialize<'de> for ListSchemasRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1113,11 +1120,13 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { { const FIELDS: &[&str] = &[ "pagination", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Pagination, + Share, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1140,6 +1149,7 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { { match value { "pagination" => Ok(GeneratedField::Pagination), + "share" => Ok(GeneratedField::Share), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1149,17 +1159,18 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSharesRequest; + type Value = ListSchemasRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSharesRequest") + formatter.write_str("struct delta_sharing.v1.ListSchemasRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { let mut pagination__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Pagination => { @@ -1168,17 +1179,24 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { } pagination__ = map_.next_value()?; } + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); + } + share__ = Some(map_.next_value()?); + } } } - Ok(ListSharesRequest { + Ok(ListSchemasRequest { pagination: pagination__, + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSharesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemasRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSharesResponse { +impl serde::Serialize for ListSchemasResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1192,7 +1210,7 @@ impl serde::Serialize for ListSharesResponse { if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesResponse", len)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasResponse", len)?; if !self.items.is_empty() { struct_ser.serialize_field("items", &self.items)?; } @@ -1202,7 +1220,7 @@ impl serde::Serialize for ListSharesResponse { struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSharesResponse { +impl<'de> serde::Deserialize<'de> for ListSchemasResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1250,13 +1268,13 @@ impl<'de> serde::Deserialize<'de> for ListSharesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSharesResponse; + type Value = ListSchemasResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSharesResponse") + formatter.write_str("struct delta_sharing.v1.ListSchemasResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { @@ -1278,16 +1296,16 @@ impl<'de> serde::Deserialize<'de> for ListSharesResponse { } } } - Ok(ListSharesResponse { + Ok(ListSchemasResponse { items: items__.unwrap_or_default(), next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSharesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemasResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for Pagination { +impl serde::Serialize for ListShareTablesRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1295,39 +1313,37 @@ impl serde::Serialize for Pagination { { use serde::ser::SerializeStruct; let mut len = 0; - if self.max_results.is_some() { + if self.pagination.is_some() { len += 1; } - if self.page_token.is_some() { + if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Pagination", len)?; - if let Some(v) = self.max_results.as_ref() { - struct_ser.serialize_field("maxResults", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesRequest", len)?; + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; } - if let Some(v) = self.page_token.as_ref() { - struct_ser.serialize_field("pageToken", v)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for Pagination { +impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "max_results", - "maxResults", - "page_token", - "pageToken", + "pagination", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - MaxResults, - PageToken, + Pagination, + Share, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1349,8 +1365,8 @@ impl<'de> serde::Deserialize<'de> for Pagination { E: serde::de::Error, { match value { - "maxResults" | "max_results" => Ok(GeneratedField::MaxResults), - "pageToken" | "page_token" => Ok(GeneratedField::PageToken), + "pagination" => Ok(GeneratedField::Pagination), + "share" => Ok(GeneratedField::Share), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1360,46 +1376,44 @@ impl<'de> serde::Deserialize<'de> for Pagination { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Pagination; + type Value = ListShareTablesRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.Pagination") + formatter.write_str("struct delta_sharing.v1.ListShareTablesRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut max_results__ = None; - let mut page_token__ = None; + let mut pagination__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::MaxResults => { - if max_results__.is_some() { - return Err(serde::de::Error::duplicate_field("maxResults")); + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); } - max_results__ = - map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) - ; + pagination__ = map_.next_value()?; } - GeneratedField::PageToken => { - if page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("pageToken")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - page_token__ = map_.next_value()?; + share__ = Some(map_.next_value()?); } } } - Ok(Pagination { - max_results: max_results__, - page_token: page_token__, + Ok(ListShareTablesRequest { + pagination: pagination__, + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.Pagination", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for Profile { +impl serde::Serialize for ListShareTablesResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1407,56 +1421,38 @@ impl serde::Serialize for Profile { { use serde::ser::SerializeStruct; let mut len = 0; - if self.share_credentials_version != 0 { - len += 1; - } - if !self.endpoint.is_empty() { - len += 1; - } - if !self.bearer_token.is_empty() { + if !self.items.is_empty() { len += 1; } - if self.expiration_time.is_some() { + if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Profile", len)?; - if self.share_credentials_version != 0 { - struct_ser.serialize_field("shareCredentialsVersion", &self.share_credentials_version)?; - } - if !self.endpoint.is_empty() { - struct_ser.serialize_field("endpoint", &self.endpoint)?; - } - if !self.bearer_token.is_empty() { - struct_ser.serialize_field("bearerToken", &self.bearer_token)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesResponse", len)?; + if !self.items.is_empty() { + struct_ser.serialize_field("items", &self.items)?; } - if let Some(v) = self.expiration_time.as_ref() { - struct_ser.serialize_field("expirationTime", v)?; + if let Some(v) = self.next_page_token.as_ref() { + struct_ser.serialize_field("nextPageToken", v)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for Profile { +impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share_credentials_version", - "shareCredentialsVersion", - "endpoint", - "bearer_token", - "bearerToken", - "expiration_time", - "expirationTime", + "items", + "next_page_token", + "nextPageToken", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - ShareCredentialsVersion, - Endpoint, - BearerToken, - ExpirationTime, + Items, + NextPageToken, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1478,10 +1474,8 @@ impl<'de> serde::Deserialize<'de> for Profile { E: serde::de::Error, { match value { - "shareCredentialsVersion" | "share_credentials_version" => Ok(GeneratedField::ShareCredentialsVersion), - "endpoint" => Ok(GeneratedField::Endpoint), - "bearerToken" | "bearer_token" => Ok(GeneratedField::BearerToken), - "expirationTime" | "expiration_time" => Ok(GeneratedField::ExpirationTime), + "items" => Ok(GeneratedField::Items), + "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1491,59 +1485,1570 @@ impl<'de> serde::Deserialize<'de> for Profile { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Profile; + type Value = ListShareTablesResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.Profile") + formatter.write_str("struct delta_sharing.v1.ListShareTablesResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share_credentials_version__ = None; - let mut endpoint__ = None; - let mut bearer_token__ = None; - let mut expiration_time__ = None; + let mut items__ = None; + let mut next_page_token__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::ShareCredentialsVersion => { - if share_credentials_version__.is_some() { - return Err(serde::de::Error::duplicate_field("shareCredentialsVersion")); - } - share_credentials_version__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; - } - GeneratedField::Endpoint => { - if endpoint__.is_some() { - return Err(serde::de::Error::duplicate_field("endpoint")); - } - endpoint__ = Some(map_.next_value()?); - } - GeneratedField::BearerToken => { - if bearer_token__.is_some() { - return Err(serde::de::Error::duplicate_field("bearerToken")); + GeneratedField::Items => { + if items__.is_some() { + return Err(serde::de::Error::duplicate_field("items")); } - bearer_token__ = Some(map_.next_value()?); + items__ = Some(map_.next_value()?); } - GeneratedField::ExpirationTime => { - if expiration_time__.is_some() { - return Err(serde::de::Error::duplicate_field("expirationTime")); + GeneratedField::NextPageToken => { + if next_page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("nextPageToken")); } - expiration_time__ = map_.next_value()?; + next_page_token__ = map_.next_value()?; } } } - Ok(Profile { - share_credentials_version: share_credentials_version__.unwrap_or_default(), - endpoint: endpoint__.unwrap_or_default(), - bearer_token: bearer_token__.unwrap_or_default(), - expiration_time: expiration_time__, + Ok(ListShareTablesResponse { + items: items__.unwrap_or_default(), + next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.Profile", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ListSharesRequest { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.pagination.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesRequest", len)?; + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ListSharesRequest { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "pagination", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Pagination, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "pagination" => Ok(GeneratedField::Pagination), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ListSharesRequest; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ListSharesRequest") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut pagination__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); + } + pagination__ = map_.next_value()?; + } + } + } + Ok(ListSharesRequest { + pagination: pagination__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ListSharesRequest", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ListSharesResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.items.is_empty() { + len += 1; + } + if self.next_page_token.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesResponse", len)?; + if !self.items.is_empty() { + struct_ser.serialize_field("items", &self.items)?; + } + if let Some(v) = self.next_page_token.as_ref() { + struct_ser.serialize_field("nextPageToken", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ListSharesResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "items", + "next_page_token", + "nextPageToken", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Items, + NextPageToken, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "items" => Ok(GeneratedField::Items), + "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ListSharesResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ListSharesResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut items__ = None; + let mut next_page_token__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Items => { + if items__.is_some() { + return Err(serde::de::Error::duplicate_field("items")); + } + items__ = Some(map_.next_value()?); + } + GeneratedField::NextPageToken => { + if next_page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("nextPageToken")); + } + next_page_token__ = map_.next_value()?; + } + } + } + Ok(ListSharesResponse { + items: items__.unwrap_or_default(), + next_page_token: next_page_token__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ListSharesResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for MetadatDelta { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.delta_metadata.is_some() { + len += 1; + } + if self.version.is_some() { + len += 1; + } + if self.size.is_some() { + len += 1; + } + if self.num_files.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.MetadatDelta", len)?; + if let Some(v) = self.delta_metadata.as_ref() { + struct_ser.serialize_field("deltaMetadata", v)?; + } + if let Some(v) = self.version.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("version", ToString::to_string(&v).as_str())?; + } + if let Some(v) = self.size.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("size", ToString::to_string(&v).as_str())?; + } + if let Some(v) = self.num_files.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("numFiles", ToString::to_string(&v).as_str())?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for MetadatDelta { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "delta_metadata", + "deltaMetadata", + "version", + "size", + "num_files", + "numFiles", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + DeltaMetadata, + Version, + Size, + NumFiles, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "deltaMetadata" | "delta_metadata" => Ok(GeneratedField::DeltaMetadata), + "version" => Ok(GeneratedField::Version), + "size" => Ok(GeneratedField::Size), + "numFiles" | "num_files" => Ok(GeneratedField::NumFiles), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = MetadatDelta; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.MetadatDelta") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut delta_metadata__ = None; + let mut version__ = None; + let mut size__ = None; + let mut num_files__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::DeltaMetadata => { + if delta_metadata__.is_some() { + return Err(serde::de::Error::duplicate_field("deltaMetadata")); + } + delta_metadata__ = map_.next_value()?; + } + GeneratedField::Version => { + if version__.is_some() { + return Err(serde::de::Error::duplicate_field("version")); + } + version__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::Size => { + if size__.is_some() { + return Err(serde::de::Error::duplicate_field("size")); + } + size__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::NumFiles => { + if num_files__.is_some() { + return Err(serde::de::Error::duplicate_field("numFiles")); + } + num_files__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + } + } + Ok(MetadatDelta { + delta_metadata: delta_metadata__, + version: version__, + size: size__, + num_files: num_files__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.MetadatDelta", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Metadata { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.id.is_empty() { + len += 1; + } + if self.name.is_some() { + len += 1; + } + if self.description.is_some() { + len += 1; + } + if self.format.is_some() { + len += 1; + } + if !self.schema_string.is_empty() { + len += 1; + } + if !self.partition_columns.is_empty() { + len += 1; + } + if self.created_time.is_some() { + len += 1; + } + if !self.options.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Metadata", len)?; + if !self.id.is_empty() { + struct_ser.serialize_field("id", &self.id)?; + } + if let Some(v) = self.name.as_ref() { + struct_ser.serialize_field("name", v)?; + } + if let Some(v) = self.description.as_ref() { + struct_ser.serialize_field("description", v)?; + } + if let Some(v) = self.format.as_ref() { + struct_ser.serialize_field("format", v)?; + } + if !self.schema_string.is_empty() { + struct_ser.serialize_field("schemaString", &self.schema_string)?; + } + if !self.partition_columns.is_empty() { + struct_ser.serialize_field("partitionColumns", &self.partition_columns)?; + } + if let Some(v) = self.created_time.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("createdTime", ToString::to_string(&v).as_str())?; + } + if !self.options.is_empty() { + struct_ser.serialize_field("options", &self.options)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Metadata { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "id", + "name", + "description", + "format", + "schema_string", + "schemaString", + "partition_columns", + "partitionColumns", + "created_time", + "createdTime", + "options", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Id, + Name, + Description, + Format, + SchemaString, + PartitionColumns, + CreatedTime, + Options, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "id" => Ok(GeneratedField::Id), + "name" => Ok(GeneratedField::Name), + "description" => Ok(GeneratedField::Description), + "format" => Ok(GeneratedField::Format), + "schemaString" | "schema_string" => Ok(GeneratedField::SchemaString), + "partitionColumns" | "partition_columns" => Ok(GeneratedField::PartitionColumns), + "createdTime" | "created_time" => Ok(GeneratedField::CreatedTime), + "options" => Ok(GeneratedField::Options), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Metadata; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Metadata") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut id__ = None; + let mut name__ = None; + let mut description__ = None; + let mut format__ = None; + let mut schema_string__ = None; + let mut partition_columns__ = None; + let mut created_time__ = None; + let mut options__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Id => { + if id__.is_some() { + return Err(serde::de::Error::duplicate_field("id")); + } + id__ = Some(map_.next_value()?); + } + GeneratedField::Name => { + if name__.is_some() { + return Err(serde::de::Error::duplicate_field("name")); + } + name__ = map_.next_value()?; + } + GeneratedField::Description => { + if description__.is_some() { + return Err(serde::de::Error::duplicate_field("description")); + } + description__ = map_.next_value()?; + } + GeneratedField::Format => { + if format__.is_some() { + return Err(serde::de::Error::duplicate_field("format")); + } + format__ = map_.next_value()?; + } + GeneratedField::SchemaString => { + if schema_string__.is_some() { + return Err(serde::de::Error::duplicate_field("schemaString")); + } + schema_string__ = Some(map_.next_value()?); + } + GeneratedField::PartitionColumns => { + if partition_columns__.is_some() { + return Err(serde::de::Error::duplicate_field("partitionColumns")); + } + partition_columns__ = Some(map_.next_value()?); + } + GeneratedField::CreatedTime => { + if created_time__.is_some() { + return Err(serde::de::Error::duplicate_field("createdTime")); + } + created_time__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::Options => { + if options__.is_some() { + return Err(serde::de::Error::duplicate_field("options")); + } + options__ = Some( + map_.next_value::>()? + ); + } + } + } + Ok(Metadata { + id: id__.unwrap_or_default(), + name: name__, + description: description__, + format: format__, + schema_string: schema_string__.unwrap_or_default(), + partition_columns: partition_columns__.unwrap_or_default(), + created_time: created_time__, + options: options__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Metadata", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for MetadataParquet { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.id.is_empty() { + len += 1; + } + if self.name.is_some() { + len += 1; + } + if self.description.is_some() { + len += 1; + } + if self.format.is_some() { + len += 1; + } + if !self.schema_string.is_empty() { + len += 1; + } + if !self.partition_columns.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.MetadataParquet", len)?; + if !self.id.is_empty() { + struct_ser.serialize_field("id", &self.id)?; + } + if let Some(v) = self.name.as_ref() { + struct_ser.serialize_field("name", v)?; + } + if let Some(v) = self.description.as_ref() { + struct_ser.serialize_field("description", v)?; + } + if let Some(v) = self.format.as_ref() { + struct_ser.serialize_field("format", v)?; + } + if !self.schema_string.is_empty() { + struct_ser.serialize_field("schemaString", &self.schema_string)?; + } + if !self.partition_columns.is_empty() { + struct_ser.serialize_field("partitionColumns", &self.partition_columns)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for MetadataParquet { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "id", + "name", + "description", + "format", + "schema_string", + "schemaString", + "partition_columns", + "partitionColumns", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Id, + Name, + Description, + Format, + SchemaString, + PartitionColumns, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "id" => Ok(GeneratedField::Id), + "name" => Ok(GeneratedField::Name), + "description" => Ok(GeneratedField::Description), + "format" => Ok(GeneratedField::Format), + "schemaString" | "schema_string" => Ok(GeneratedField::SchemaString), + "partitionColumns" | "partition_columns" => Ok(GeneratedField::PartitionColumns), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = MetadataParquet; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.MetadataParquet") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut id__ = None; + let mut name__ = None; + let mut description__ = None; + let mut format__ = None; + let mut schema_string__ = None; + let mut partition_columns__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Id => { + if id__.is_some() { + return Err(serde::de::Error::duplicate_field("id")); + } + id__ = Some(map_.next_value()?); + } + GeneratedField::Name => { + if name__.is_some() { + return Err(serde::de::Error::duplicate_field("name")); + } + name__ = map_.next_value()?; + } + GeneratedField::Description => { + if description__.is_some() { + return Err(serde::de::Error::duplicate_field("description")); + } + description__ = map_.next_value()?; + } + GeneratedField::Format => { + if format__.is_some() { + return Err(serde::de::Error::duplicate_field("format")); + } + format__ = map_.next_value()?; + } + GeneratedField::SchemaString => { + if schema_string__.is_some() { + return Err(serde::de::Error::duplicate_field("schemaString")); + } + schema_string__ = Some(map_.next_value()?); + } + GeneratedField::PartitionColumns => { + if partition_columns__.is_some() { + return Err(serde::de::Error::duplicate_field("partitionColumns")); + } + partition_columns__ = Some(map_.next_value()?); + } + } + } + Ok(MetadataParquet { + id: id__.unwrap_or_default(), + name: name__, + description: description__, + format: format__, + schema_string: schema_string__.unwrap_or_default(), + partition_columns: partition_columns__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.MetadataParquet", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Pagination { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.max_results.is_some() { + len += 1; + } + if self.page_token.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Pagination", len)?; + if let Some(v) = self.max_results.as_ref() { + struct_ser.serialize_field("maxResults", v)?; + } + if let Some(v) = self.page_token.as_ref() { + struct_ser.serialize_field("pageToken", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Pagination { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "max_results", + "maxResults", + "page_token", + "pageToken", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MaxResults, + PageToken, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "maxResults" | "max_results" => Ok(GeneratedField::MaxResults), + "pageToken" | "page_token" => Ok(GeneratedField::PageToken), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Pagination; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Pagination") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut max_results__ = None; + let mut page_token__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MaxResults => { + if max_results__.is_some() { + return Err(serde::de::Error::duplicate_field("maxResults")); + } + max_results__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::PageToken => { + if page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("pageToken")); + } + page_token__ = map_.next_value()?; + } + } + } + Ok(Pagination { + max_results: max_results__, + page_token: page_token__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Pagination", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ParquetLogMessage { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.entry.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ParquetLogMessage", len)?; + if let Some(v) = self.entry.as_ref() { + match v { + parquet_log_message::Entry::Protocol(v) => { + struct_ser.serialize_field("protocol", v)?; + } + parquet_log_message::Entry::Metadata(v) => { + struct_ser.serialize_field("metadata", v)?; + } + } + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ParquetLogMessage { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "protocol", + "metadata", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Protocol, + Metadata, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "protocol" => Ok(GeneratedField::Protocol), + "metadata" => Ok(GeneratedField::Metadata), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ParquetLogMessage; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ParquetLogMessage") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut entry__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Protocol => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("protocol")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(parquet_log_message::Entry::Protocol) +; + } + GeneratedField::Metadata => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("metadata")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(parquet_log_message::Entry::Metadata) +; + } + } + } + Ok(ParquetLogMessage { + entry: entry__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ParquetLogMessage", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ParquetResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.entries.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ParquetResponse", len)?; + if !self.entries.is_empty() { + struct_ser.serialize_field("entries", &self.entries)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ParquetResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "entries", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Entries, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "entries" => Ok(GeneratedField::Entries), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ParquetResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ParquetResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut entries__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Entries => { + if entries__.is_some() { + return Err(serde::de::Error::duplicate_field("entries")); + } + entries__ = Some(map_.next_value()?); + } + } + } + Ok(ParquetResponse { + entries: entries__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ParquetResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Profile { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.share_credentials_version != 0 { + len += 1; + } + if !self.endpoint.is_empty() { + len += 1; + } + if !self.bearer_token.is_empty() { + len += 1; + } + if self.expiration_time.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Profile", len)?; + if self.share_credentials_version != 0 { + struct_ser.serialize_field("shareCredentialsVersion", &self.share_credentials_version)?; + } + if !self.endpoint.is_empty() { + struct_ser.serialize_field("endpoint", &self.endpoint)?; + } + if !self.bearer_token.is_empty() { + struct_ser.serialize_field("bearerToken", &self.bearer_token)?; + } + if let Some(v) = self.expiration_time.as_ref() { + struct_ser.serialize_field("expirationTime", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Profile { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "share_credentials_version", + "shareCredentialsVersion", + "endpoint", + "bearer_token", + "bearerToken", + "expiration_time", + "expirationTime", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + ShareCredentialsVersion, + Endpoint, + BearerToken, + ExpirationTime, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "shareCredentialsVersion" | "share_credentials_version" => Ok(GeneratedField::ShareCredentialsVersion), + "endpoint" => Ok(GeneratedField::Endpoint), + "bearerToken" | "bearer_token" => Ok(GeneratedField::BearerToken), + "expirationTime" | "expiration_time" => Ok(GeneratedField::ExpirationTime), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Profile; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Profile") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut share_credentials_version__ = None; + let mut endpoint__ = None; + let mut bearer_token__ = None; + let mut expiration_time__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::ShareCredentialsVersion => { + if share_credentials_version__.is_some() { + return Err(serde::de::Error::duplicate_field("shareCredentialsVersion")); + } + share_credentials_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::Endpoint => { + if endpoint__.is_some() { + return Err(serde::de::Error::duplicate_field("endpoint")); + } + endpoint__ = Some(map_.next_value()?); + } + GeneratedField::BearerToken => { + if bearer_token__.is_some() { + return Err(serde::de::Error::duplicate_field("bearerToken")); + } + bearer_token__ = Some(map_.next_value()?); + } + GeneratedField::ExpirationTime => { + if expiration_time__.is_some() { + return Err(serde::de::Error::duplicate_field("expirationTime")); + } + expiration_time__ = map_.next_value()?; + } + } + } + Ok(Profile { + share_credentials_version: share_credentials_version__.unwrap_or_default(), + endpoint: endpoint__.unwrap_or_default(), + bearer_token: bearer_token__.unwrap_or_default(), + expiration_time: expiration_time__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Profile", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ProtocolDelta { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.min_reader_version != 0 { + len += 1; + } + if self.min_writer_version != 0 { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ProtocolDelta", len)?; + if self.min_reader_version != 0 { + struct_ser.serialize_field("minReaderVersion", &self.min_reader_version)?; + } + if self.min_writer_version != 0 { + struct_ser.serialize_field("minWriterVersion", &self.min_writer_version)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ProtocolDelta { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "min_reader_version", + "minReaderVersion", + "min_writer_version", + "minWriterVersion", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MinReaderVersion, + MinWriterVersion, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "minReaderVersion" | "min_reader_version" => Ok(GeneratedField::MinReaderVersion), + "minWriterVersion" | "min_writer_version" => Ok(GeneratedField::MinWriterVersion), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ProtocolDelta; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ProtocolDelta") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut min_reader_version__ = None; + let mut min_writer_version__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MinReaderVersion => { + if min_reader_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minReaderVersion")); + } + min_reader_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::MinWriterVersion => { + if min_writer_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minWriterVersion")); + } + min_writer_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + } + } + Ok(ProtocolDelta { + min_reader_version: min_reader_version__.unwrap_or_default(), + min_writer_version: min_writer_version__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ProtocolDelta", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ProtocolParquet { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.min_reader_version != 0 { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ProtocolParquet", len)?; + if self.min_reader_version != 0 { + struct_ser.serialize_field("minReaderVersion", &self.min_reader_version)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ProtocolParquet { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "min_reader_version", + "minReaderVersion", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MinReaderVersion, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "minReaderVersion" | "min_reader_version" => Ok(GeneratedField::MinReaderVersion), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ProtocolParquet; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ProtocolParquet") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut min_reader_version__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MinReaderVersion => { + if min_reader_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minReaderVersion")); + } + min_reader_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + } + } + Ok(ProtocolParquet { + min_reader_version: min_reader_version__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ProtocolParquet", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for QueryResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.response.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.QueryResponse", len)?; + if let Some(v) = self.response.as_ref() { + match v { + query_response::Response::Parquet(v) => { + struct_ser.serialize_field("parquet", v)?; + } + query_response::Response::Delta(v) => { + struct_ser.serialize_field("delta", v)?; + } + } + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for QueryResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "parquet", + "delta", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Parquet, + Delta, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "parquet" => Ok(GeneratedField::Parquet), + "delta" => Ok(GeneratedField::Delta), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = QueryResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.QueryResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut response__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Parquet => { + if response__.is_some() { + return Err(serde::de::Error::duplicate_field("parquet")); + } + response__ = map_.next_value::<::std::option::Option<_>>()?.map(query_response::Response::Parquet) +; + } + GeneratedField::Delta => { + if response__.is_some() { + return Err(serde::de::Error::duplicate_field("delta")); + } + response__ = map_.next_value::<::std::option::Option<_>>()?.map(query_response::Response::Delta) +; + } + } + } + Ok(QueryResponse { + response: response__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.QueryResponse", FIELDS, GeneratedVisitor) } } impl serde::Serialize for Schema { diff --git a/delta-sharing/client/src/gen/delta_sharing.v1.tonic.rs b/delta-sharing/client/src/gen/delta_sharing.v1.tonic.rs index e048c36..0c2c39b 100644 --- a/delta-sharing/client/src/gen/delta_sharing.v1.tonic.rs +++ b/delta-sharing/client/src/gen/delta_sharing.v1.tonic.rs @@ -271,5 +271,33 @@ pub mod delta_sharing_service_client { ); self.inner.unary(req, path, codec).await } + /// + pub async fn get_table_metadata( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result, tonic::Status> { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/delta_sharing.v1.DeltaSharingService/GetTableMetadata", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "delta_sharing.v1.DeltaSharingService", + "GetTableMetadata", + ), + ); + self.inner.unary(req, path, codec).await + } } } diff --git a/delta-sharing/common/src/error.rs b/delta-sharing/common/src/error.rs index 92af3df..fac7fc7 100644 --- a/delta-sharing/common/src/error.rs +++ b/delta-sharing/common/src/error.rs @@ -29,6 +29,9 @@ pub enum Error { #[error("Failed to extract recipient from request")] MissingRecipient, + #[error(transparent)] + SerDe(#[from] serde_json::Error), + #[cfg(feature = "axum")] #[error("Axum path: {0}")] AxumPath(#[from] PathRejection), @@ -55,6 +58,7 @@ impl From for Status { "The request is unauthenticated. The bearer token is missing or incorrect.", ), Error::Kernel(error) => Status::internal(error.to_string()), + Error::SerDe(_) => Status::internal("Encountered invalid table log."), Error::InvalidTableLocation(location) => { Status::internal(format!("Invalid table location: {}", location)) } @@ -124,6 +128,10 @@ mod server { error!("{}", message); INTERNAL_ERROR } + Error::SerDe(_) => { + error!("Inavalid table log encountered"); + INTERNAL_ERROR + } Error::Generic(message) => { error!("Generic error: {}", message); INTERNAL_ERROR diff --git a/delta-sharing/common/src/gen/delta_sharing.v1.rs b/delta-sharing/common/src/gen/delta_sharing.v1.rs index dfcce36..93fa45a 100644 --- a/delta-sharing/common/src/gen/delta_sharing.v1.rs +++ b/delta-sharing/common/src/gen/delta_sharing.v1.rs @@ -157,6 +157,65 @@ pub struct ListShareTablesResponse { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] +pub struct Profile { + /// The file format version of the profile file. This version will be increased whenever + /// non-forward-compatible changes are made to the profile format. When a client is running + /// an unsupported profile file format version, it should show an error message instructing + /// the user to upgrade to a newer version of their client. + #[prost(int32, tag="1")] + pub share_credentials_version: i32, + /// The url of the sharing server. + #[prost(string, tag="2")] + pub endpoint: ::prost::alloc::string::String, + /// The bearer token to access the server. + #[prost(string, tag="3")] + pub bearer_token: ::prost::alloc::string::String, + /// The expiration time of the bearer token in ISO 8601 format. This field is optional + /// and if it is not provided, the bearer token can be seen as never expire. + #[prost(string, optional, tag="4")] + pub expiration_time: ::core::option::Option<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Format { + /// Name of the encoding for files in this table + #[prost(string, tag="1")] + pub provider: ::prost::alloc::string::String, + /// A map containing configuration options for the format + #[prost(map="string, string", tag="2")] + pub options: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Metadata { + /// Unique identifier for this table + /// Validate GUID + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// User-provided identifier for this table + #[prost(string, optional, tag="2")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + /// User-provided description for this table + #[prost(string, optional, tag="3")] + pub description: ::core::option::Option<::prost::alloc::string::String>, + /// Specification of the encoding for the files stored in the table + #[prost(message, optional, tag="4")] + pub format: ::core::option::Option, + /// Schema of the table + #[prost(string, tag="5")] + pub schema_string: ::prost::alloc::string::String, + /// An array containing the names of columns by which the data should be partitioned + #[prost(string, repeated, tag="6")] + pub partition_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The time when this metadata action is created, in milliseconds since the Unix epoch + #[prost(int64, optional, tag="7")] + pub created_time: ::core::option::Option, + /// A map containing configuration options for the metadata action + #[prost(map="string, string", tag="8")] + pub options: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTableVersionRequest { /// The share name to query. It's case-insensitive. #[prost(string, tag="1")] @@ -182,27 +241,143 @@ pub struct GetTableVersionResponse { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Profile { - /// The file format version of the profile file. This version will be increased whenever - /// non-forward-compatible changes are made to the profile format. When a client is running - /// an unsupported profile file format version, it should show an error message instructing - /// the user to upgrade to a newer version of their client. - #[prost(int32, tag="1")] - pub share_credentials_version: i32, - /// The url of the sharing server. +pub struct GetTableMetadataRequest { + /// The share name to query. It's case-insensitive. + #[prost(string, tag="1")] + pub share: ::prost::alloc::string::String, + /// The schema name to query. It's case-insensitive. #[prost(string, tag="2")] - pub endpoint: ::prost::alloc::string::String, - /// The bearer token to access the server. + pub schema: ::prost::alloc::string::String, + /// The table name to query. It's case-insensitive. #[prost(string, tag="3")] - pub bearer_token: ::prost::alloc::string::String, - /// The expiration time of the bearer token in ISO 8601 format. This field is optional - /// and if it is not provided, the bearer token can be seen as never expire. - #[prost(string, optional, tag="4")] - pub expiration_time: ::core::option::Option<::prost::alloc::string::String>, + pub table: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QueryResponse { + #[prost(oneof="query_response::Response", tags="1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `QueryResponse`. +pub mod query_response { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + /// Parquet response format + #[prost(message, tag="1")] + Parquet(super::ParquetResponse), + /// Delta response format + #[prost(message, tag="2")] + Delta(super::DeltaResponse), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ParquetResponse { + #[prost(message, repeated, tag="1")] + pub entries: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ParquetLogMessage { + #[prost(oneof="parquet_log_message::Entry", tags="1, 2")] + pub entry: ::core::option::Option, +} +/// Nested message and enum types in `ParquetLogMessage`. +pub mod parquet_log_message { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Entry { + #[prost(message, tag="1")] + Protocol(super::ProtocolParquet), + #[prost(message, tag="2")] + Metadata(super::MetadataParquet), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ProtocolParquet { + /// The minimum version of the protocol that a client must implement + /// in order to correctly read a Delta Lake table. + #[prost(int32, tag="1")] + pub min_reader_version: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MetadataParquet { + /// Unique identifier for this table + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// User-provided identifier for this table + #[prost(string, optional, tag="2")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + /// User-provided description for this table + #[prost(string, optional, tag="3")] + pub description: ::core::option::Option<::prost::alloc::string::String>, + /// Specification of the encoding for the files stored in the table + #[prost(message, optional, tag="4")] + pub format: ::core::option::Option, + /// Schema of the table + #[prost(string, tag="5")] + pub schema_string: ::prost::alloc::string::String, + /// An array containing the names of columns by which the data should be partitioned + #[prost(string, repeated, tag="6")] + pub partition_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeltaResponse { + #[prost(message, repeated, tag="1")] + pub entries: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DeltaLogMessage { + #[prost(oneof="delta_log_message::Entry", tags="1, 2")] + pub entry: ::core::option::Option, +} +/// Nested message and enum types in `DeltaLogMessage`. +pub mod delta_log_message { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Entry { + #[prost(message, tag="1")] + Protocol(super::ProtocolDelta), + #[prost(message, tag="2")] + Metadata(super::MetadatDelta), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ProtocolDelta { + /// The minimum version of the protocol that a client must implement + /// in order to correctly read a Delta Lake table. + #[prost(int32, tag="1")] + pub min_reader_version: i32, + #[prost(int32, tag="2")] + pub min_writer_version: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MetadatDelta { + /// Metadata from Delta protocol + #[prost(message, optional, tag="1")] + pub delta_metadata: ::core::option::Option, + /// The table version the metadata corresponds to, returned when querying + /// table data with a version or timestamp parameter, or cdf query + /// with includeHistoricalMetadata set to true. + #[prost(int64, optional, tag="2")] + pub version: ::core::option::Option, + /// The size of the table in bytes, will be returned if available in the delta log. + #[prost(int64, optional, tag="3")] + pub size: ::core::option::Option, + /// The number of files in the table, will be returned if available in the delta log. + #[prost(int64, optional, tag="4")] + pub num_files: ::core::option::Option, } /// Encoded file descriptor set for the `delta_sharing.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xfa, 0x44, 0x0a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x0a, 0xe2, 0x3b, 0x0a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, @@ -302,6 +477,527 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xc6, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0xd1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, + 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, + 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xfe, 0x2b, 0x0a, + 0x07, 0x12, 0x05, 0x00, 0x00, 0x8b, 0x01, 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, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, + 0x00, 0x14, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x12, 0x0a, + 0x94, 0x04, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0e, 0x02, 0x46, 0x1a, 0x86, 0x04, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x70, + 0x65, 0x72, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, + 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0a, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, + 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, + 0x6e, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x73, + 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x65, + 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, + 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x2e, 0x0a, 0x20, 0x4d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x20, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x0e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0e, + 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x11, 0x1c, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x1f, 0x20, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x0e, 0x21, 0x45, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x03, 0x05, 0x12, 0x03, 0x0e, 0x22, 0x44, 0x0a, 0xf3, + 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x13, 0x02, 0x21, 0x1a, 0xe5, 0x01, 0x20, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x20, 0x53, + 0x65, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x0a, 0x20, 0x62, 0x79, 0x20, 0x61, + 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, + 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x13, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x13, 0x0b, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x13, 0x12, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x13, 0x1f, 0x20, 0x0a, 0xd5, 0x01, 0x0a, + 0x02, 0x04, 0x01, 0x12, 0x04, 0x18, 0x00, 0x1d, 0x01, 0x1a, 0xc8, 0x01, 0x20, 0x41, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6e, + 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x20, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x41, 0x20, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x18, 0x08, 0x0d, + 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x1a, 0x02, 0x19, 0x1a, 0x22, 0x20, + 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1a, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x1a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1a, 0x17, 0x18, 0x0a, 0x21, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x01, 0x12, 0x03, 0x1c, 0x02, 0x12, 0x1a, 0x14, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x1c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x1c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x1c, 0x10, 0x11, 0x0a, 0x5d, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x20, 0x00, + 0x25, 0x01, 0x1a, 0x51, 0x20, 0x41, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x41, + 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x20, 0x08, + 0x0e, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x22, 0x02, 0x12, 0x1a, 0x18, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x73, 0x63, 0x68, 0x61, 0x6d, 0x61, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, + 0x05, 0x12, 0x03, 0x22, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, + 0x03, 0x22, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x22, + 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x02, 0x13, 0x1a, + 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x01, 0x03, 0x12, 0x03, 0x24, 0x11, 0x12, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x28, + 0x00, 0x33, 0x01, 0x1a, 0x47, 0x20, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, + 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x03, 0x01, 0x12, 0x03, 0x28, 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, + 0x12, 0x03, 0x2a, 0x02, 0x19, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x00, 0x04, 0x12, 0x03, 0x2a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x2a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x2a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x17, + 0x18, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x12, 0x1a, 0x18, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, + 0x05, 0x12, 0x03, 0x2c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x2c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, + 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x2e, 0x02, 0x14, 0x1a, + 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x2e, 0x12, 0x13, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x03, 0x12, + 0x03, 0x30, 0x02, 0x13, 0x1a, 0x2b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x05, 0x12, 0x03, 0x30, 0x02, 0x08, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x01, 0x12, 0x03, 0x30, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x12, 0x03, 0x30, 0x11, 0x12, 0x0a, 0x47, 0x0a, 0x04, 0x04, + 0x03, 0x02, 0x04, 0x12, 0x03, 0x32, 0x02, 0x1f, 0x1a, 0x3a, 0x20, 0x41, 0x20, 0x75, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, + 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x04, 0x12, 0x03, 0x32, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x01, 0x12, 0x03, 0x32, 0x12, 0x1a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x03, 0x12, 0x03, 0x32, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x04, 0x12, 0x04, 0x35, 0x00, 0x37, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, + 0x03, 0x35, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x36, 0x02, + 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x02, 0x0c, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x36, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x36, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, + 0x05, 0x12, 0x04, 0x39, 0x00, 0x3f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, + 0x39, 0x08, 0x1a, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x02, 0x1b, + 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, 0x03, 0x3b, 0x02, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3b, 0x0b, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3b, 0x11, 0x16, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3b, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, + 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, 0x3e, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, + 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, + 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x72, + 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x05, 0x02, 0x01, 0x04, 0x12, 0x03, 0x3e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, + 0x01, 0x05, 0x12, 0x03, 0x3e, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, + 0x12, 0x03, 0x3e, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, + 0x3e, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x41, 0x00, 0x44, 0x01, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x3e, 0x0a, 0x04, 0x04, + 0x06, 0x02, 0x00, 0x12, 0x03, 0x43, 0x02, 0x13, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x43, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x43, 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x46, 0x00, 0x49, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x46, 0x08, 0x18, 0x0a, 0x2c, 0x0a, + 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x48, 0x02, 0x12, 0x1a, 0x1f, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x48, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x48, 0x08, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x48, 0x10, 0x11, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x4b, 0x00, 0x50, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x4b, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x4c, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x4c, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x4c, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x4c, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x4f, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4f, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x03, 0x4f, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x08, 0x12, 0x03, 0x4f, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x08, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x4f, 0x14, 0x3b, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x52, 0x00, 0x58, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, + 0x01, 0x12, 0x03, 0x52, 0x08, 0x1b, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, + 0x54, 0x02, 0x1c, 0x1a, 0x22, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x04, + 0x12, 0x03, 0x54, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, + 0x54, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x54, 0x12, + 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x54, 0x1a, 0x1b, 0x0a, + 0x9f, 0x01, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x03, 0x57, 0x02, 0x26, 0x1a, 0x91, 0x01, + 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x20, 0x41, + 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x04, 0x12, 0x03, 0x57, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x05, 0x12, 0x03, 0x57, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x03, 0x57, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, 0x57, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, + 0x04, 0x5a, 0x00, 0x62, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x5a, 0x08, + 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x02, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5b, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5b, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, + 0x12, 0x03, 0x5e, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, + 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x5e, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5e, + 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x08, 0x12, 0x03, 0x5e, 0x13, 0x3c, + 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x5e, + 0x14, 0x3b, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x02, 0x12, 0x03, 0x61, 0x02, 0x3e, 0x1a, + 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x05, 0x12, 0x03, 0x61, 0x02, + 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x01, 0x12, 0x03, 0x61, 0x09, 0x0f, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x03, 0x12, 0x03, 0x61, 0x12, 0x13, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0a, 0x02, 0x02, 0x08, 0x12, 0x03, 0x61, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, + 0x0a, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x61, 0x15, 0x3c, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x0b, 0x12, 0x04, 0x64, 0x00, 0x6a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, + 0x12, 0x03, 0x64, 0x08, 0x20, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x66, + 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x66, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x66, 0x0b, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x66, 0x11, 0x16, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x03, 0x66, 0x19, 0x1a, 0x0a, 0x9d, 0x01, + 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x12, 0x03, 0x69, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, 0x12, 0x03, 0x69, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, 0x69, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, + 0x01, 0x01, 0x12, 0x03, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, + 0x12, 0x03, 0x69, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x04, 0x6c, 0x00, 0x71, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x03, 0x6c, 0x08, 0x1e, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x03, 0x6d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x6d, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x6d, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x6d, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x03, 0x70, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x05, 0x12, 0x03, 0x70, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x03, 0x70, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x12, 0x03, 0x70, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x08, 0x12, 0x03, 0x70, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x0c, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x70, 0x14, 0x3b, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x04, 0x73, 0x00, 0x79, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0d, + 0x01, 0x12, 0x03, 0x73, 0x08, 0x1f, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x03, + 0x75, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x75, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x03, 0x75, + 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x11, 0x16, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x19, 0x1a, 0x0a, 0x9d, + 0x01, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x03, 0x78, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x04, 0x12, 0x03, 0x78, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, 0x03, 0x78, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x78, 0x24, 0x25, 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x05, 0x7b, 0x00, + 0x8b, 0x01, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x03, 0x7b, 0x08, 0x0f, 0x0a, + 0xd0, 0x02, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0x80, 0x01, 0x02, 0x26, 0x1a, 0xc1, + 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, + 0x65, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x0a, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x0a, + 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x74, 0x20, + 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x05, 0x12, 0x04, 0x80, 0x01, 0x02, + 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0x80, 0x01, 0x08, 0x21, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x01, 0x24, 0x25, 0x0a, + 0x2e, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x01, 0x12, 0x04, 0x83, 0x01, 0x02, 0x16, 0x1a, 0x20, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x75, 0x72, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x12, 0x04, 0x83, 0x01, 0x02, 0x08, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x01, 0x12, 0x04, 0x83, 0x01, 0x09, 0x11, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0e, 0x02, 0x01, 0x03, 0x12, 0x04, 0x83, 0x01, 0x14, 0x15, 0x0a, 0x36, 0x0a, 0x04, + 0x04, 0x0e, 0x02, 0x02, 0x12, 0x04, 0x86, 0x01, 0x02, 0x1a, 0x1a, 0x28, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, + 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x05, 0x12, 0x04, 0x86, + 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0x86, 0x01, + 0x09, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0x86, 0x01, 0x18, + 0x19, 0x0a, 0xad, 0x01, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x03, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x26, + 0x1a, 0x9e, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, + 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, + 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, 0x69, + 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, + 0x61, 0x73, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x04, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x05, 0x12, 0x04, 0x8a, 0x01, 0x0b, 0x11, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x12, 0x21, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x03, 0x12, 0x04, 0x8a, 0x01, 0x24, 0x25, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xf6, 0x10, 0x0a, 0x1f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x06, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, + 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x03, 0x0a, + 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x26, 0x0a, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0xd3, + 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, + 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, + 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xef, 0x09, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x27, 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, 0x25, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x0c, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, + 0x01, 0x12, 0x03, 0x06, 0x08, 0x0e, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, + 0x08, 0x02, 0x16, 0x1a, 0x2e, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x08, 0x02, + 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x09, 0x11, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x08, 0x14, 0x15, 0x0a, 0x44, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0b, 0x02, 0x22, 0x1a, 0x37, 0x20, 0x41, 0x20, 0x6d, + 0x61, 0x70, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0b, 0x02, + 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0b, 0x16, 0x1d, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0b, 0x20, 0x21, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x01, 0x12, 0x04, 0x0e, 0x00, 0x27, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, + 0x12, 0x03, 0x0e, 0x08, 0x10, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x11, + 0x02, 0x10, 0x1a, 0x31, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x47, 0x55, 0x49, 0x44, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x11, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x11, 0x09, + 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x11, 0x0e, 0x0f, 0x0a, + 0x36, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x14, 0x02, 0x1b, 0x1a, 0x29, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x04, + 0x12, 0x03, 0x14, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, + 0x14, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x12, + 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x14, 0x19, 0x1a, 0x0a, + 0x37, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x17, 0x02, 0x22, 0x1a, 0x2a, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, + 0x04, 0x12, 0x03, 0x17, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x17, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x17, + 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x17, 0x20, 0x21, + 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x1a, 0x02, 0x14, 0x1a, 0x41, 0x20, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x1a, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1a, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x1a, 0x12, 0x13, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x01, + 0x02, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x1b, 0x1a, 0x15, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x05, 0x12, 0x03, 0x1d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x04, 0x01, 0x12, 0x03, 0x1d, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x04, 0x03, 0x12, 0x03, 0x1d, 0x19, 0x1a, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x05, + 0x12, 0x03, 0x20, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x20, 0x62, 0x79, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x05, 0x04, 0x12, 0x03, 0x20, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x05, + 0x12, 0x03, 0x20, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x01, 0x12, 0x03, + 0x20, 0x12, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x03, 0x12, 0x03, 0x20, 0x26, + 0x27, 0x0a, 0x62, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x06, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x55, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2c, 0x20, + 0x69, 0x6e, 0x20, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x20, + 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x78, 0x20, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x04, 0x12, 0x03, + 0x23, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x05, 0x12, 0x03, 0x23, 0x0b, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x01, 0x12, 0x03, 0x23, 0x11, 0x1d, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x03, 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x4d, 0x0a, + 0x04, 0x04, 0x01, 0x02, 0x07, 0x12, 0x03, 0x26, 0x02, 0x22, 0x1a, 0x40, 0x20, 0x41, 0x20, 0x6d, + 0x61, 0x70, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x07, 0x06, 0x12, 0x03, 0x26, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x07, 0x01, 0x12, 0x03, 0x26, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, + 0x03, 0x12, 0x03, 0x26, 0x20, 0x21, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x81, + 0x2e, 0x0a, 0x1c, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, @@ -317,22 +1013,458 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x74, 0x61, 0x6d, 0x70, 0x22, 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc6, 0x01, 0x0a, 0x07, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x73, 0x68, 0x61, 0x72, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x42, 0xd1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x71, 0x75, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x0a, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x0f, 0x50, 0x61, 0x72, + 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x11, + 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, + 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x3f, 0x0a, 0x0f, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x12, + 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, + 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfe, 0x01, + 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4c, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3b, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, + 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x6b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x02, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x88, 0x01, + 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x42, 0xd0, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, + 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, + 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xd0, 0x1e, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, + 0x76, 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, + 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x29, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x00, 0x12, 0x04, 0x07, 0x00, 0x15, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, + 0x03, 0x07, 0x08, 0x1e, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x09, 0x02, + 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x09, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x09, 0x09, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x09, 0x11, 0x12, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x09, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x09, 0x14, 0x3b, 0x0a, 0x3f, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0c, 0x02, 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, + 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x0c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0c, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0c, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x01, 0x08, 0x12, 0x03, 0x0c, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x01, 0x08, + 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x0c, 0x15, 0x3c, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x02, 0x12, 0x03, 0x0f, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x02, 0x05, 0x12, 0x03, 0x0f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, + 0x12, 0x03, 0x0f, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, + 0x0f, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x08, 0x12, 0x03, 0x0f, 0x13, + 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, + 0x0f, 0x14, 0x3b, 0x0a, 0x99, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x14, 0x02, + 0x29, 0x1a, 0x8b, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x49, 0x53, 0x4f, 0x38, 0x36, 0x30, + 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x55, 0x54, 0x43, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x2c, 0x0a, 0x20, + 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x32, 0x30, 0x32, 0x32, 0x2d, 0x30, 0x31, 0x2d, + 0x30, 0x31, 0x54, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x5a, 0x2e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x61, 0x72, + 0x6c, 0x69, 0x65, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x0a, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, + 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x14, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x14, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x14, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x03, 0x03, 0x12, 0x03, 0x14, 0x27, 0x28, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x17, + 0x00, 0x1a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x17, 0x08, 0x1f, 0x0a, + 0x34, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x19, 0x02, 0x14, 0x1a, 0x27, 0x20, 0x54, + 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x19, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x19, 0x08, + 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x19, 0x12, 0x13, 0x0a, + 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x1c, 0x00, 0x25, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, + 0x02, 0x01, 0x12, 0x03, 0x1c, 0x08, 0x1f, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, + 0x03, 0x1e, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x1e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x1e, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1e, 0x11, + 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x03, 0x1e, 0x13, 0x3c, 0x0a, + 0x10, 0x0a, 0x09, 0x04, 0x02, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x1e, 0x14, + 0x3b, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x21, 0x02, 0x3e, 0x1a, 0x32, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x21, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x21, 0x09, 0x0f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x21, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x01, 0x08, 0x12, 0x03, 0x21, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x02, + 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x21, 0x15, 0x3c, 0x0a, 0x3e, 0x0a, 0x04, + 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x24, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x02, 0x05, 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, + 0x03, 0x12, 0x03, 0x24, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x08, 0x12, + 0x03, 0x24, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x02, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, + 0x02, 0x12, 0x03, 0x24, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x27, 0x00, + 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x27, 0x08, 0x15, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x03, 0x08, 0x00, 0x12, 0x04, 0x28, 0x02, 0x2d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x03, 0x08, 0x00, 0x01, 0x12, 0x03, 0x28, 0x08, 0x10, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x03, + 0x02, 0x00, 0x12, 0x03, 0x2a, 0x04, 0x20, 0x1a, 0x19, 0x20, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, + 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2a, 0x04, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, 0x14, 0x1b, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x1e, 0x1f, 0x0a, 0x24, 0x0a, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x04, 0x1c, 0x1a, 0x17, 0x20, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x06, 0x12, 0x03, 0x2c, 0x04, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2c, 0x12, 0x17, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x32, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, + 0x03, 0x30, 0x08, 0x17, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x31, 0x02, + 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x03, 0x31, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x31, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x31, 0x1d, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x31, 0x27, 0x28, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, + 0x04, 0x34, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x34, 0x08, + 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x08, 0x00, 0x12, 0x04, 0x35, 0x02, 0x38, 0x03, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x01, 0x12, 0x03, 0x35, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x36, 0x04, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x04, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x36, 0x14, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x36, 0x1f, 0x20, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, 0x37, 0x04, + 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x03, 0x37, 0x04, 0x13, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x37, 0x14, 0x1c, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x37, 0x1f, 0x20, 0x0a, 0x0a, 0x0a, 0x02, 0x04, + 0x06, 0x12, 0x04, 0x3b, 0x00, 0x3f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, + 0x3b, 0x08, 0x17, 0x0a, 0x7f, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3e, 0x02, 0x1f, + 0x1a, 0x72, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, + 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, + 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x3e, + 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3e, 0x08, 0x1a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3e, 0x1d, 0x1e, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x41, 0x00, 0x53, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, + 0x01, 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, + 0x43, 0x02, 0x10, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x43, 0x09, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x43, 0x0e, + 0x0f, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x03, 0x46, 0x02, 0x1b, 0x1a, 0x29, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x01, 0x04, 0x12, 0x03, 0x46, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x05, + 0x12, 0x03, 0x46, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x46, 0x12, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x12, 0x03, 0x46, 0x19, + 0x1a, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x02, 0x12, 0x03, 0x49, 0x02, 0x22, 0x1a, 0x2a, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x02, 0x04, 0x12, 0x03, 0x49, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, + 0x05, 0x12, 0x03, 0x49, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x01, 0x12, + 0x03, 0x49, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x03, 0x12, 0x03, 0x49, + 0x20, 0x21, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x03, 0x12, 0x03, 0x4c, 0x02, 0x14, 0x1a, + 0x41, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x20, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x06, 0x12, 0x03, 0x4c, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x01, 0x12, 0x03, 0x4c, 0x09, 0x0f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4c, 0x12, 0x13, 0x0a, 0x22, 0x0a, 0x04, + 0x04, 0x07, 0x02, 0x04, 0x12, 0x03, 0x4f, 0x02, 0x1b, 0x1a, 0x15, 0x20, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x05, 0x12, 0x03, 0x4f, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x04, 0x03, 0x12, 0x03, 0x4f, 0x19, 0x1a, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x07, + 0x02, 0x05, 0x12, 0x03, 0x52, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x20, 0x62, 0x79, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x05, 0x04, 0x12, 0x03, 0x52, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x05, 0x05, 0x12, 0x03, 0x52, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x01, + 0x12, 0x03, 0x52, 0x12, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x03, 0x12, 0x03, + 0x52, 0x26, 0x27, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x55, 0x00, 0x57, 0x01, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x55, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x08, 0x02, 0x00, 0x12, 0x03, 0x56, 0x02, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x04, 0x12, 0x03, 0x56, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x56, 0x0b, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x56, + 0x1b, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x56, 0x25, 0x26, + 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x59, 0x00, 0x5e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x09, 0x01, 0x12, 0x03, 0x59, 0x08, 0x17, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x08, 0x00, + 0x12, 0x04, 0x5a, 0x02, 0x5d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x08, 0x00, 0x01, 0x12, + 0x03, 0x5a, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x04, + 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5b, 0x04, 0x11, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5b, 0x12, 0x1a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x09, 0x02, 0x01, 0x12, 0x03, 0x5c, 0x04, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, + 0x06, 0x12, 0x03, 0x5c, 0x04, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x5c, 0x11, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5c, + 0x1c, 0x1d, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x04, 0x60, 0x00, 0x66, 0x01, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x60, 0x08, 0x15, 0x0a, 0x7f, 0x0a, 0x04, 0x04, 0x0a, + 0x02, 0x00, 0x12, 0x03, 0x63, 0x02, 0x1f, 0x1a, 0x72, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, + 0x79, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, + 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x0a, 0x02, 0x00, 0x05, 0x12, 0x03, 0x63, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x63, 0x08, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x63, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, 0x12, 0x03, 0x65, + 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x05, 0x12, 0x03, 0x65, 0x02, 0x07, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, 0x03, 0x65, 0x08, 0x1a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x65, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x0b, 0x12, 0x04, 0x68, 0x00, 0x76, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, + 0x03, 0x68, 0x08, 0x14, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x6a, 0x02, + 0x1e, 0x1a, 0x1e, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x6a, 0x02, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6a, 0x0b, 0x19, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6a, 0x1c, 0x1d, 0x0a, 0xc2, 0x01, 0x0a, 0x04, + 0x04, 0x0b, 0x02, 0x01, 0x12, 0x03, 0x6f, 0x02, 0x1d, 0x1a, 0xb4, 0x01, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x2c, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, + 0x6e, 0x67, 0x0a, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x72, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x64, 0x66, 0x20, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x0a, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, 0x12, 0x03, 0x6f, 0x02, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, 0x6f, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x03, 0x6f, 0x11, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, + 0x02, 0x01, 0x03, 0x12, 0x03, 0x6f, 0x1b, 0x1c, 0x0a, 0x5e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x02, + 0x12, 0x03, 0x72, 0x02, 0x1a, 0x1a, 0x51, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, + 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, + 0x04, 0x12, 0x03, 0x72, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x72, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x12, 0x03, 0x72, + 0x11, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x03, 0x12, 0x03, 0x72, 0x18, 0x19, + 0x0a, 0x60, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x03, 0x12, 0x03, 0x75, 0x02, 0x1f, 0x1a, 0x53, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x6c, 0x6f, 0x67, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x04, 0x12, 0x03, 0x75, 0x02, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x05, 0x12, 0x03, 0x75, 0x0b, 0x10, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x01, 0x12, 0x03, 0x75, 0x11, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x03, 0x03, 0x12, 0x03, 0x75, 0x1d, 0x1e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, 0x0a, 0xd6, 0x1b, 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x1a, 0x1d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, + 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xb4, + 0x0b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x58, 0x92, 0x41, 0x46, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, + 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x2a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x09, 0x12, 0x07, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, + 0x92, 0x41, 0x44, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, + 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x12, 0xbb, + 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x24, + 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, + 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, + 0x61, 0x6c, 0x12, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0xe8, 0x01, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x92, 0x41, 0x4b, 0x0a, 0x07, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, + 0x12, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x27, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, + 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, + 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xe1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x79, 0x92, 0x41, 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, + 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, + 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, + 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, + 0x1a, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, + 0x2f, 0x61, 0x6c, 0x6c, 0x2d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x02, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x28, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x92, 0x41, 0x59, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x34, 0x47, 0x65, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2e, 0x2a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0xa0, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0xce, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x08, + 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, @@ -343,623 +1475,112 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x9c, 0x33, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xa0, - 0x01, 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, - 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x14, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x12, 0x0a, 0x94, 0x04, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x0e, 0x02, 0x46, 0x1a, 0x86, 0x04, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, - 0x73, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, - 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0a, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x75, 0x62, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, - 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x0a, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x0a, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x69, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x20, 0x4d, 0x75, 0x73, - 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x2e, 0x20, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x6e, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, - 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x61, - 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0e, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0e, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x11, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x08, 0x12, 0x03, 0x0e, 0x21, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, - 0x09, 0x03, 0x05, 0x12, 0x03, 0x0e, 0x22, 0x44, 0x0a, 0xf3, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x13, 0x02, 0x21, 0x1a, 0xe5, 0x01, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x20, 0x53, 0x65, 0x74, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x65, 0x64, 0x0a, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, - 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, - 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x2e, 0x0a, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x13, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x13, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x13, 0x12, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x13, 0x1f, 0x20, 0x0a, 0xd5, 0x01, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x18, - 0x00, 0x1d, 0x01, 0x1a, 0xc8, 0x01, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x41, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, - 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, - 0x6e, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, - 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x18, 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x00, 0x12, 0x03, 0x1a, 0x02, 0x19, 0x1a, 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x1a, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x1a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x1a, 0x17, 0x18, 0x0a, 0x21, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x1c, 0x02, 0x12, - 0x1a, 0x14, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x1c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1c, - 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1c, 0x10, 0x11, - 0x0a, 0x5d, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x20, 0x00, 0x25, 0x01, 0x1a, 0x51, 0x20, 0x41, - 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x67, - 0x69, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x20, 0x08, 0x0e, 0x0a, 0x25, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x00, 0x12, 0x03, 0x22, 0x02, 0x12, 0x1a, 0x18, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x61, 0x6d, - 0x61, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x22, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x22, 0x09, 0x0d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x22, 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x24, 0x02, 0x13, 0x1a, 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, - 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x24, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x24, 0x11, - 0x12, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x28, 0x00, 0x33, 0x01, 0x1a, 0x47, 0x20, - 0x41, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, - 0x66, 0x20, 0x61, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x28, - 0x08, 0x0d, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x2a, 0x02, 0x19, 0x1a, - 0x22, 0x20, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x2a, 0x02, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x2a, 0x0b, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, 0x12, 0x14, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x17, 0x18, 0x0a, 0x25, 0x0a, 0x04, 0x04, - 0x03, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x12, 0x1a, 0x18, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x05, 0x12, 0x03, 0x2c, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2c, 0x09, 0x0d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x2c, 0x10, 0x11, 0x0a, 0x39, 0x0a, 0x04, - 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x2e, 0x02, 0x14, 0x1a, 0x2c, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, - 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, - 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, - 0x2e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2e, 0x12, - 0x13, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x03, 0x12, 0x03, 0x30, 0x02, 0x13, 0x1a, 0x2b, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, - 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x03, 0x05, 0x12, 0x03, 0x30, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x30, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x30, 0x11, 0x12, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x04, 0x12, 0x03, 0x32, - 0x02, 0x1f, 0x1a, 0x3a, 0x20, 0x41, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, 0x04, 0x12, 0x03, 0x32, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x04, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x04, 0x01, 0x12, 0x03, 0x32, 0x12, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x04, - 0x03, 0x12, 0x03, 0x32, 0x1d, 0x1e, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x35, 0x00, - 0x37, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x35, 0x08, 0x19, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x36, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x36, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x36, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x36, 0x1a, 0x1b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x39, 0x00, 0x3f, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x39, 0x08, 0x1a, 0x0a, 0x2e, 0x0a, - 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x72, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, 0x03, 0x3b, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3b, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x3b, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x3b, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x03, - 0x3e, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x6d, 0x65, - 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x3e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3e, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3e, 0x12, 0x21, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3e, 0x24, 0x25, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x06, 0x12, 0x04, 0x41, 0x00, 0x44, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, - 0x12, 0x03, 0x41, 0x08, 0x17, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x43, - 0x02, 0x13, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x43, 0x09, - 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x43, 0x11, 0x12, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x46, 0x00, 0x49, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x07, 0x01, 0x12, 0x03, 0x46, 0x08, 0x18, 0x0a, 0x2c, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, - 0x03, 0x48, 0x02, 0x12, 0x1a, 0x1f, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x48, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x48, 0x08, - 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x48, 0x10, 0x11, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, 0x4b, 0x00, 0x50, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x08, 0x01, 0x12, 0x03, 0x4b, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, - 0x03, 0x4c, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x03, 0x4c, - 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4c, 0x0d, 0x17, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4c, 0x1a, 0x1b, 0x0a, 0x3e, - 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x4f, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, - 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x4f, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, - 0x08, 0x12, 0x03, 0x4f, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x08, 0x02, 0x01, 0x08, 0x87, - 0x09, 0x0e, 0x02, 0x12, 0x03, 0x4f, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, - 0x52, 0x00, 0x58, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x03, 0x52, 0x08, 0x1b, - 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x54, 0x02, 0x1c, 0x1a, 0x22, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x04, 0x12, 0x03, 0x54, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x03, 0x54, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x03, 0x54, 0x12, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x00, 0x03, 0x12, 0x03, 0x54, 0x1a, 0x1b, 0x0a, 0x9f, 0x01, 0x0a, 0x04, 0x04, 0x09, - 0x02, 0x01, 0x12, 0x03, 0x57, 0x02, 0x26, 0x1a, 0x91, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, - 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, - 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x01, 0x04, 0x12, 0x03, 0x57, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x57, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x57, 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x57, 0x24, 0x25, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x04, 0x5a, 0x00, 0x62, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x5a, 0x08, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x0a, 0x02, 0x00, 0x12, 0x03, 0x5b, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, - 0x06, 0x12, 0x03, 0x5b, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, - 0x03, 0x5b, 0x0d, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, - 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, 0x12, 0x03, 0x5e, 0x02, 0x3d, 0x1a, - 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, - 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5e, 0x09, 0x0e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5e, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0a, 0x02, 0x01, 0x08, 0x12, 0x03, 0x5e, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, - 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x5e, 0x14, 0x3b, 0x0a, 0x3f, 0x0a, 0x04, - 0x04, 0x0a, 0x02, 0x02, 0x12, 0x03, 0x61, 0x02, 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, - 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x0a, 0x02, 0x02, 0x05, 0x12, 0x03, 0x61, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0a, 0x02, 0x02, 0x01, 0x12, 0x03, 0x61, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, - 0x02, 0x03, 0x12, 0x03, 0x61, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x08, - 0x12, 0x03, 0x61, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0a, 0x02, 0x02, 0x08, 0x87, 0x09, - 0x0e, 0x02, 0x12, 0x03, 0x61, 0x15, 0x3c, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x04, 0x64, - 0x00, 0x6a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x03, 0x64, 0x08, 0x20, 0x0a, - 0x2e, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x66, 0x02, 0x1b, 0x1a, 0x21, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, - 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x03, 0x66, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x66, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x66, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x66, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, - 0x12, 0x03, 0x69, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, - 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, - 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, - 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x04, - 0x12, 0x03, 0x69, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, - 0x69, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x03, 0x69, 0x12, - 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x12, 0x03, 0x69, 0x24, 0x25, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x04, 0x6c, 0x00, 0x71, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x0c, 0x01, 0x12, 0x03, 0x6c, 0x08, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, - 0x03, 0x6d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x03, 0x6d, - 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6d, 0x0d, 0x17, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6d, 0x1a, 0x1b, 0x0a, 0x3e, - 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x03, 0x70, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, - 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x05, 0x12, 0x03, 0x70, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x03, 0x70, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x70, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, - 0x08, 0x12, 0x03, 0x70, 0x13, 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0c, 0x02, 0x01, 0x08, 0x87, - 0x09, 0x0e, 0x02, 0x12, 0x03, 0x70, 0x14, 0x3b, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x04, - 0x73, 0x00, 0x79, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, 0x03, 0x73, 0x08, 0x1f, - 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x03, 0x75, 0x02, 0x1b, 0x1a, 0x21, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x77, 0x65, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, 0x03, 0x75, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x03, 0x75, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x11, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x19, 0x1a, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x04, 0x0d, 0x02, - 0x01, 0x12, 0x03, 0x78, 0x02, 0x26, 0x1a, 0x8f, 0x01, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, - 0x6f, 0x72, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x20, 0x6d, - 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, - 0x04, 0x12, 0x03, 0x78, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x78, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x03, 0x78, - 0x12, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x03, 0x78, 0x24, 0x25, - 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x05, 0x7b, 0x00, 0x89, 0x01, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x0e, 0x01, 0x12, 0x03, 0x7b, 0x08, 0x1e, 0x0a, 0x3e, 0x0a, 0x04, 0x04, 0x0e, 0x02, - 0x00, 0x12, 0x03, 0x7d, 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x7d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x7d, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x7d, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x12, 0x03, 0x7d, 0x13, - 0x3c, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, - 0x7d, 0x14, 0x3b, 0x0a, 0x40, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x01, 0x12, 0x04, 0x80, 0x01, 0x02, - 0x3e, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x12, 0x04, - 0x80, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x01, 0x12, 0x04, 0x80, - 0x01, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x03, 0x12, 0x04, 0x80, 0x01, - 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x08, 0x12, 0x04, 0x80, 0x01, 0x14, - 0x3d, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, - 0x80, 0x01, 0x15, 0x3c, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x02, 0x12, 0x04, 0x83, 0x01, - 0x02, 0x3d, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x49, 0x74, - 0x27, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x05, 0x12, 0x04, - 0x83, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0x83, - 0x01, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0x83, 0x01, - 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x08, 0x12, 0x04, 0x83, 0x01, 0x13, - 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0e, 0x02, 0x02, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, - 0x83, 0x01, 0x14, 0x3b, 0x0a, 0x9a, 0x02, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x03, 0x12, 0x04, 0x88, - 0x01, 0x02, 0x29, 0x1a, 0x8b, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x49, 0x53, 0x4f, 0x38, - 0x36, 0x30, 0x31, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x55, 0x54, 0x43, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x2c, - 0x0a, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x32, 0x30, 0x32, 0x32, 0x2d, 0x30, - 0x31, 0x2d, 0x30, 0x31, 0x54, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x5a, 0x2e, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, - 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x0a, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x04, 0x12, 0x04, 0x88, 0x01, 0x02, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x05, 0x12, 0x04, 0x88, 0x01, 0x0b, 0x11, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x01, 0x12, 0x04, 0x88, 0x01, 0x12, 0x24, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x03, 0x12, 0x04, 0x88, 0x01, 0x27, 0x28, 0x0a, 0x0c, 0x0a, - 0x02, 0x04, 0x0f, 0x12, 0x06, 0x8b, 0x01, 0x00, 0x8e, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x0f, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x08, 0x1f, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, - 0x12, 0x04, 0x8d, 0x01, 0x02, 0x14, 0x1a, 0x27, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x05, 0x12, 0x04, 0x8d, 0x01, 0x02, 0x07, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x08, 0x0f, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x02, - 0x04, 0x10, 0x12, 0x06, 0x90, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, - 0x01, 0x12, 0x04, 0x90, 0x01, 0x08, 0x0f, 0x0a, 0xd0, 0x02, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, - 0x12, 0x04, 0x95, 0x01, 0x02, 0x26, 0x1a, 0xc1, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x0a, 0x20, - 0x6e, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x2d, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x57, - 0x68, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x73, - 0x68, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6e, 0x67, - 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x65, 0x72, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, - 0x72, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x00, 0x05, 0x12, 0x04, 0x95, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x00, 0x01, 0x12, 0x04, 0x95, 0x01, 0x08, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, - 0x03, 0x12, 0x04, 0x95, 0x01, 0x24, 0x25, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, - 0x04, 0x98, 0x01, 0x02, 0x16, 0x1a, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x72, 0x6c, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x05, - 0x12, 0x04, 0x98, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, - 0x04, 0x98, 0x01, 0x09, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, - 0x98, 0x01, 0x14, 0x15, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x02, 0x12, 0x04, 0x9b, 0x01, - 0x02, 0x1a, 0x1a, 0x28, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x10, 0x02, 0x02, 0x05, 0x12, 0x04, 0x9b, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x10, 0x02, 0x02, 0x01, 0x12, 0x04, 0x9b, 0x01, 0x09, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x02, 0x03, 0x12, 0x04, 0x9b, 0x01, 0x18, 0x19, 0x0a, 0xad, 0x01, 0x0a, 0x04, 0x04, 0x10, - 0x02, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x26, 0x1a, 0x9e, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x53, 0x4f, 0x20, 0x38, 0x36, 0x30, 0x31, 0x20, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, - 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, - 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x03, 0x04, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, - 0x05, 0x12, 0x04, 0x9f, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x01, - 0x12, 0x04, 0x9f, 0x01, 0x12, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x03, 0x12, - 0x04, 0x9f, 0x01, 0x24, 0x25, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xd5, 0x19, - 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, - 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x64, 0x65, - 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1d, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, - 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x91, 0x0a, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, - 0x41, 0x46, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, - 0x63, 0x69, 0x61, 0x6c, 0x12, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, - 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x92, 0x41, 0x44, - 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, - 0x61, 0x6c, 0x12, 0x26, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x08, 0x47, 0x65, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, - 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3d, 0x0a, 0x06, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, - 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, - 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x6c, 0x74, - 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x92, 0x41, 0x4b, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x2a, 0x4c, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x8a, 0x0d, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x61, + 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, 0x27, + 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x06, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, + 0x38, 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x09, 0x00, 0x61, 0x01, 0x0a, 0x0a, 0x0a, + 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, + 0x00, 0x12, 0x04, 0x0b, 0x02, 0x16, 0x03, 0x1a, 0x28, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x06, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0b, 0x11, 0x22, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x2d, 0x3f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0c, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x0c, 0x04, 0x30, 0x0a, 0x11, 0x0a, 0x0a, 0x06, + 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x0c, 0x20, 0x2e, 0x0a, 0x0d, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x0e, 0x04, 0x15, 0x06, 0x0a, 0x0f, 0x0a, + 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x0e, 0x04, 0x15, 0x06, 0x0a, 0x0f, + 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x0f, 0x06, 0x37, 0x0a, + 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x11, 0x08, + 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, + 0x12, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x05, 0x12, + 0x03, 0x14, 0x06, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x19, 0x02, + 0x24, 0x03, 0x1a, 0x28, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x19, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x01, 0x02, 0x12, 0x03, 0x19, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x19, 0x29, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, + 0x03, 0x1a, 0x04, 0x38, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x12, 0x03, 0x1a, 0x04, 0x38, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, + 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x1a, 0x20, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x01, 0x04, 0x12, 0x04, 0x1c, 0x04, 0x23, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, + 0x04, 0x92, 0x08, 0x12, 0x04, 0x1c, 0x04, 0x23, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, + 0x01, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x1d, 0x06, 0x37, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x1f, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, + 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x20, 0x08, 0x12, 0x0a, 0x0f, + 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x22, 0x06, 0x1e, 0x0a, + 0x2c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x27, 0x02, 0x32, 0x03, 0x1a, 0x1e, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x27, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x27, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x27, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x12, 0x03, 0x28, 0x04, 0x3d, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, + 0xbc, 0x22, 0x02, 0x12, 0x03, 0x28, 0x04, 0x3d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, + 0x04, 0x12, 0x04, 0x2a, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x92, 0x08, 0x12, 0x04, 0x2a, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, + 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x2b, 0x06, 0x2d, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x02, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x2d, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, + 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x2e, 0x08, 0x12, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x30, 0x06, 0x21, 0x0a, 0x3a, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x35, 0x02, 0x40, 0x03, 0x1a, 0x2c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x27, - 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0xe1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x92, - 0x41, 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x69, - 0x63, 0x69, 0x61, 0x6c, 0x12, 0x31, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x2a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x61, 0x6c, - 0x6c, 0x2d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, - 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x9b, 0x01, 0x92, 0x41, 0x59, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x0a, - 0x08, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x34, 0x47, 0x65, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x2a, - 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x2f, - 0x7b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, - 0x7b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0xce, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x69, 0x6e, 0x63, 0x75, 0x62, 0x61, 0x74, 0x6f, 0x72, - 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2d, 0x72, - 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, - 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x0f, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x1b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, - 0x44, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x4a, 0xca, 0x0c, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x5c, 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, 0x27, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, - 0x12, 0x03, 0x05, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x38, - 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x08, 0x00, 0x5c, 0x01, 0x0a, 0x0a, 0x0a, 0x03, - 0x06, 0x00, 0x01, 0x12, 0x03, 0x08, 0x08, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, - 0x12, 0x04, 0x0a, 0x02, 0x15, 0x03, 0x1a, 0x28, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x06, 0x10, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0a, 0x11, 0x22, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0a, 0x2d, 0x3f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x04, 0x12, 0x03, 0x0b, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x0b, 0x04, 0x30, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, - 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x0b, 0x20, 0x2e, 0x0a, 0x0d, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x0d, 0x04, 0x14, 0x06, 0x0a, 0x0f, 0x0a, 0x07, - 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x0d, 0x04, 0x14, 0x06, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x0e, 0x06, 0x37, 0x0a, 0x10, - 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x10, 0x08, 0x10, - 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x11, - 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, - 0x13, 0x06, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x18, 0x02, 0x23, - 0x03, 0x1a, 0x28, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x63, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x18, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x02, 0x12, 0x03, 0x18, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x18, 0x29, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x19, 0x04, 0x38, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x03, 0x19, 0x04, 0x38, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x02, 0x12, 0x03, 0x19, 0x20, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, - 0x04, 0x12, 0x04, 0x1b, 0x04, 0x22, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x1b, 0x04, 0x22, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, - 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x1c, 0x06, 0x37, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x01, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x1e, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x1f, 0x08, 0x12, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x21, 0x06, 0x1e, 0x0a, 0x2c, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x26, 0x02, 0x31, 0x03, 0x1a, 0x1e, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x20, - 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x26, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x02, 0x02, 0x12, 0x03, 0x26, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x03, 0x12, 0x03, 0x26, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, - 0x03, 0x27, 0x04, 0x40, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x12, 0x03, 0x27, 0x04, 0x40, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x27, 0x20, 0x3e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x04, 0x12, 0x04, 0x29, 0x04, 0x30, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, - 0x04, 0x92, 0x08, 0x12, 0x04, 0x29, 0x04, 0x30, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, - 0x02, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x2a, 0x06, 0x2d, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x2c, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, - 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x2d, 0x08, 0x12, 0x0a, 0x0f, - 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x2f, 0x06, 0x21, 0x0a, - 0x3a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x34, 0x02, 0x3f, 0x03, 0x1a, 0x2c, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, - 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x27, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x34, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x03, 0x02, 0x12, 0x03, 0x34, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x34, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, - 0x35, 0x04, 0x50, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x03, 0x35, 0x04, 0x50, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x02, 0x12, 0x03, 0x35, 0x20, 0x4e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, - 0x04, 0x12, 0x04, 0x37, 0x04, 0x3e, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x03, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x37, 0x04, 0x3e, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x03, - 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x38, 0x06, 0x3b, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x03, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x3a, 0x08, 0x11, 0x0a, 0x10, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x3b, 0x08, 0x12, 0x0a, 0x0f, 0x0a, - 0x08, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x3d, 0x06, 0x20, 0x0a, 0x41, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x42, 0x02, 0x4d, 0x03, 0x1a, 0x33, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x42, 0x06, 0x15, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x42, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x42, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x43, 0x04, 0x43, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x43, 0x04, 0x43, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x43, 0x20, 0x41, 0x0a, 0x0d, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x45, 0x04, 0x4c, 0x06, 0x0a, 0x0f, 0x0a, - 0x07, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x45, 0x04, 0x4c, 0x06, 0x0a, 0x0f, - 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x46, 0x06, 0x42, 0x0a, - 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x48, 0x08, - 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, - 0x49, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x05, 0x12, - 0x03, 0x4b, 0x06, 0x23, 0x0a, 0x44, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x50, 0x02, - 0x5b, 0x03, 0x1a, 0x36, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, - 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x05, 0x01, 0x12, 0x03, 0x50, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, - 0x02, 0x12, 0x03, 0x50, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, - 0x03, 0x50, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x03, 0x51, - 0x04, 0x60, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, - 0x03, 0x51, 0x04, 0x60, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x02, 0x12, 0x03, 0x51, 0x20, 0x5e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, - 0x12, 0x04, 0x53, 0x04, 0x5a, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, - 0x08, 0x12, 0x04, 0x53, 0x04, 0x5a, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, - 0x92, 0x08, 0x02, 0x12, 0x03, 0x54, 0x06, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, - 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x56, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x05, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x57, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, - 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x59, 0x06, 0x25, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x01, 0x12, 0x03, 0x35, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x35, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x35, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x36, + 0x04, 0x50, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, + 0x03, 0x36, 0x04, 0x50, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x02, 0x12, 0x03, 0x36, 0x20, 0x4e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, + 0x12, 0x04, 0x38, 0x04, 0x3f, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, + 0x08, 0x12, 0x04, 0x38, 0x04, 0x3f, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x03, 0x04, + 0x92, 0x08, 0x02, 0x12, 0x03, 0x39, 0x06, 0x3b, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, + 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x3b, 0x08, 0x11, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x03, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x3c, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, + 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x3e, 0x06, 0x20, 0x0a, 0x41, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x43, 0x02, 0x4e, 0x03, 0x1a, 0x33, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x43, 0x06, 0x15, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x43, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x43, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x04, 0x04, 0x12, 0x03, 0x44, 0x04, 0x43, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, + 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x44, 0x04, 0x43, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, + 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x44, 0x20, 0x41, 0x0a, 0x0d, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x46, 0x04, 0x4d, 0x06, 0x0a, 0x0f, 0x0a, 0x07, + 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x46, 0x04, 0x4d, 0x06, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x47, 0x06, 0x42, 0x0a, 0x10, + 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x00, 0x12, 0x03, 0x49, 0x08, 0x10, + 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x4a, + 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, + 0x4c, 0x06, 0x23, 0x0a, 0x44, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x51, 0x02, 0x5c, + 0x03, 0x1a, 0x36, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x05, 0x01, 0x12, 0x03, 0x51, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, + 0x12, 0x03, 0x51, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, + 0x51, 0x37, 0x4e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x03, 0x52, 0x04, + 0x5d, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, + 0x03, 0x52, 0x04, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, 0x54, + 0x04, 0x5b, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x12, 0x04, + 0x54, 0x04, 0x5b, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x02, + 0x12, 0x03, 0x55, 0x06, 0x45, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, + 0x01, 0x00, 0x12, 0x03, 0x57, 0x08, 0x10, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, + 0x92, 0x08, 0x01, 0x01, 0x12, 0x03, 0x58, 0x08, 0x12, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, + 0x05, 0x04, 0x92, 0x08, 0x05, 0x12, 0x03, 0x5a, 0x06, 0x25, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x06, 0x12, 0x04, 0x5e, 0x02, 0x60, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, + 0x01, 0x12, 0x03, 0x5e, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, + 0x03, 0x5e, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x5e, + 0x39, 0x46, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, 0x03, 0x5f, 0x04, 0x5e, + 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, + 0x5f, 0x04, 0x5e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("delta_sharing.v1.serde.rs"); include!("delta_sharing.v1.tonic.rs"); diff --git a/delta-sharing/common/src/gen/delta_sharing.v1.serde.rs b/delta-sharing/common/src/gen/delta_sharing.v1.serde.rs index 9bc6fc2..6b46483 100644 --- a/delta-sharing/common/src/gen/delta_sharing.v1.serde.rs +++ b/delta-sharing/common/src/gen/delta_sharing.v1.serde.rs @@ -1,5 +1,5 @@ // @generated -impl serde::Serialize for GetShareRequest { +impl serde::Serialize for DeltaLogMessage { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -7,29 +7,38 @@ impl serde::Serialize for GetShareRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.share.is_empty() { + if self.entry.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareRequest", len)?; - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.DeltaLogMessage", len)?; + if let Some(v) = self.entry.as_ref() { + match v { + delta_log_message::Entry::Protocol(v) => { + struct_ser.serialize_field("protocol", v)?; + } + delta_log_message::Entry::Metadata(v) => { + struct_ser.serialize_field("metadata", v)?; + } + } } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetShareRequest { +impl<'de> serde::Deserialize<'de> for DeltaLogMessage { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", + "protocol", + "metadata", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, + Protocol, + Metadata, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -52,7 +61,8 @@ impl<'de> serde::Deserialize<'de> for GetShareRequest { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), + "protocol" => Ok(GeneratedField::Protocol), + "metadata" => Ok(GeneratedField::Metadata), _ => Ok(GeneratedField::__SkipField__), } } @@ -62,39 +72,47 @@ impl<'de> serde::Deserialize<'de> for GetShareRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetShareRequest; + type Value = DeltaLogMessage; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetShareRequest") + formatter.write_str("struct delta_sharing.v1.DeltaLogMessage") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; + let mut entry__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); + GeneratedField::Protocol => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("protocol")); } - share__ = Some(map_.next_value()?); + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(delta_log_message::Entry::Protocol) +; + } + GeneratedField::Metadata => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("metadata")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(delta_log_message::Entry::Metadata) +; } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(GetShareRequest { - share: share__.unwrap_or_default(), + Ok(DeltaLogMessage { + entry: entry__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetShareRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.DeltaLogMessage", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetShareResponse { +impl serde::Serialize for DeltaResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -102,29 +120,29 @@ impl serde::Serialize for GetShareResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if self.share.is_some() { + if !self.entries.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareResponse", len)?; - if let Some(v) = self.share.as_ref() { - struct_ser.serialize_field("share", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.DeltaResponse", len)?; + if !self.entries.is_empty() { + struct_ser.serialize_field("entries", &self.entries)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetShareResponse { +impl<'de> serde::Deserialize<'de> for DeltaResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", + "entries", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, + Entries, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -147,7 +165,7 @@ impl<'de> serde::Deserialize<'de> for GetShareResponse { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), + "entries" => Ok(GeneratedField::Entries), _ => Ok(GeneratedField::__SkipField__), } } @@ -157,39 +175,39 @@ impl<'de> serde::Deserialize<'de> for GetShareResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetShareResponse; + type Value = DeltaResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetShareResponse") + formatter.write_str("struct delta_sharing.v1.DeltaResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; + let mut entries__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); + GeneratedField::Entries => { + if entries__.is_some() { + return Err(serde::de::Error::duplicate_field("entries")); } - share__ = map_.next_value()?; + entries__ = Some(map_.next_value()?); } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(GetShareResponse { - share: share__, + Ok(DeltaResponse { + entries: entries__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetShareResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.DeltaResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetTableVersionRequest { +impl serde::Serialize for Format { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -197,54 +215,37 @@ impl serde::Serialize for GetTableVersionRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.share.is_empty() { - len += 1; - } - if !self.schema.is_empty() { - len += 1; - } - if !self.table.is_empty() { + if !self.provider.is_empty() { len += 1; } - if self.starting_timestamp.is_some() { + if !self.options.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionRequest", len)?; - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; - } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; - } - if !self.table.is_empty() { - struct_ser.serialize_field("table", &self.table)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Format", len)?; + if !self.provider.is_empty() { + struct_ser.serialize_field("provider", &self.provider)?; } - if let Some(v) = self.starting_timestamp.as_ref() { - struct_ser.serialize_field("startingTimestamp", v)?; + if !self.options.is_empty() { + struct_ser.serialize_field("options", &self.options)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { +impl<'de> serde::Deserialize<'de> for Format { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share", - "schema", - "table", - "starting_timestamp", - "startingTimestamp", + "provider", + "options", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Share, - Schema, - Table, - StartingTimestamp, + Provider, + Options, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -267,10 +268,8 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { E: serde::de::Error, { match value { - "share" => Ok(GeneratedField::Share), - "schema" => Ok(GeneratedField::Schema), - "table" => Ok(GeneratedField::Table), - "startingTimestamp" | "starting_timestamp" => Ok(GeneratedField::StartingTimestamp), + "provider" => Ok(GeneratedField::Provider), + "options" => Ok(GeneratedField::Options), _ => Ok(GeneratedField::__SkipField__), } } @@ -280,63 +279,49 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetTableVersionRequest; + type Value = Format; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetTableVersionRequest") + formatter.write_str("struct delta_sharing.v1.Format") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share__ = None; - let mut schema__ = None; - let mut table__ = None; - let mut starting_timestamp__ = None; + let mut provider__ = None; + let mut options__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Share => { - if share__.is_some() { - return Err(serde::de::Error::duplicate_field("share")); - } - share__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); - } - GeneratedField::Table => { - if table__.is_some() { - return Err(serde::de::Error::duplicate_field("table")); + GeneratedField::Provider => { + if provider__.is_some() { + return Err(serde::de::Error::duplicate_field("provider")); } - table__ = Some(map_.next_value()?); + provider__ = Some(map_.next_value()?); } - GeneratedField::StartingTimestamp => { - if starting_timestamp__.is_some() { - return Err(serde::de::Error::duplicate_field("startingTimestamp")); + GeneratedField::Options => { + if options__.is_some() { + return Err(serde::de::Error::duplicate_field("options")); } - starting_timestamp__ = map_.next_value()?; + options__ = Some( + map_.next_value::>()? + ); } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(GetTableVersionRequest { - share: share__.unwrap_or_default(), - schema: schema__.unwrap_or_default(), - table: table__.unwrap_or_default(), - starting_timestamp: starting_timestamp__, + Ok(Format { + provider: provider__.unwrap_or_default(), + options: options__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.Format", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetTableVersionResponse { +impl serde::Serialize for GetShareRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -344,31 +329,29 @@ impl serde::Serialize for GetTableVersionResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if self.version != 0 { + if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionResponse", len)?; - if self.version != 0 { - #[allow(clippy::needless_borrow)] - #[allow(clippy::needless_borrows_for_generic_args)] - struct_ser.serialize_field("version", ToString::to_string(&self.version).as_str())?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareRequest", len)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { +impl<'de> serde::Deserialize<'de> for GetShareRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "version", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Version, + Share, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -391,7 +374,7 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { E: serde::de::Error, { match value { - "version" => Ok(GeneratedField::Version), + "share" => Ok(GeneratedField::Share), _ => Ok(GeneratedField::__SkipField__), } } @@ -401,41 +384,39 @@ impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetTableVersionResponse; + type Value = GetShareRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.GetTableVersionResponse") + formatter.write_str("struct delta_sharing.v1.GetShareRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut version__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Version => { - if version__.is_some() { - return Err(serde::de::Error::duplicate_field("version")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - version__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; + share__ = Some(map_.next_value()?); } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(GetTableVersionResponse { - version: version__.unwrap_or_default(), + Ok(GetShareRequest { + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetShareRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemaTablesRequest { +impl serde::Serialize for GetShareResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -443,45 +424,29 @@ impl serde::Serialize for ListSchemaTablesRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.pagination.is_some() { - len += 1; - } - if !self.share.is_empty() { - len += 1; - } - if !self.schema.is_empty() { + if self.share.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesRequest", len)?; - if let Some(v) = self.pagination.as_ref() { - struct_ser.serialize_field("pagination", v)?; - } - if !self.share.is_empty() { - struct_ser.serialize_field("share", &self.share)?; - } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetShareResponse", len)?; + if let Some(v) = self.share.as_ref() { + struct_ser.serialize_field("share", v)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { +impl<'de> serde::Deserialize<'de> for GetShareResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "pagination", "share", - "schema", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Pagination, Share, - Schema, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -504,9 +469,7 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { E: serde::de::Error, { match value { - "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), - "schema" => Ok(GeneratedField::Schema), _ => Ok(GeneratedField::__SkipField__), } } @@ -516,55 +479,39 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemaTablesRequest; + type Value = GetShareResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemaTablesRequest") + formatter.write_str("struct delta_sharing.v1.GetShareResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut pagination__ = None; let mut share__ = None; - let mut schema__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Pagination => { - if pagination__.is_some() { - return Err(serde::de::Error::duplicate_field("pagination")); - } - pagination__ = map_.next_value()?; - } GeneratedField::Share => { if share__.is_some() { return Err(serde::de::Error::duplicate_field("share")); } - share__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); + share__ = map_.next_value()?; } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListSchemaTablesRequest { - pagination: pagination__, - share: share__.unwrap_or_default(), - schema: schema__.unwrap_or_default(), + Ok(GetShareResponse { + share: share__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetShareResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemaTablesResponse { +impl serde::Serialize for GetTableMetadataRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -572,38 +519,45 @@ impl serde::Serialize for ListSchemaTablesResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.items.is_empty() { + if !self.share.is_empty() { len += 1; } - if self.next_page_token.is_some() { + if !self.schema.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesResponse", len)?; - if !self.items.is_empty() { - struct_ser.serialize_field("items", &self.items)?; + if !self.table.is_empty() { + len += 1; } - if let Some(v) = self.next_page_token.as_ref() { - struct_ser.serialize_field("nextPageToken", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableMetadataRequest", len)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; + } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } + if !self.table.is_empty() { + struct_ser.serialize_field("table", &self.table)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { +impl<'de> serde::Deserialize<'de> for GetTableMetadataRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "items", - "next_page_token", - "nextPageToken", + "share", + "schema", + "table", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Items, - NextPageToken, + Share, + Schema, + Table, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -626,8 +580,9 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { E: serde::de::Error, { match value { - "items" => Ok(GeneratedField::Items), - "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), + "table" => Ok(GeneratedField::Table), _ => Ok(GeneratedField::__SkipField__), } } @@ -637,47 +592,55 @@ impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemaTablesResponse; + type Value = GetTableMetadataRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemaTablesResponse") + formatter.write_str("struct delta_sharing.v1.GetTableMetadataRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut items__ = None; - let mut next_page_token__ = None; + let mut share__ = None; + let mut schema__ = None; + let mut table__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Items => { - if items__.is_some() { - return Err(serde::de::Error::duplicate_field("items")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - items__ = Some(map_.next_value()?); + share__ = Some(map_.next_value()?); } - GeneratedField::NextPageToken => { - if next_page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("nextPageToken")); + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); } - next_page_token__ = map_.next_value()?; + schema__ = Some(map_.next_value()?); + } + GeneratedField::Table => { + if table__.is_some() { + return Err(serde::de::Error::duplicate_field("table")); + } + table__ = Some(map_.next_value()?); } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListSchemaTablesResponse { - items: items__.unwrap_or_default(), - next_page_token: next_page_token__, + Ok(GetTableMetadataRequest { + share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), + table: table__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableMetadataRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemasRequest { +impl serde::Serialize for GetTableVersionRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -685,37 +648,54 @@ impl serde::Serialize for ListSchemasRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.pagination.is_some() { + if !self.share.is_empty() { len += 1; } - if !self.share.is_empty() { + if !self.schema.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasRequest", len)?; - if let Some(v) = self.pagination.as_ref() { - struct_ser.serialize_field("pagination", v)?; + if !self.table.is_empty() { + len += 1; + } + if self.starting_timestamp.is_some() { + len += 1; } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionRequest", len)?; if !self.share.is_empty() { struct_ser.serialize_field("share", &self.share)?; } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } + if !self.table.is_empty() { + struct_ser.serialize_field("table", &self.table)?; + } + if let Some(v) = self.starting_timestamp.as_ref() { + struct_ser.serialize_field("startingTimestamp", v)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemasRequest { +impl<'de> serde::Deserialize<'de> for GetTableVersionRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "pagination", "share", + "schema", + "table", + "starting_timestamp", + "startingTimestamp", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Pagination, Share, + Schema, + Table, + StartingTimestamp, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -738,8 +718,10 @@ impl<'de> serde::Deserialize<'de> for ListSchemasRequest { E: serde::de::Error, { match value { - "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), + "table" => Ok(GeneratedField::Table), + "startingTimestamp" | "starting_timestamp" => Ok(GeneratedField::StartingTimestamp), _ => Ok(GeneratedField::__SkipField__), } } @@ -749,47 +731,63 @@ impl<'de> serde::Deserialize<'de> for ListSchemasRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemasRequest; + type Value = GetTableVersionRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemasRequest") + formatter.write_str("struct delta_sharing.v1.GetTableVersionRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut pagination__ = None; let mut share__ = None; + let mut schema__ = None; + let mut table__ = None; + let mut starting_timestamp__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Pagination => { - if pagination__.is_some() { - return Err(serde::de::Error::duplicate_field("pagination")); - } - pagination__ = map_.next_value()?; - } GeneratedField::Share => { if share__.is_some() { return Err(serde::de::Error::duplicate_field("share")); } share__ = Some(map_.next_value()?); } + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); + } + schema__ = Some(map_.next_value()?); + } + GeneratedField::Table => { + if table__.is_some() { + return Err(serde::de::Error::duplicate_field("table")); + } + table__ = Some(map_.next_value()?); + } + GeneratedField::StartingTimestamp => { + if starting_timestamp__.is_some() { + return Err(serde::de::Error::duplicate_field("startingTimestamp")); + } + starting_timestamp__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListSchemasRequest { - pagination: pagination__, + Ok(GetTableVersionRequest { share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), + table: table__.unwrap_or_default(), + starting_timestamp: starting_timestamp__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemasRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSchemasResponse { +impl serde::Serialize for GetTableVersionResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -797,38 +795,31 @@ impl serde::Serialize for ListSchemasResponse { { use serde::ser::SerializeStruct; let mut len = 0; - if !self.items.is_empty() { - len += 1; - } - if self.next_page_token.is_some() { + if self.version != 0 { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasResponse", len)?; - if !self.items.is_empty() { - struct_ser.serialize_field("items", &self.items)?; - } - if let Some(v) = self.next_page_token.as_ref() { - struct_ser.serialize_field("nextPageToken", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.GetTableVersionResponse", len)?; + if self.version != 0 { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("version", ToString::to_string(&self.version).as_str())?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSchemasResponse { +impl<'de> serde::Deserialize<'de> for GetTableVersionResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "items", - "next_page_token", - "nextPageToken", + "version", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - Items, - NextPageToken, + Version, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -851,8 +842,7 @@ impl<'de> serde::Deserialize<'de> for ListSchemasResponse { E: serde::de::Error, { match value { - "items" => Ok(GeneratedField::Items), - "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + "version" => Ok(GeneratedField::Version), _ => Ok(GeneratedField::__SkipField__), } } @@ -862,47 +852,41 @@ impl<'de> serde::Deserialize<'de> for ListSchemasResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSchemasResponse; + type Value = GetTableVersionResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSchemasResponse") + formatter.write_str("struct delta_sharing.v1.GetTableVersionResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut items__ = None; - let mut next_page_token__ = None; + let mut version__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::Items => { - if items__.is_some() { - return Err(serde::de::Error::duplicate_field("items")); - } - items__ = Some(map_.next_value()?); - } - GeneratedField::NextPageToken => { - if next_page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("nextPageToken")); + GeneratedField::Version => { + if version__.is_some() { + return Err(serde::de::Error::duplicate_field("version")); } - next_page_token__ = map_.next_value()?; + version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListSchemasResponse { - items: items__.unwrap_or_default(), - next_page_token: next_page_token__, + Ok(GetTableVersionResponse { + version: version__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSchemasResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.GetTableVersionResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListShareTablesRequest { +impl serde::Serialize for ListSchemaTablesRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -916,17 +900,23 @@ impl serde::Serialize for ListShareTablesRequest { if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesRequest", len)?; + if !self.schema.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesRequest", len)?; if let Some(v) = self.pagination.as_ref() { struct_ser.serialize_field("pagination", v)?; } if !self.share.is_empty() { struct_ser.serialize_field("share", &self.share)?; } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { +impl<'de> serde::Deserialize<'de> for ListSchemaTablesRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -935,12 +925,14 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { const FIELDS: &[&str] = &[ "pagination", "share", + "schema", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Pagination, Share, + Schema, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -965,6 +957,7 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { match value { "pagination" => Ok(GeneratedField::Pagination), "share" => Ok(GeneratedField::Share), + "schema" => Ok(GeneratedField::Schema), _ => Ok(GeneratedField::__SkipField__), } } @@ -974,18 +967,19 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListShareTablesRequest; + type Value = ListSchemaTablesRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListShareTablesRequest") + formatter.write_str("struct delta_sharing.v1.ListSchemaTablesRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { let mut pagination__ = None; let mut share__ = None; + let mut schema__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Pagination => { @@ -1000,21 +994,28 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { } share__ = Some(map_.next_value()?); } + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); + } + schema__ = Some(map_.next_value()?); + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListShareTablesRequest { + Ok(ListSchemaTablesRequest { pagination: pagination__, share: share__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListShareTablesResponse { +impl serde::Serialize for ListSchemaTablesResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1028,7 +1029,7 @@ impl serde::Serialize for ListShareTablesResponse { if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesResponse", len)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemaTablesResponse", len)?; if !self.items.is_empty() { struct_ser.serialize_field("items", &self.items)?; } @@ -1038,7 +1039,7 @@ impl serde::Serialize for ListShareTablesResponse { struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { +impl<'de> serde::Deserialize<'de> for ListSchemaTablesResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1087,13 +1088,13 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListShareTablesResponse; + type Value = ListSchemaTablesResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListShareTablesResponse") + formatter.write_str("struct delta_sharing.v1.ListSchemaTablesResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { @@ -1118,16 +1119,16 @@ impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { } } } - Ok(ListShareTablesResponse { + Ok(ListSchemaTablesResponse { items: items__.unwrap_or_default(), next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemaTablesResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSharesRequest { +impl serde::Serialize for ListSchemasRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1138,14 +1139,20 @@ impl serde::Serialize for ListSharesRequest { if self.pagination.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesRequest", len)?; + if !self.share.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasRequest", len)?; if let Some(v) = self.pagination.as_ref() { struct_ser.serialize_field("pagination", v)?; } + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; + } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSharesRequest { +impl<'de> serde::Deserialize<'de> for ListSchemasRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1153,11 +1160,13 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { { const FIELDS: &[&str] = &[ "pagination", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Pagination, + Share, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -1181,6 +1190,7 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { { match value { "pagination" => Ok(GeneratedField::Pagination), + "share" => Ok(GeneratedField::Share), _ => Ok(GeneratedField::__SkipField__), } } @@ -1190,17 +1200,18 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSharesRequest; + type Value = ListSchemasRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSharesRequest") + formatter.write_str("struct delta_sharing.v1.ListSchemasRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { let mut pagination__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Pagination => { @@ -1209,20 +1220,27 @@ impl<'de> serde::Deserialize<'de> for ListSharesRequest { } pagination__ = map_.next_value()?; } + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); + } + share__ = Some(map_.next_value()?); + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(ListSharesRequest { + Ok(ListSchemasRequest { pagination: pagination__, + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSharesRequest", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemasRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for ListSharesResponse { +impl serde::Serialize for ListSchemasResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1236,7 +1254,7 @@ impl serde::Serialize for ListSharesResponse { if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesResponse", len)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSchemasResponse", len)?; if !self.items.is_empty() { struct_ser.serialize_field("items", &self.items)?; } @@ -1246,7 +1264,7 @@ impl serde::Serialize for ListSharesResponse { struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for ListSharesResponse { +impl<'de> serde::Deserialize<'de> for ListSchemasResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where @@ -1295,13 +1313,13 @@ impl<'de> serde::Deserialize<'de> for ListSharesResponse { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSharesResponse; + type Value = ListSchemasResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.ListSharesResponse") + formatter.write_str("struct delta_sharing.v1.ListSchemasResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { @@ -1326,16 +1344,16 @@ impl<'de> serde::Deserialize<'de> for ListSharesResponse { } } } - Ok(ListSharesResponse { + Ok(ListSchemasResponse { items: items__.unwrap_or_default(), next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.ListSharesResponse", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListSchemasResponse", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for Pagination { +impl serde::Serialize for ListShareTablesRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1343,39 +1361,37 @@ impl serde::Serialize for Pagination { { use serde::ser::SerializeStruct; let mut len = 0; - if self.max_results.is_some() { + if self.pagination.is_some() { len += 1; } - if self.page_token.is_some() { + if !self.share.is_empty() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Pagination", len)?; - if let Some(v) = self.max_results.as_ref() { - struct_ser.serialize_field("maxResults", v)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesRequest", len)?; + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; } - if let Some(v) = self.page_token.as_ref() { - struct_ser.serialize_field("pageToken", v)?; + if !self.share.is_empty() { + struct_ser.serialize_field("share", &self.share)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for Pagination { +impl<'de> serde::Deserialize<'de> for ListShareTablesRequest { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "max_results", - "maxResults", - "page_token", - "pageToken", + "pagination", + "share", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - MaxResults, - PageToken, + Pagination, + Share, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -1398,8 +1414,8 @@ impl<'de> serde::Deserialize<'de> for Pagination { E: serde::de::Error, { match value { - "maxResults" | "max_results" => Ok(GeneratedField::MaxResults), - "pageToken" | "page_token" => Ok(GeneratedField::PageToken), + "pagination" => Ok(GeneratedField::Pagination), + "share" => Ok(GeneratedField::Share), _ => Ok(GeneratedField::__SkipField__), } } @@ -1409,49 +1425,47 @@ impl<'de> serde::Deserialize<'de> for Pagination { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Pagination; + type Value = ListShareTablesRequest; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.Pagination") + formatter.write_str("struct delta_sharing.v1.ListShareTablesRequest") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut max_results__ = None; - let mut page_token__ = None; + let mut pagination__ = None; + let mut share__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::MaxResults => { - if max_results__.is_some() { - return Err(serde::de::Error::duplicate_field("maxResults")); + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); } - max_results__ = - map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) - ; + pagination__ = map_.next_value()?; } - GeneratedField::PageToken => { - if page_token__.is_some() { - return Err(serde::de::Error::duplicate_field("pageToken")); + GeneratedField::Share => { + if share__.is_some() { + return Err(serde::de::Error::duplicate_field("share")); } - page_token__ = map_.next_value()?; + share__ = Some(map_.next_value()?); } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(Pagination { - max_results: max_results__, - page_token: page_token__, + Ok(ListShareTablesRequest { + pagination: pagination__, + share: share__.unwrap_or_default(), }) } } - deserializer.deserialize_struct("delta_sharing.v1.Pagination", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesRequest", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for Profile { +impl serde::Serialize for ListShareTablesResponse { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result where @@ -1459,56 +1473,38 @@ impl serde::Serialize for Profile { { use serde::ser::SerializeStruct; let mut len = 0; - if self.share_credentials_version != 0 { - len += 1; - } - if !self.endpoint.is_empty() { - len += 1; - } - if !self.bearer_token.is_empty() { + if !self.items.is_empty() { len += 1; } - if self.expiration_time.is_some() { + if self.next_page_token.is_some() { len += 1; } - let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Profile", len)?; - if self.share_credentials_version != 0 { - struct_ser.serialize_field("shareCredentialsVersion", &self.share_credentials_version)?; - } - if !self.endpoint.is_empty() { - struct_ser.serialize_field("endpoint", &self.endpoint)?; - } - if !self.bearer_token.is_empty() { - struct_ser.serialize_field("bearerToken", &self.bearer_token)?; + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListShareTablesResponse", len)?; + if !self.items.is_empty() { + struct_ser.serialize_field("items", &self.items)?; } - if let Some(v) = self.expiration_time.as_ref() { - struct_ser.serialize_field("expirationTime", v)?; + if let Some(v) = self.next_page_token.as_ref() { + struct_ser.serialize_field("nextPageToken", v)?; } struct_ser.end() } } -impl<'de> serde::Deserialize<'de> for Profile { +impl<'de> serde::Deserialize<'de> for ListShareTablesResponse { #[allow(deprecated)] fn deserialize(deserializer: D) -> std::result::Result where D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "share_credentials_version", - "shareCredentialsVersion", - "endpoint", - "bearer_token", - "bearerToken", - "expiration_time", - "expirationTime", + "items", + "next_page_token", + "nextPageToken", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - ShareCredentialsVersion, - Endpoint, - BearerToken, - ExpirationTime, + Items, + NextPageToken, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -1531,10 +1527,8 @@ impl<'de> serde::Deserialize<'de> for Profile { E: serde::de::Error, { match value { - "shareCredentialsVersion" | "share_credentials_version" => Ok(GeneratedField::ShareCredentialsVersion), - "endpoint" => Ok(GeneratedField::Endpoint), - "bearerToken" | "bearer_token" => Ok(GeneratedField::BearerToken), - "expirationTime" | "expiration_time" => Ok(GeneratedField::ExpirationTime), + "items" => Ok(GeneratedField::Items), + "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), _ => Ok(GeneratedField::__SkipField__), } } @@ -1544,62 +1538,1621 @@ impl<'de> serde::Deserialize<'de> for Profile { } struct GeneratedVisitor; impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Profile; + type Value = ListShareTablesResponse; fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct delta_sharing.v1.Profile") + formatter.write_str("struct delta_sharing.v1.ListShareTablesResponse") } - fn visit_map(self, mut map_: V) -> std::result::Result + fn visit_map(self, mut map_: V) -> std::result::Result where V: serde::de::MapAccess<'de>, { - let mut share_credentials_version__ = None; - let mut endpoint__ = None; - let mut bearer_token__ = None; - let mut expiration_time__ = None; + let mut items__ = None; + let mut next_page_token__ = None; while let Some(k) = map_.next_key()? { match k { - GeneratedField::ShareCredentialsVersion => { - if share_credentials_version__.is_some() { - return Err(serde::de::Error::duplicate_field("shareCredentialsVersion")); - } - share_credentials_version__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; - } - GeneratedField::Endpoint => { - if endpoint__.is_some() { - return Err(serde::de::Error::duplicate_field("endpoint")); - } - endpoint__ = Some(map_.next_value()?); - } - GeneratedField::BearerToken => { - if bearer_token__.is_some() { - return Err(serde::de::Error::duplicate_field("bearerToken")); + GeneratedField::Items => { + if items__.is_some() { + return Err(serde::de::Error::duplicate_field("items")); } - bearer_token__ = Some(map_.next_value()?); + items__ = Some(map_.next_value()?); } - GeneratedField::ExpirationTime => { - if expiration_time__.is_some() { - return Err(serde::de::Error::duplicate_field("expirationTime")); + GeneratedField::NextPageToken => { + if next_page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("nextPageToken")); } - expiration_time__ = map_.next_value()?; + next_page_token__ = map_.next_value()?; } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } } } - Ok(Profile { - share_credentials_version: share_credentials_version__.unwrap_or_default(), - endpoint: endpoint__.unwrap_or_default(), - bearer_token: bearer_token__.unwrap_or_default(), - expiration_time: expiration_time__, + Ok(ListShareTablesResponse { + items: items__.unwrap_or_default(), + next_page_token: next_page_token__, }) } } - deserializer.deserialize_struct("delta_sharing.v1.Profile", FIELDS, GeneratedVisitor) + deserializer.deserialize_struct("delta_sharing.v1.ListShareTablesResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ListSharesRequest { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.pagination.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesRequest", len)?; + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ListSharesRequest { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "pagination", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Pagination, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "pagination" => Ok(GeneratedField::Pagination), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ListSharesRequest; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ListSharesRequest") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut pagination__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); + } + pagination__ = map_.next_value()?; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ListSharesRequest { + pagination: pagination__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ListSharesRequest", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ListSharesResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.items.is_empty() { + len += 1; + } + if self.next_page_token.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ListSharesResponse", len)?; + if !self.items.is_empty() { + struct_ser.serialize_field("items", &self.items)?; + } + if let Some(v) = self.next_page_token.as_ref() { + struct_ser.serialize_field("nextPageToken", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ListSharesResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "items", + "next_page_token", + "nextPageToken", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Items, + NextPageToken, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "items" => Ok(GeneratedField::Items), + "nextPageToken" | "next_page_token" => Ok(GeneratedField::NextPageToken), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ListSharesResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ListSharesResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut items__ = None; + let mut next_page_token__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Items => { + if items__.is_some() { + return Err(serde::de::Error::duplicate_field("items")); + } + items__ = Some(map_.next_value()?); + } + GeneratedField::NextPageToken => { + if next_page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("nextPageToken")); + } + next_page_token__ = map_.next_value()?; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ListSharesResponse { + items: items__.unwrap_or_default(), + next_page_token: next_page_token__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ListSharesResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for MetadatDelta { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.delta_metadata.is_some() { + len += 1; + } + if self.version.is_some() { + len += 1; + } + if self.size.is_some() { + len += 1; + } + if self.num_files.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.MetadatDelta", len)?; + if let Some(v) = self.delta_metadata.as_ref() { + struct_ser.serialize_field("deltaMetadata", v)?; + } + if let Some(v) = self.version.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("version", ToString::to_string(&v).as_str())?; + } + if let Some(v) = self.size.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("size", ToString::to_string(&v).as_str())?; + } + if let Some(v) = self.num_files.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("numFiles", ToString::to_string(&v).as_str())?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for MetadatDelta { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "delta_metadata", + "deltaMetadata", + "version", + "size", + "num_files", + "numFiles", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + DeltaMetadata, + Version, + Size, + NumFiles, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "deltaMetadata" | "delta_metadata" => Ok(GeneratedField::DeltaMetadata), + "version" => Ok(GeneratedField::Version), + "size" => Ok(GeneratedField::Size), + "numFiles" | "num_files" => Ok(GeneratedField::NumFiles), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = MetadatDelta; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.MetadatDelta") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut delta_metadata__ = None; + let mut version__ = None; + let mut size__ = None; + let mut num_files__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::DeltaMetadata => { + if delta_metadata__.is_some() { + return Err(serde::de::Error::duplicate_field("deltaMetadata")); + } + delta_metadata__ = map_.next_value()?; + } + GeneratedField::Version => { + if version__.is_some() { + return Err(serde::de::Error::duplicate_field("version")); + } + version__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::Size => { + if size__.is_some() { + return Err(serde::de::Error::duplicate_field("size")); + } + size__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::NumFiles => { + if num_files__.is_some() { + return Err(serde::de::Error::duplicate_field("numFiles")); + } + num_files__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(MetadatDelta { + delta_metadata: delta_metadata__, + version: version__, + size: size__, + num_files: num_files__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.MetadatDelta", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Metadata { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.id.is_empty() { + len += 1; + } + if self.name.is_some() { + len += 1; + } + if self.description.is_some() { + len += 1; + } + if self.format.is_some() { + len += 1; + } + if !self.schema_string.is_empty() { + len += 1; + } + if !self.partition_columns.is_empty() { + len += 1; + } + if self.created_time.is_some() { + len += 1; + } + if !self.options.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Metadata", len)?; + if !self.id.is_empty() { + struct_ser.serialize_field("id", &self.id)?; + } + if let Some(v) = self.name.as_ref() { + struct_ser.serialize_field("name", v)?; + } + if let Some(v) = self.description.as_ref() { + struct_ser.serialize_field("description", v)?; + } + if let Some(v) = self.format.as_ref() { + struct_ser.serialize_field("format", v)?; + } + if !self.schema_string.is_empty() { + struct_ser.serialize_field("schemaString", &self.schema_string)?; + } + if !self.partition_columns.is_empty() { + struct_ser.serialize_field("partitionColumns", &self.partition_columns)?; + } + if let Some(v) = self.created_time.as_ref() { + #[allow(clippy::needless_borrow)] + #[allow(clippy::needless_borrows_for_generic_args)] + struct_ser.serialize_field("createdTime", ToString::to_string(&v).as_str())?; + } + if !self.options.is_empty() { + struct_ser.serialize_field("options", &self.options)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Metadata { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "id", + "name", + "description", + "format", + "schema_string", + "schemaString", + "partition_columns", + "partitionColumns", + "created_time", + "createdTime", + "options", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Id, + Name, + Description, + Format, + SchemaString, + PartitionColumns, + CreatedTime, + Options, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "id" => Ok(GeneratedField::Id), + "name" => Ok(GeneratedField::Name), + "description" => Ok(GeneratedField::Description), + "format" => Ok(GeneratedField::Format), + "schemaString" | "schema_string" => Ok(GeneratedField::SchemaString), + "partitionColumns" | "partition_columns" => Ok(GeneratedField::PartitionColumns), + "createdTime" | "created_time" => Ok(GeneratedField::CreatedTime), + "options" => Ok(GeneratedField::Options), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Metadata; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Metadata") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut id__ = None; + let mut name__ = None; + let mut description__ = None; + let mut format__ = None; + let mut schema_string__ = None; + let mut partition_columns__ = None; + let mut created_time__ = None; + let mut options__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Id => { + if id__.is_some() { + return Err(serde::de::Error::duplicate_field("id")); + } + id__ = Some(map_.next_value()?); + } + GeneratedField::Name => { + if name__.is_some() { + return Err(serde::de::Error::duplicate_field("name")); + } + name__ = map_.next_value()?; + } + GeneratedField::Description => { + if description__.is_some() { + return Err(serde::de::Error::duplicate_field("description")); + } + description__ = map_.next_value()?; + } + GeneratedField::Format => { + if format__.is_some() { + return Err(serde::de::Error::duplicate_field("format")); + } + format__ = map_.next_value()?; + } + GeneratedField::SchemaString => { + if schema_string__.is_some() { + return Err(serde::de::Error::duplicate_field("schemaString")); + } + schema_string__ = Some(map_.next_value()?); + } + GeneratedField::PartitionColumns => { + if partition_columns__.is_some() { + return Err(serde::de::Error::duplicate_field("partitionColumns")); + } + partition_columns__ = Some(map_.next_value()?); + } + GeneratedField::CreatedTime => { + if created_time__.is_some() { + return Err(serde::de::Error::duplicate_field("createdTime")); + } + created_time__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::Options => { + if options__.is_some() { + return Err(serde::de::Error::duplicate_field("options")); + } + options__ = Some( + map_.next_value::>()? + ); + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(Metadata { + id: id__.unwrap_or_default(), + name: name__, + description: description__, + format: format__, + schema_string: schema_string__.unwrap_or_default(), + partition_columns: partition_columns__.unwrap_or_default(), + created_time: created_time__, + options: options__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Metadata", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for MetadataParquet { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.id.is_empty() { + len += 1; + } + if self.name.is_some() { + len += 1; + } + if self.description.is_some() { + len += 1; + } + if self.format.is_some() { + len += 1; + } + if !self.schema_string.is_empty() { + len += 1; + } + if !self.partition_columns.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.MetadataParquet", len)?; + if !self.id.is_empty() { + struct_ser.serialize_field("id", &self.id)?; + } + if let Some(v) = self.name.as_ref() { + struct_ser.serialize_field("name", v)?; + } + if let Some(v) = self.description.as_ref() { + struct_ser.serialize_field("description", v)?; + } + if let Some(v) = self.format.as_ref() { + struct_ser.serialize_field("format", v)?; + } + if !self.schema_string.is_empty() { + struct_ser.serialize_field("schemaString", &self.schema_string)?; + } + if !self.partition_columns.is_empty() { + struct_ser.serialize_field("partitionColumns", &self.partition_columns)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for MetadataParquet { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "id", + "name", + "description", + "format", + "schema_string", + "schemaString", + "partition_columns", + "partitionColumns", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Id, + Name, + Description, + Format, + SchemaString, + PartitionColumns, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "id" => Ok(GeneratedField::Id), + "name" => Ok(GeneratedField::Name), + "description" => Ok(GeneratedField::Description), + "format" => Ok(GeneratedField::Format), + "schemaString" | "schema_string" => Ok(GeneratedField::SchemaString), + "partitionColumns" | "partition_columns" => Ok(GeneratedField::PartitionColumns), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = MetadataParquet; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.MetadataParquet") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut id__ = None; + let mut name__ = None; + let mut description__ = None; + let mut format__ = None; + let mut schema_string__ = None; + let mut partition_columns__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Id => { + if id__.is_some() { + return Err(serde::de::Error::duplicate_field("id")); + } + id__ = Some(map_.next_value()?); + } + GeneratedField::Name => { + if name__.is_some() { + return Err(serde::de::Error::duplicate_field("name")); + } + name__ = map_.next_value()?; + } + GeneratedField::Description => { + if description__.is_some() { + return Err(serde::de::Error::duplicate_field("description")); + } + description__ = map_.next_value()?; + } + GeneratedField::Format => { + if format__.is_some() { + return Err(serde::de::Error::duplicate_field("format")); + } + format__ = map_.next_value()?; + } + GeneratedField::SchemaString => { + if schema_string__.is_some() { + return Err(serde::de::Error::duplicate_field("schemaString")); + } + schema_string__ = Some(map_.next_value()?); + } + GeneratedField::PartitionColumns => { + if partition_columns__.is_some() { + return Err(serde::de::Error::duplicate_field("partitionColumns")); + } + partition_columns__ = Some(map_.next_value()?); + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(MetadataParquet { + id: id__.unwrap_or_default(), + name: name__, + description: description__, + format: format__, + schema_string: schema_string__.unwrap_or_default(), + partition_columns: partition_columns__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.MetadataParquet", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Pagination { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.max_results.is_some() { + len += 1; + } + if self.page_token.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Pagination", len)?; + if let Some(v) = self.max_results.as_ref() { + struct_ser.serialize_field("maxResults", v)?; + } + if let Some(v) = self.page_token.as_ref() { + struct_ser.serialize_field("pageToken", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Pagination { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "max_results", + "maxResults", + "page_token", + "pageToken", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MaxResults, + PageToken, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "maxResults" | "max_results" => Ok(GeneratedField::MaxResults), + "pageToken" | "page_token" => Ok(GeneratedField::PageToken), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Pagination; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Pagination") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut max_results__ = None; + let mut page_token__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MaxResults => { + if max_results__.is_some() { + return Err(serde::de::Error::duplicate_field("maxResults")); + } + max_results__ = + map_.next_value::<::std::option::Option<::pbjson::private::NumberDeserialize<_>>>()?.map(|x| x.0) + ; + } + GeneratedField::PageToken => { + if page_token__.is_some() { + return Err(serde::de::Error::duplicate_field("pageToken")); + } + page_token__ = map_.next_value()?; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(Pagination { + max_results: max_results__, + page_token: page_token__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Pagination", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ParquetLogMessage { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.entry.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ParquetLogMessage", len)?; + if let Some(v) = self.entry.as_ref() { + match v { + parquet_log_message::Entry::Protocol(v) => { + struct_ser.serialize_field("protocol", v)?; + } + parquet_log_message::Entry::Metadata(v) => { + struct_ser.serialize_field("metadata", v)?; + } + } + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ParquetLogMessage { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "protocol", + "metadata", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Protocol, + Metadata, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "protocol" => Ok(GeneratedField::Protocol), + "metadata" => Ok(GeneratedField::Metadata), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ParquetLogMessage; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ParquetLogMessage") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut entry__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Protocol => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("protocol")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(parquet_log_message::Entry::Protocol) +; + } + GeneratedField::Metadata => { + if entry__.is_some() { + return Err(serde::de::Error::duplicate_field("metadata")); + } + entry__ = map_.next_value::<::std::option::Option<_>>()?.map(parquet_log_message::Entry::Metadata) +; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ParquetLogMessage { + entry: entry__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ParquetLogMessage", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ParquetResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.entries.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ParquetResponse", len)?; + if !self.entries.is_empty() { + struct_ser.serialize_field("entries", &self.entries)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ParquetResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "entries", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Entries, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "entries" => Ok(GeneratedField::Entries), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ParquetResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ParquetResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut entries__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Entries => { + if entries__.is_some() { + return Err(serde::de::Error::duplicate_field("entries")); + } + entries__ = Some(map_.next_value()?); + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ParquetResponse { + entries: entries__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ParquetResponse", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for Profile { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.share_credentials_version != 0 { + len += 1; + } + if !self.endpoint.is_empty() { + len += 1; + } + if !self.bearer_token.is_empty() { + len += 1; + } + if self.expiration_time.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.Profile", len)?; + if self.share_credentials_version != 0 { + struct_ser.serialize_field("shareCredentialsVersion", &self.share_credentials_version)?; + } + if !self.endpoint.is_empty() { + struct_ser.serialize_field("endpoint", &self.endpoint)?; + } + if !self.bearer_token.is_empty() { + struct_ser.serialize_field("bearerToken", &self.bearer_token)?; + } + if let Some(v) = self.expiration_time.as_ref() { + struct_ser.serialize_field("expirationTime", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Profile { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "share_credentials_version", + "shareCredentialsVersion", + "endpoint", + "bearer_token", + "bearerToken", + "expiration_time", + "expirationTime", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + ShareCredentialsVersion, + Endpoint, + BearerToken, + ExpirationTime, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "shareCredentialsVersion" | "share_credentials_version" => Ok(GeneratedField::ShareCredentialsVersion), + "endpoint" => Ok(GeneratedField::Endpoint), + "bearerToken" | "bearer_token" => Ok(GeneratedField::BearerToken), + "expirationTime" | "expiration_time" => Ok(GeneratedField::ExpirationTime), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Profile; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.Profile") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut share_credentials_version__ = None; + let mut endpoint__ = None; + let mut bearer_token__ = None; + let mut expiration_time__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::ShareCredentialsVersion => { + if share_credentials_version__.is_some() { + return Err(serde::de::Error::duplicate_field("shareCredentialsVersion")); + } + share_credentials_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::Endpoint => { + if endpoint__.is_some() { + return Err(serde::de::Error::duplicate_field("endpoint")); + } + endpoint__ = Some(map_.next_value()?); + } + GeneratedField::BearerToken => { + if bearer_token__.is_some() { + return Err(serde::de::Error::duplicate_field("bearerToken")); + } + bearer_token__ = Some(map_.next_value()?); + } + GeneratedField::ExpirationTime => { + if expiration_time__.is_some() { + return Err(serde::de::Error::duplicate_field("expirationTime")); + } + expiration_time__ = map_.next_value()?; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(Profile { + share_credentials_version: share_credentials_version__.unwrap_or_default(), + endpoint: endpoint__.unwrap_or_default(), + bearer_token: bearer_token__.unwrap_or_default(), + expiration_time: expiration_time__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.Profile", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ProtocolDelta { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.min_reader_version != 0 { + len += 1; + } + if self.min_writer_version != 0 { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ProtocolDelta", len)?; + if self.min_reader_version != 0 { + struct_ser.serialize_field("minReaderVersion", &self.min_reader_version)?; + } + if self.min_writer_version != 0 { + struct_ser.serialize_field("minWriterVersion", &self.min_writer_version)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ProtocolDelta { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "min_reader_version", + "minReaderVersion", + "min_writer_version", + "minWriterVersion", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MinReaderVersion, + MinWriterVersion, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "minReaderVersion" | "min_reader_version" => Ok(GeneratedField::MinReaderVersion), + "minWriterVersion" | "min_writer_version" => Ok(GeneratedField::MinWriterVersion), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ProtocolDelta; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ProtocolDelta") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut min_reader_version__ = None; + let mut min_writer_version__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MinReaderVersion => { + if min_reader_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minReaderVersion")); + } + min_reader_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::MinWriterVersion => { + if min_writer_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minWriterVersion")); + } + min_writer_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ProtocolDelta { + min_reader_version: min_reader_version__.unwrap_or_default(), + min_writer_version: min_writer_version__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ProtocolDelta", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for ProtocolParquet { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.min_reader_version != 0 { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.ProtocolParquet", len)?; + if self.min_reader_version != 0 { + struct_ser.serialize_field("minReaderVersion", &self.min_reader_version)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for ProtocolParquet { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "min_reader_version", + "minReaderVersion", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + MinReaderVersion, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "minReaderVersion" | "min_reader_version" => Ok(GeneratedField::MinReaderVersion), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ProtocolParquet; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.ProtocolParquet") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut min_reader_version__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::MinReaderVersion => { + if min_reader_version__.is_some() { + return Err(serde::de::Error::duplicate_field("minReaderVersion")); + } + min_reader_version__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(ProtocolParquet { + min_reader_version: min_reader_version__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.ProtocolParquet", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for QueryResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.response.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("delta_sharing.v1.QueryResponse", len)?; + if let Some(v) = self.response.as_ref() { + match v { + query_response::Response::Parquet(v) => { + struct_ser.serialize_field("parquet", v)?; + } + query_response::Response::Delta(v) => { + struct_ser.serialize_field("delta", v)?; + } + } + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for QueryResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "parquet", + "delta", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Parquet, + Delta, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "parquet" => Ok(GeneratedField::Parquet), + "delta" => Ok(GeneratedField::Delta), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = QueryResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct delta_sharing.v1.QueryResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut response__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Parquet => { + if response__.is_some() { + return Err(serde::de::Error::duplicate_field("parquet")); + } + response__ = map_.next_value::<::std::option::Option<_>>()?.map(query_response::Response::Parquet) +; + } + GeneratedField::Delta => { + if response__.is_some() { + return Err(serde::de::Error::duplicate_field("delta")); + } + response__ = map_.next_value::<::std::option::Option<_>>()?.map(query_response::Response::Delta) +; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(QueryResponse { + response: response__, + }) + } + } + deserializer.deserialize_struct("delta_sharing.v1.QueryResponse", FIELDS, GeneratedVisitor) } } impl serde::Serialize for Schema { diff --git a/delta-sharing/common/src/gen/delta_sharing.v1.tonic.rs b/delta-sharing/common/src/gen/delta_sharing.v1.tonic.rs index 129f498..ad4fa1e 100644 --- a/delta-sharing/common/src/gen/delta_sharing.v1.tonic.rs +++ b/delta-sharing/common/src/gen/delta_sharing.v1.tonic.rs @@ -60,6 +60,11 @@ pub mod delta_sharing_service_server { tonic::Response, tonic::Status, >; + /// + async fn get_table_metadata( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status>; } /// #[derive(Debug)] @@ -422,6 +427,55 @@ pub mod delta_sharing_service_server { }; Box::pin(fut) } + "/delta_sharing.v1.DeltaSharingService/GetTableMetadata" => { + #[allow(non_camel_case_types)] + struct GetTableMetadataSvc(pub Arc); + impl< + T: DeltaSharingService, + > tonic::server::UnaryService + for GetTableMetadataSvc { + type Response = super::QueryResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::get_table_metadata( + &inner, + request, + ) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = GetTableMetadataSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/delta-sharing/common/src/grpc/mod.rs b/delta-sharing/common/src/grpc/mod.rs index 2623bf2..b9f1300 100644 --- a/delta-sharing/common/src/grpc/mod.rs +++ b/delta-sharing/common/src/grpc/mod.rs @@ -67,4 +67,12 @@ impl DeltaSharingService for DeltaSharingHandler { let result = self.query.get_table_version(request.into_inner()).await?; Ok(Response::new(result)) } + + async fn get_table_metadata( + &self, + request: Request, + ) -> Result, Status> { + let result = self.query.get_table_metadata(request.into_inner()).await?; + Ok(Response::new(result)) + } } diff --git a/delta-sharing/common/src/kernel/conversion.rs b/delta-sharing/common/src/kernel/conversion.rs new file mode 100644 index 0000000..5168240 --- /dev/null +++ b/delta-sharing/common/src/kernel/conversion.rs @@ -0,0 +1,92 @@ +use delta_kernel::actions::{Metadata, Protocol}; + +use crate::error::Result; +use crate::models::v1::{ + parquet_log_message::Entry as ParquetEntry, query_response::Response as QueryResponseType, + Format as FormatMessage, MetadataParquet, ParquetLogMessage, ParquetResponse, ProtocolParquet, + QueryResponse, +}; + +impl From<&Metadata> for MetadataParquet { + fn from(value: &Metadata) -> Self { + MetadataParquet { + id: value.id.clone(), + name: value.name.clone(), + description: value.description.clone(), + format: Some(FormatMessage { + provider: value.format.provider.clone(), + options: value.format.options.clone(), + }), + schema_string: value.schema_string.clone(), + partition_columns: value.partition_columns.clone(), + } + } +} + +impl From<&Metadata> for ParquetLogMessage { + fn from(value: &Metadata) -> Self { + ParquetLogMessage { + entry: Some(ParquetEntry::Metadata(value.into())), + } + } +} + +impl From<&Protocol> for ProtocolParquet { + fn from(value: &Protocol) -> Self { + ProtocolParquet { + min_reader_version: value.min_reader_version, + } + } +} + +impl From<&Protocol> for ParquetLogMessage { + fn from(value: &Protocol) -> Self { + ParquetLogMessage { + entry: Some(ParquetEntry::Protocol(value.into())), + } + } +} + +impl From for ParquetLogMessage { + fn from(value: ProtocolParquet) -> Self { + ParquetLogMessage { + entry: Some(ParquetEntry::Protocol(value)), + } + } +} + +impl From for ParquetLogMessage { + fn from(value: MetadataParquet) -> Self { + ParquetLogMessage { + entry: Some(ParquetEntry::Metadata(value)), + } + } +} + +impl> From for QueryResponse { + fn from(value: T) -> Self { + QueryResponse { + response: Some(QueryResponseType::Parquet(ParquetResponse { + entries: value.into_iter().collect(), + })), + } + } +} + +impl IntoIterator for QueryResponse { + type Item = Result; + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + let res = self.response.unwrap(); + match res { + QueryResponseType::Parquet(msg) => msg + .entries + .iter() + .map(|it| Ok(serde_json::to_string(it)?)) + .collect::>() + .into_iter(), + QueryResponseType::Delta(msg) => todo!(), + } + } +} diff --git a/delta-sharing/common/src/kernel.rs b/delta-sharing/common/src/kernel/mod.rs similarity index 82% rename from delta-sharing/common/src/kernel.rs rename to delta-sharing/common/src/kernel/mod.rs index e7ec4c2..7c63455 100644 --- a/delta-sharing/common/src/kernel.rs +++ b/delta-sharing/common/src/kernel/mod.rs @@ -5,12 +5,17 @@ use delta_kernel::engine::default::executor::tokio::{ TokioBackgroundExecutor, TokioMultiThreadExecutor, }; use delta_kernel::engine::default::{executor::TaskExecutor, DefaultEngine}; +use delta_kernel::snapshot::Snapshot; use delta_kernel::{Engine, Table}; -use crate::models::v1::{GetTableVersionRequest, GetTableVersionResponse}; +use crate::models::v1::{ + GetTableMetadataRequest, GetTableVersionRequest, GetTableVersionResponse, QueryResponse, +}; use crate::models::TableRef; use crate::{Result, TableLocationResover, TableQueryHandler}; +mod conversion; + #[async_trait::async_trait] pub trait KernelEngineFactroy: Send + Sync { async fn create(&self, table: &Table) -> Result>; @@ -92,6 +97,14 @@ impl KernelQueryHandler { )); Arc::new(Self::new(engine_factory, location_resolver)) } + + async fn get_snapshot(&self, table_ref: &TableRef) -> Result { + let location = self.location_resolver.resolve(table_ref).await?; + let table = Table::new(location); + let engine = self.engine_factory.create(&table).await?; + let snapshot = table.snapshot(engine.as_ref(), None)?; + Ok(snapshot) + } } #[async_trait::async_trait] @@ -100,22 +113,28 @@ impl TableQueryHandler for KernelQueryHandler { &self, request: GetTableVersionRequest, ) -> Result { - let location = self - .location_resolver - .resolve(&TableRef { + let snapshot = self + .get_snapshot(&TableRef { share: request.share, schema: request.schema, table: request.table, }) .await?; - let table = Table::new(location); - let engine = self.engine_factory.create(&table).await?; - let snapshot = table.snapshot(engine.as_ref(), None)?; - let version = snapshot.version(); Ok(GetTableVersionResponse { version: version as i64, }) } + + async fn get_table_metadata(&self, request: GetTableMetadataRequest) -> Result { + let snapshot = self + .get_snapshot(&TableRef { + share: request.share, + schema: request.schema, + table: request.table, + }) + .await?; + Ok([snapshot.metadata().into(), snapshot.protocol().into()].into()) + } } diff --git a/delta-sharing/common/src/lib.rs b/delta-sharing/common/src/lib.rs index f79a932..f8af5c0 100644 --- a/delta-sharing/common/src/lib.rs +++ b/delta-sharing/common/src/lib.rs @@ -83,6 +83,8 @@ pub trait TableQueryHandler: Send + Sync { &self, request: GetTableVersionRequest, ) -> Result; + + async fn get_table_metadata(&self, request: GetTableMetadataRequest) -> Result; } /// Permission that a policy can authorize. diff --git a/delta-sharing/common/src/rest/extractors.rs b/delta-sharing/common/src/rest/extractors.rs index 6a9a1fe..5a06d8c 100644 --- a/delta-sharing/common/src/rest/extractors.rs +++ b/delta-sharing/common/src/rest/extractors.rs @@ -92,3 +92,18 @@ impl FromRequestParts for GetTableVersionRequest { }) } } + +#[async_trait] +impl FromRequestParts for GetTableMetadataRequest { + type Rejection = Error; + + async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { + let Path((share, schema, table)) = + parts.extract::>().await?; + Ok(GetTableMetadataRequest { + share, + schema, + table, + }) + } +} diff --git a/delta-sharing/common/src/rest/router.rs b/delta-sharing/common/src/rest/router.rs index dc45ce9..b469d88 100644 --- a/delta-sharing/common/src/rest/router.rs +++ b/delta-sharing/common/src/rest/router.rs @@ -1,6 +1,7 @@ use axum::body::Body; use axum::extract::{Extension, State}; use axum::{response::Response, routing::get, Json, Router}; +use http::header::CONTENT_TYPE; use crate::error::{Error, Result}; use crate::models::v1::*; @@ -67,6 +68,27 @@ async fn get_table_version( Ok(response) } +async fn get_table_metadata( + State(handler): State, + Extension(recipient): Extension, + request: GetTableMetadataRequest, +) -> Result> { + check_read_share_permission(handler.policy.as_ref(), &request.share, &recipient).await?; + let result = handler.query.get_table_metadata(request).await?; + let response = Response::builder() + .header(CONTENT_TYPE, "application/x-ndjson; charset=utf-8") + .body(Body::from(query_response_to_ndjson(result)?)) + .map_err(|e| Error::generic(e.to_string()))?; + Ok(response) +} + +fn query_response_to_ndjson(response: impl IntoIterator>) -> Result { + Ok(response + .into_iter() + .collect::>>()? + .join("\n")) +} + async fn check_read_share_permission( policy: &dyn Policy, share: impl Into, @@ -95,6 +117,10 @@ pub fn get_router(state: DeltaSharingHandler) -> Router { "/shares/:share/schemas/:schema/tables/:table/version", get(get_table_version), ) + .route( + "/shares/:share/schemas/:schema/tables/:table/metadata", + get(get_table_metadata), + ) .with_state(state) } @@ -344,4 +370,26 @@ mod tests { assert_eq!(maybe_version, expected); } } + + #[tokio::test] + async fn test_get_table_metadata() { + maybe_skip_dat!(); + + let app = get_anonymous_router_dat(); + let cases = ["all_primitive_types", "basic_append", "basic_partitioned"]; + + for name in cases { + let request = get_test_request(format!( + "/shares/dat/schemas/reader_tests/tables/{}/metadata", + name + )); + let response = app.clone().oneshot(request).await.unwrap(); + assert!(response.status().is_success()); + let body = response.into_body().collect().await.unwrap().to_bytes(); + let content = String::from_utf8_lossy(&body); + for line in content.split("\n") { + let _: ParquetLogMessage = serde_json::from_str(line).unwrap(); + } + } + } } diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml new file mode 100644 index 0000000..fa71eb5 --- /dev/null +++ b/openapi/openapi.yaml @@ -0,0 +1,780 @@ +# Generated with protoc-gen-openapi +# https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi + +openapi: 3.0.3 +info: + title: DeltaSharingService API + version: 0.0.1 +paths: + /shares: + get: + tags: + - DeltaSharingService + description: List shares accessible to a recipient. + operationId: DeltaSharingService_ListShares + parameters: + - name: pagination.maxResults + in: query + description: |- + The maximum number of results per page that should be returned. + If the number of available results is larger than maxResults, the response + will provide a next_page_token that can be used to get the next page of results + in subsequent list requests. The server may return fewer than maxResults + items even if there are more available. The client should check nextPageToken + in the response to determine if there are more available. + Must be non-negative. 0 will return no results but nextPageToken may be populated. + schema: + type: integer + format: int32 + - name: pagination.pageToken + in: query + description: |- + Specifies a page token to use. Set pageToken to the nextPageToken returned + by a previous list request to get the next page of results. + next_page_token will not be returned in a response if there are no more results available. + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListSharesResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}: + get: + tags: + - DeltaSharingService + description: Get the metadata for a specific share. + operationId: DeltaSharingService_GetShare + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetShareResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}/all-tables: + get: + tags: + - DeltaSharingService + description: List all the tables under all schemas in a share. + operationId: DeltaSharingService_ListShareTables + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + - name: pagination.maxResults + in: query + description: |- + The maximum number of results per page that should be returned. + If the number of available results is larger than maxResults, the response + will provide a next_page_token that can be used to get the next page of results + in subsequent list requests. The server may return fewer than maxResults + items even if there are more available. The client should check nextPageToken + in the response to determine if there are more available. + Must be non-negative. 0 will return no results but nextPageToken may be populated. + schema: + type: integer + format: int32 + - name: pagination.pageToken + in: query + description: |- + Specifies a page token to use. Set pageToken to the nextPageToken returned + by a previous list request to get the next page of results. + next_page_token will not be returned in a response if there are no more results available. + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListShareTablesResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}/schemas: + get: + tags: + - DeltaSharingService + description: List the schemas in a share. + operationId: DeltaSharingService_ListSchemas + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + - name: pagination.maxResults + in: query + description: |- + The maximum number of results per page that should be returned. + If the number of available results is larger than maxResults, the response + will provide a next_page_token that can be used to get the next page of results + in subsequent list requests. The server may return fewer than maxResults + items even if there are more available. The client should check nextPageToken + in the response to determine if there are more available. + Must be non-negative. 0 will return no results but nextPageToken may be populated. + schema: + type: integer + format: int32 + - name: pagination.pageToken + in: query + description: |- + Specifies a page token to use. Set pageToken to the nextPageToken returned + by a previous list request to get the next page of results. + next_page_token will not be returned in a response if there are no more results available. + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListSchemasResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}/schemas/{schema}/tables: + get: + tags: + - DeltaSharingService + description: List the tables in a given share's schema. + operationId: DeltaSharingService_ListSchemaTables + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + - name: schema + in: path + description: The schema name to query. It's case-insensitive. + required: true + schema: + type: string + - name: pagination.maxResults + in: query + description: |- + The maximum number of results per page that should be returned. + If the number of available results is larger than maxResults, the response + will provide a next_page_token that can be used to get the next page of results + in subsequent list requests. The server may return fewer than maxResults + items even if there are more available. The client should check nextPageToken + in the response to determine if there are more available. + Must be non-negative. 0 will return no results but nextPageToken may be populated. + schema: + type: integer + format: int32 + - name: pagination.pageToken + in: query + description: |- + Specifies a page token to use. Set pageToken to the nextPageToken returned + by a previous list request to get the next page of results. + next_page_token will not be returned in a response if there are no more results available. + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListSchemaTablesResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}/schemas/{schema}/tables/{table}/metadata: + get: + tags: + - DeltaSharingService + operationId: DeltaSharingService_GetTableMetadata + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + - name: schema + in: path + description: The schema name to query. It's case-insensitive. + required: true + schema: + type: string + - name: table + in: path + description: The table name to query. It's case-insensitive. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' + /shares/{share}/schemas/{schema}/tables/{table}/version: + get: + tags: + - DeltaSharingService + description: Get the current version for a table within a schema. + operationId: DeltaSharingService_GetTableVersion + parameters: + - name: share + in: path + description: The share name to query. It's case-insensitive. + required: true + schema: + type: string + - name: schema + in: path + description: The schema name to query. It's case-insensitive. + required: true + schema: + type: string + - name: table + in: path + description: The table name to query. It's case-insensitive. + required: true + schema: + type: string + - name: startingTimestamp + in: query + description: |- + The startingTimestamp of the query, a string in the ISO8601 format, in the UTC timezone, + such as 2022-01-01T00:00:00Z. the server needs to return the earliest table version at + or after the provided timestamp, can be earlier than the timestamp of table version 0. + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetTableVersionResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' +components: + schemas: + DeltaLogMessage: + type: object + properties: + protocol: + $ref: '#/components/schemas/ProtocolDelta' + metadata: + $ref: '#/components/schemas/MetadatDelta' + DeltaResponse: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/DeltaLogMessage' + ExternalDocumentation: + type: object + properties: + description: + type: string + description: |- + A short description of the target documentation. GFM syntax can be used for + rich text representation. + url: + type: string + description: |- + The URL for the target documentation. Value MUST be in the format + of a URL. + description: |- + `ExternalDocumentation` is a representation of OpenAPI v2 specification's + ExternalDocumentation object. + + See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject + + Example: + + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { + ... + external_docs: { + description: "More about gRPC-Gateway"; + url: "https://github.com/grpc-ecosystem/grpc-gateway"; + } + ... + }; + Format: + type: object + properties: + provider: + type: string + description: Name of the encoding for files in this table + options: + type: object + additionalProperties: + type: string + description: A map containing configuration options for the format + GetShareResponse: + type: object + properties: + share: + allOf: + - $ref: '#/components/schemas/Share' + description: The share that was requested. + GetTableVersionResponse: + type: object + properties: + version: + type: string + description: The table version that was requested. + GoogleProtobufAny: + type: object + properties: + '@type': + type: string + description: The type of the serialized message. + additionalProperties: true + description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. + GoogleProtobufValue: + description: Represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. + JSONSchema: + type: object + properties: + ref: + type: string + description: |- + Ref is used to define an external reference to include in the message. + This could be a fully qualified proto message reference, and that type must + be imported into the protofile. If no message is identified, the Ref will + be used verbatim in the output. + For example: + `ref: ".google.protobuf.Timestamp"`. + title: + type: string + description: The title of the schema. + description: + type: string + description: A short description of the schema. + default: + type: string + readOnly: + type: boolean + example: + type: string + description: |- + A free-form property to include a JSON example of this field. This is copied + verbatim to the output swagger.json. Quotes must be escaped. + This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject + multipleOf: + type: number + format: double + maximum: + type: number + description: |- + Maximum represents an inclusive upper limit for a numeric instance. The + value of MUST be a number, + format: double + exclusiveMaximum: + type: boolean + minimum: + type: number + description: |- + minimum represents an inclusive lower limit for a numeric instance. The + value of MUST be a number, + format: double + exclusiveMinimum: + type: boolean + maxLength: + type: string + minLength: + type: string + pattern: + type: string + maxItems: + type: string + minItems: + type: string + uniqueItems: + type: boolean + maxProperties: + type: string + minProperties: + type: string + required: + type: array + items: + type: string + array: + type: array + items: + type: string + description: Items in 'array' must be unique. + type: + type: array + items: + type: integer + format: enum + format: + type: string + description: '`Format`' + enum: + type: array + items: + type: string + description: Items in `enum` must be unique https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1 + fieldConfiguration: + allOf: + - $ref: '#/components/schemas/JSONSchema_FieldConfiguration' + description: Additional field level properties used when generating the OpenAPI v2 file. + extensions: + type: object + additionalProperties: + $ref: '#/components/schemas/GoogleProtobufValue' + description: |- + Custom properties that start with "x-" such as "x-foo" used to describe + extra functionality that is not covered by the standard OpenAPI Specification. + See: https://swagger.io/docs/specification/2-0/swagger-extensions/ + description: |- + `JSONSchema` represents properties from JSON Schema taken, and as used, in + the OpenAPI v2 spec. + + This includes changes made by OpenAPI v2. + + See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject + + See also: https://cswr.github.io/JsonSchema/spec/basic_types/, + https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json + + Example: + + message SimpleMessage { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema: { + title: "SimpleMessage" + description: "A simple message." + required: ["id"] + } + }; + + // Id represents the message identifier. + string id = 1; [ + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "The unique identifier of the simple message." + }]; + } + JSONSchema_FieldConfiguration: + type: object + properties: + pathParamName: + type: string + description: |- + Alternative parameter name when used as path parameter. If set, this will + be used as the complete parameter name when this field is used as a path + parameter. Use this to avoid having auto generated path parameter names + for overlapping paths. + description: |- + 'FieldConfiguration' provides additional field level properties used when generating the OpenAPI v2 file. + These properties are not defined by OpenAPIv2, but they are used to control the generation. + ListSchemaTablesResponse: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Table' + description: The tables that were requested. + nextPageToken: + type: string + description: |- + Token that can be used to retrieve the next page of tables. + An empty or missing token means that no more tables are available for retrieval. + ListSchemasResponse: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Schema' + description: The schemas that were requested. + nextPageToken: + type: string + description: |- + Token that can be used to retrieve the next page of schemas. + An empty or missing token means that no more schemas are available for retrieval. + ListShareTablesResponse: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Table' + description: The tables that were requested. + nextPageToken: + type: string + description: |- + Token that can be used to retrieve the next page of tables. + An empty or missing token means that no more tables are available for retrieval. + ListSharesResponse: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Share' + description: The shares that were requested. + nextPageToken: + type: string + description: |- + Token that can be used to retrieve the next page of shares. + An empty or missing token means that no more shares are available for retrieval. + MetadatDelta: + type: object + properties: + deltaMetadata: + allOf: + - $ref: '#/components/schemas/Metadata' + description: Metadata from Delta protocol + version: + type: string + description: |- + The table version the metadata corresponds to, returned when querying + table data with a version or timestamp parameter, or cdf query + with includeHistoricalMetadata set to true. + size: + type: string + description: The size of the table in bytes, will be returned if available in the delta log. + numFiles: + type: string + description: The number of files in the table, will be returned if available in the delta log. + Metadata: + type: object + properties: + id: + type: string + description: |- + Unique identifier for this table + Validate GUID + name: + type: string + description: User-provided identifier for this table + description: + type: string + description: User-provided description for this table + format: + allOf: + - $ref: '#/components/schemas/Format' + description: Specification of the encoding for the files stored in the table + schemaString: + type: string + description: Schema of the table + partitionColumns: + type: array + items: + type: string + description: An array containing the names of columns by which the data should be partitioned + createdTime: + type: string + description: The time when this metadata action is created, in milliseconds since the Unix epoch + options: + type: object + additionalProperties: + type: string + description: A map containing configuration options for the metadata action + MetadataParquet: + type: object + properties: + id: + type: string + description: Unique identifier for this table + name: + type: string + description: User-provided identifier for this table + description: + type: string + description: User-provided description for this table + format: + allOf: + - $ref: '#/components/schemas/Format' + description: Specification of the encoding for the files stored in the table + schemaString: + type: string + description: Schema of the table + partitionColumns: + type: array + items: + type: string + description: An array containing the names of columns by which the data should be partitioned + ParquetLogMessage: + type: object + properties: + protocol: + $ref: '#/components/schemas/ProtocolParquet' + metadata: + $ref: '#/components/schemas/MetadataParquet' + ParquetResponse: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/ParquetLogMessage' + ProtocolDelta: + type: object + properties: + minReaderVersion: + type: integer + description: |- + The minimum version of the protocol that a client must implement + in order to correctly read a Delta Lake table. + format: int32 + minWriterVersion: + type: integer + format: int32 + ProtocolParquet: + type: object + properties: + minReaderVersion: + type: integer + description: |- + The minimum version of the protocol that a client must implement + in order to correctly read a Delta Lake table. + format: int32 + QueryResponse: + type: object + properties: + parquet: + allOf: + - $ref: '#/components/schemas/ParquetResponse' + description: Parquet response format + delta: + allOf: + - $ref: '#/components/schemas/DeltaResponse' + description: Delta response format + Schema: + type: object + properties: + jsonSchema: + $ref: '#/components/schemas/JSONSchema' + discriminator: + type: string + description: |- + Adds support for polymorphism. The discriminator is the schema property + name that is used to differentiate between other schema that inherit this + schema. The property name used MUST be defined at this schema and it MUST + be in the required property list. When used, the value MUST be the name of + this schema or any schema that inherits it. + readOnly: + type: boolean + description: |- + Relevant only for Schema "properties" definitions. Declares the property as + "read only". This means that it MAY be sent as part of a response but MUST + NOT be sent as part of the request. Properties marked as readOnly being + true SHOULD NOT be in the required list of the defined schema. Default + value is false. + externalDocs: + allOf: + - $ref: '#/components/schemas/ExternalDocumentation' + description: Additional external documentation for this schema. + example: + type: string + description: |- + A free-form property to include an example of an instance for this schema in JSON. + This is copied verbatim to the output. + description: |- + `Schema` is a representation of OpenAPI v2 specification's Schema object. + + See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject + Share: + type: object + properties: + id: + type: string + description: Unique identifier for the share. + name: + type: string + description: Name of the share. + description: |- + A share is a logical grouping to share with recipients. A share can be shared with one or multiple recipients. + A recipient can access all resources in a share. A share may contain multiple schemas. + Status: + type: object + properties: + code: + type: integer + description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. + format: int32 + message: + type: string + description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. + details: + type: array + items: + $ref: '#/components/schemas/GoogleProtobufAny' + description: A list of messages that carry the error details. There is a common set of message types for APIs to use. + description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' + Table: + type: object + properties: + id: + type: string + description: Unique identifier for the table. + name: + type: string + description: The name of the table. + schema: + type: string + description: The schema name that the table belongs to. + share: + type: string + description: The share name that the table belongs to. + shareId: + type: string + description: A unique identifier for the share this table belongs to. + description: A table is a Delta Lake table or a view on top of a Delta Lake table. +tags: + - name: DeltaSharingService diff --git a/proto/delta_sharing/v1/api.proto b/proto/delta_sharing/v1/api.proto index 1f3c661..1abc9be 100644 --- a/proto/delta_sharing/v1/api.proto +++ b/proto/delta_sharing/v1/api.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package delta_sharing.v1; import "delta_sharing/v1/models.proto"; +import "delta_sharing/v1/query.proto"; import "google/api/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -37,7 +38,7 @@ service DeltaSharingService { // List the schemas in a share. rpc ListSchemas(ListSchemasRequest) returns (ListSchemasResponse) { - option (google.api.http) = {get: "/shares/{share}/schemas"}; + option (google.api.http).get = "/shares/{share}/schemas"; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "List the schemas in a share." @@ -79,15 +80,19 @@ service DeltaSharingService { // Get the current version for a table within a schema. rpc GetTableVersion(GetTableVersionRequest) returns (GetTableVersionResponse) { - option (google.api.http) = {get: "/shares/{share}/schemas/{schema}/tables/{table}/version"}; + option (google.api.http).get = "/shares/{share}/schemas/{schema}/tables/{table}/version"; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Get the current version for a table within a schema." tags: [ - "shares", + "tables", "official" ] operation_id: "GetTableVersion" }; } + + rpc GetTableMetadata(GetTableMetadataRequest) returns (QueryResponse) { + option (google.api.http).get = "/shares/{share}/schemas/{schema}/tables/{table}/metadata"; + } } diff --git a/proto/delta_sharing/v1/models.proto b/proto/delta_sharing/v1/models.proto index d1dffee..155eb48 100644 --- a/proto/delta_sharing/v1/models.proto +++ b/proto/delta_sharing/v1/models.proto @@ -121,27 +121,6 @@ message ListShareTablesResponse { optional string next_page_token = 2; } -message GetTableVersionRequest { - // The share name to query. It's case-insensitive. - string share = 1 [(buf.validate.field).string.min_len = 1]; - - // The schema name to query. It's case-insensitive. - string schema = 2 [(buf.validate.field).string.min_len = 1]; - - // The table name to query. It's case-insensitive. - string table = 3 [(buf.validate.field).string.min_len = 1]; - - // The startingTimestamp of the query, a string in the ISO8601 format, in the UTC timezone, - // such as 2022-01-01T00:00:00Z. the server needs to return the earliest table version at - // or after the provided timestamp, can be earlier than the timestamp of table version 0. - optional string starting_timestamp = 4; -} - -message GetTableVersionResponse { - // The table version that was requested. - int64 version = 1; -} - message Profile { // The file format version of the profile file. This version will be increased whenever // non-forward-compatible changes are made to the profile format. When a client is running diff --git a/proto/delta_sharing/v1/protocol.proto b/proto/delta_sharing/v1/protocol.proto new file mode 100644 index 0000000..d726f31 --- /dev/null +++ b/proto/delta_sharing/v1/protocol.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package delta_sharing.v1; + +import "buf/validate/validate.proto"; + +message Format { + // Name of the encoding for files in this table + string provider = 1; + + // A map containing configuration options for the format + map options = 2; +} + +message Metadata { + // Unique identifier for this table + // Validate GUID + string id = 1; + + // User-provided identifier for this table + optional string name = 2; + + // User-provided description for this table + optional string description = 3; + + // Specification of the encoding for the files stored in the table + Format format = 4; + + // Schema of the table + string schema_string = 5; + + // An array containing the names of columns by which the data should be partitioned + repeated string partition_columns = 6; + + // The time when this metadata action is created, in milliseconds since the Unix epoch + optional int64 created_time = 7; + + // A map containing configuration options for the metadata action + map options = 8; +} diff --git a/proto/delta_sharing/v1/query.proto b/proto/delta_sharing/v1/query.proto new file mode 100644 index 0000000..cde8df7 --- /dev/null +++ b/proto/delta_sharing/v1/query.proto @@ -0,0 +1,119 @@ +syntax = "proto3"; + +package delta_sharing.v1; + +import "buf/validate/validate.proto"; +import "delta_sharing/v1/protocol.proto"; + +message GetTableVersionRequest { + // The share name to query. It's case-insensitive. + string share = 1 [(buf.validate.field).string.min_len = 1]; + + // The schema name to query. It's case-insensitive. + string schema = 2 [(buf.validate.field).string.min_len = 1]; + + // The table name to query. It's case-insensitive. + string table = 3 [(buf.validate.field).string.min_len = 1]; + + // The startingTimestamp of the query, a string in the ISO8601 format, in the UTC timezone, + // such as 2022-01-01T00:00:00Z. the server needs to return the earliest table version at + // or after the provided timestamp, can be earlier than the timestamp of table version 0. + optional string starting_timestamp = 4; +} + +message GetTableVersionResponse { + // The table version that was requested. + int64 version = 1; +} + +message GetTableMetadataRequest { + // The share name to query. It's case-insensitive. + string share = 1 [(buf.validate.field).string.min_len = 1]; + + // The schema name to query. It's case-insensitive. + string schema = 2 [(buf.validate.field).string.min_len = 1]; + + // The table name to query. It's case-insensitive. + string table = 3 [(buf.validate.field).string.min_len = 1]; +} + +message QueryResponse { + oneof response { + // Parquet response format + ParquetResponse parquet = 1; + // Delta response format + DeltaResponse delta = 2; + } +} + +message ParquetResponse { + repeated ParquetLogMessage entries = 1; +} + +message ParquetLogMessage { + oneof entry { + ProtocolParquet protocol = 1; + MetadataParquet metadata = 2; + } +} + +message ProtocolParquet { + // The minimum version of the protocol that a client must implement + // in order to correctly read a Delta Lake table. + int32 min_reader_version = 1; +} + +message MetadataParquet { + // Unique identifier for this table + string id = 1; + + // User-provided identifier for this table + optional string name = 2; + + // User-provided description for this table + optional string description = 3; + + // Specification of the encoding for the files stored in the table + Format format = 4; + + // Schema of the table + string schema_string = 5; + + // An array containing the names of columns by which the data should be partitioned + repeated string partition_columns = 6; +} + +message DeltaResponse { + repeated DeltaLogMessage entries = 1; +} + +message DeltaLogMessage { + oneof entry { + ProtocolDelta protocol = 1; + MetadatDelta metadata = 2; + } +} + +message ProtocolDelta { + // The minimum version of the protocol that a client must implement + // in order to correctly read a Delta Lake table. + int32 min_reader_version = 1; + + int32 min_writer_version = 2; +} + +message MetadatDelta { + // Metadata from Delta protocol + Metadata delta_metadata = 1; + + // The table version the metadata corresponds to, returned when querying + // table data with a version or timestamp parameter, or cdf query + // with includeHistoricalMetadata set to true. + optional int64 version = 2; + + // The size of the table in bytes, will be returned if available in the delta log. + optional int64 size = 3; + + // The number of files in the table, will be returned if available in the delta log. + optional int64 num_files = 4; +} diff --git a/src/server/utilities/json.rs b/src/server/utilities/json.rs index 8749560..dfde7a2 100644 --- a/src/server/utilities/json.rs +++ b/src/server/utilities/json.rs @@ -492,12 +492,8 @@ impl Utility { pub fn filter(predicate: &Predicate, stats: &Stats, schema: &Schema) -> bool { match predicate { - Predicate::And(children) => { - return children.iter().all(|c| Self::filter(c, stats, schema)); - } - Predicate::Or(children) => { - return children.iter().any(|c| Self::filter(c, stats, schema)); - } + Predicate::And(children) => children.iter().all(|c| Self::filter(c, stats, schema)), + Predicate::Or(children) => children.iter().any(|c| Self::filter(c, stats, schema)), Predicate::Not(child) => !Self::filter(child, stats, schema), Predicate::IsNull { column, value_type } | Predicate::Equal {