From b367307f8ae3f733a50f0c7173968956d8dbed1d Mon Sep 17 00:00:00 2001 From: Tobias Schottdorf Date: Tue, 21 Jan 2020 16:24:36 +0100 Subject: [PATCH] server: introduce a hook for short-running migrations TODO: see if this migration is actually "short-running". That is, in a sufficiently large cluster, does this cause significant load? ---- This is a baby version of #39182 that handles only short-running migrations but is useful in itself because it allows us to migrate us fully into the following two KV below-Raft migrations: 1. use the RangeAppliedState on all ranges 2. use the unreplicated TruncatedState on all ranges These two migrations have been around for a while and it has been getting in the way of things. While ideally we introduce #39182 in the near future and use it to address a larger class of migration concerns, this PR serves as a starting point and work done on #39182 should be able to absorb this PR with relative ease. With this PR, legacy code related to 1) and 2) above can be removed from `master` once the 20.1 branch is cut, i.e. roughly in April 2020. The main ingredients in this PR are a) introduce a hook that is called during `SET CLUSTER SETTING version`, after the change has been validated but before it is made. b) introduce a KV-level `Migrate` ranged write command that triggers the migrations for 1) and 2) above. It is called from the hook for all of the keyspace. c) before returning to the client, `Migrate` waits for the command to be durably applied on all followers. Trying to get this 100% correct has proven tricky, perhaps foreshadowing similar issues that expect us once we try #39182 in earnest. For one, the mechanism only reaches replicas that members of the raft group, that is, it won't touch replicas which are gc'able. For the migrations at hand this means that in 20.2 there may - in theory - still be replicas that have a replicated truncated state. I believe that our recent efforts around not re-using replicas across replicaIDs has made sure that this isn't an issue for this particular migration, but in general it will have to remain on the radar. Similarly, it seems hard to prove conclusively that no snapshot is in-flight that would set up a new follower with a state predating the explicit migration, though it would be exceptionally rare in practice. Release note (general change): version upgrades now perform maintenance duties that may slightly delay the `SET CLUSTER SETTING version` command and may cause a small amount of additional load on the cluster while an upgrade is being finalized. --- c-deps/libroach/protos/roachpb/api.pb.cc | 597 ++++- c-deps/libroach/protos/roachpb/api.pb.h | 563 +++- pkg/keys/constants.go | 5 - pkg/keys/doc.go | 7 +- pkg/keys/keys.go | 10 - pkg/roachpb/api.go | 8 + pkg/roachpb/api.pb.go | 2374 ++++++++++------- pkg/roachpb/api.proto | 19 + pkg/roachpb/batch_generated.go | 25 +- pkg/roachpb/metadata.pb.go | 237 +- pkg/roachpb/metadata.proto | 1 + pkg/roachpb/method.go | 3 + pkg/roachpb/method_string.go | 5 +- pkg/server/node.go | 10 +- pkg/server/node_test.go | 10 +- pkg/server/server.go | 15 +- pkg/settings/cluster/cluster_version.pb.go | 44 +- pkg/settings/cluster/cluster_version.proto | 1 + pkg/settings/cluster/cockroach_versions.go | 12 + pkg/sql/exec_util.go | 6 + pkg/sql/set_cluster_setting.go | 20 +- pkg/storage/batcheval/cmd_migrate.go | 78 + pkg/storage/below_raft_protos_test.go | 7 + pkg/storage/client_replica_test.go | 85 + pkg/storage/client_test.go | 7 +- .../replica_application_state_machine.go | 1 + pkg/storage/replica_proposal.go | 14 +- pkg/storage/replica_raft.go | 5 + pkg/storage/replica_raft_truncation_test.go | 2 +- pkg/storage/replica_test.go | 1 + pkg/storage/replica_write.go | 20 + pkg/storage/stateloader/initial.go | 4 +- pkg/storage/stateloader/stateloader.go | 5 +- pkg/storage/store_bootstrap.go | 4 + pkg/storage/store_test.go | 2 + pkg/storage/testing_knobs.go | 5 + .../localtestcluster/local_test_cluster.go | 1 + 37 files changed, 3120 insertions(+), 1093 deletions(-) create mode 100644 pkg/storage/batcheval/cmd_migrate.go diff --git a/c-deps/libroach/protos/roachpb/api.pb.cc b/c-deps/libroach/protos/roachpb/api.pb.cc index 0210351ed358..630297e053c4 100644 --- a/c-deps/libroach/protos/roachpb/api.pb.cc +++ b/c-deps/libroach/protos/roachpb/api.pb.cc @@ -58,6 +58,7 @@ extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobu extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_InitPutResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_LeaseInfoRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MergeResponse; +extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MigrateResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PutResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_QueryIntentResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_RangeFeedError; @@ -95,6 +96,7 @@ extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobu extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_InitPutRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_LeaseInfoResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_MergeRequest; +extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_MigrateRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PushTxnResponse; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PutRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_QueryIntentRequest; @@ -120,8 +122,8 @@ extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobu extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_ResolveIntentRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_ResponseHeader; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_SubsumeResponse; -extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<43> scc_info_ResponseUnion; -extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<44> scc_info_RequestUnion; +extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<44> scc_info_ResponseUnion; +extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<45> scc_info_RequestUnion; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_AdminChangeReplicasRequest; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_BatchResponse_Header; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fapi_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_ExportRequest; @@ -147,6 +149,7 @@ extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2ferrors_2eproto ::google::prot namespace protobuf_roachpb_2fmetadata_2eproto { extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fmetadata_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ReplicaDescriptor; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fmetadata_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ReplicationTarget; +extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fmetadata_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Version; extern PROTOBUF_INTERNAL_EXPORT_protobuf_roachpb_2fmetadata_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_RangeDescriptor; } // namespace protobuf_roachpb_2fmetadata_2eproto namespace protobuf_storage_2fengine_2fenginepb_2fmvcc3_2eproto { @@ -640,6 +643,16 @@ class AdminScatterResponseDefaultTypeInternal { ::google::protobuf::internal::ExplicitlyConstructed _instance; } _AdminScatterResponse_default_instance_; +class MigrateRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed + _instance; +} _MigrateRequest_default_instance_; +class MigrateResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed + _instance; +} _MigrateResponse_default_instance_; class AdminVerifyProtectedTimestampRequestDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed @@ -748,6 +761,7 @@ class RequestUnionDefaultTypeInternal { const ::cockroach::roachpb::SubsumeRequest* subsume_; const ::cockroach::roachpb::RangeStatsRequest* range_stats_; const ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* admin_verify_protected_timestamp_; + const ::cockroach::roachpb::MigrateRequest* migrate_; } _RequestUnion_default_instance_; class ResponseUnionDefaultTypeInternal { public: @@ -796,6 +810,7 @@ class ResponseUnionDefaultTypeInternal { const ::cockroach::roachpb::SubsumeResponse* subsume_; const ::cockroach::roachpb::RangeStatsResponse* range_stats_; const ::cockroach::roachpb::AdminVerifyProtectedTimestampResponse* admin_verify_protected_timestamp_; + const ::cockroach::roachpb::MigrateResponse* migrate_; } _ResponseUnion_default_instance_; class HeaderDefaultTypeInternal { public: @@ -2323,6 +2338,37 @@ ::google::protobuf::internal::SCCInfo<2> scc_info_AdminScatterResponse = &protobuf_roachpb_2fapi_2eproto::scc_info_ResponseHeader.base, &protobuf_roachpb_2fapi_2eproto::scc_info_AdminScatterResponse_Range.base,}}; +static void InitDefaultsMigrateRequest() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::cockroach::roachpb::_MigrateRequest_default_instance_; + new (ptr) ::cockroach::roachpb::MigrateRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::cockroach::roachpb::MigrateRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_MigrateRequest = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsMigrateRequest}, { + &protobuf_roachpb_2fapi_2eproto::scc_info_RequestHeader.base, + &protobuf_roachpb_2fmetadata_2eproto::scc_info_Version.base,}}; + +static void InitDefaultsMigrateResponse() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::cockroach::roachpb::_MigrateResponse_default_instance_; + new (ptr) ::cockroach::roachpb::MigrateResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::cockroach::roachpb::MigrateResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_MigrateResponse = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMigrateResponse}, { + &protobuf_roachpb_2fapi_2eproto::scc_info_ResponseHeader.base,}}; + static void InitDefaultsAdminVerifyProtectedTimestampRequest() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -2523,8 +2569,8 @@ static void InitDefaultsRequestUnion() { ::cockroach::roachpb::RequestUnion::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<44> scc_info_RequestUnion = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 44, InitDefaultsRequestUnion}, { +::google::protobuf::internal::SCCInfo<45> scc_info_RequestUnion = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 45, InitDefaultsRequestUnion}, { &protobuf_roachpb_2fapi_2eproto::scc_info_GetRequest.base, &protobuf_roachpb_2fapi_2eproto::scc_info_PutRequest.base, &protobuf_roachpb_2fapi_2eproto::scc_info_ConditionalPutRequest.base, @@ -2568,7 +2614,8 @@ ::google::protobuf::internal::SCCInfo<44> scc_info_RequestUnion = &protobuf_roachpb_2fapi_2eproto::scc_info_RefreshRangeRequest.base, &protobuf_roachpb_2fapi_2eproto::scc_info_SubsumeRequest.base, &protobuf_roachpb_2fapi_2eproto::scc_info_RangeStatsRequest.base, - &protobuf_roachpb_2fapi_2eproto::scc_info_AdminVerifyProtectedTimestampRequest.base,}}; + &protobuf_roachpb_2fapi_2eproto::scc_info_AdminVerifyProtectedTimestampRequest.base, + &protobuf_roachpb_2fapi_2eproto::scc_info_MigrateRequest.base,}}; static void InitDefaultsResponseUnion() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -2581,8 +2628,8 @@ static void InitDefaultsResponseUnion() { ::cockroach::roachpb::ResponseUnion::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<43> scc_info_ResponseUnion = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 43, InitDefaultsResponseUnion}, { +::google::protobuf::internal::SCCInfo<44> scc_info_ResponseUnion = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 44, InitDefaultsResponseUnion}, { &protobuf_roachpb_2fapi_2eproto::scc_info_GetResponse.base, &protobuf_roachpb_2fapi_2eproto::scc_info_PutResponse.base, &protobuf_roachpb_2fapi_2eproto::scc_info_ConditionalPutResponse.base, @@ -2625,7 +2672,8 @@ ::google::protobuf::internal::SCCInfo<43> scc_info_ResponseUnion = &protobuf_roachpb_2fapi_2eproto::scc_info_RefreshRangeResponse.base, &protobuf_roachpb_2fapi_2eproto::scc_info_SubsumeResponse.base, &protobuf_roachpb_2fapi_2eproto::scc_info_RangeStatsResponse.base, - &protobuf_roachpb_2fapi_2eproto::scc_info_AdminVerifyProtectedTimestampResponse.base,}}; + &protobuf_roachpb_2fapi_2eproto::scc_info_AdminVerifyProtectedTimestampResponse.base, + &protobuf_roachpb_2fapi_2eproto::scc_info_MigrateResponse.base,}}; static void InitDefaultsHeader() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -2870,6 +2918,8 @@ void InitDefaults() { ::google::protobuf::internal::InitSCC(&scc_info_AdminScatterRequest.base); ::google::protobuf::internal::InitSCC(&scc_info_AdminScatterResponse_Range.base); ::google::protobuf::internal::InitSCC(&scc_info_AdminScatterResponse.base); + ::google::protobuf::internal::InitSCC(&scc_info_MigrateRequest.base); + ::google::protobuf::internal::InitSCC(&scc_info_MigrateResponse.base); ::google::protobuf::internal::InitSCC(&scc_info_AdminVerifyProtectedTimestampRequest.base); ::google::protobuf::internal::InitSCC(&scc_info_AdminVerifyProtectedTimestampResponse.base); ::google::protobuf::internal::InitSCC(&scc_info_AddSSTableRequest.base); @@ -27159,6 +27209,427 @@ ::std::string AdminScatterResponse::GetTypeName() const { } +// =================================================================== + +void MigrateRequest::InitAsDefaultInstance() { + ::cockroach::roachpb::_MigrateRequest_default_instance_._instance.get_mutable()->header_ = const_cast< ::cockroach::roachpb::RequestHeader*>( + ::cockroach::roachpb::RequestHeader::internal_default_instance()); + ::cockroach::roachpb::_MigrateRequest_default_instance_._instance.get_mutable()->newversion_ = const_cast< ::cockroach::roachpb::Version*>( + ::cockroach::roachpb::Version::internal_default_instance()); +} +void MigrateRequest::clear_newversion() { + if (GetArenaNoVirtual() == NULL && newversion_ != NULL) { + delete newversion_; + } + newversion_ = NULL; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int MigrateRequest::kHeaderFieldNumber; +const int MigrateRequest::kNewVersionFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +MigrateRequest::MigrateRequest() + : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) { + ::google::protobuf::internal::InitSCC( + &protobuf_roachpb_2fapi_2eproto::scc_info_MigrateRequest.base); + SharedCtor(); + // @@protoc_insertion_point(constructor:cockroach.roachpb.MigrateRequest) +} +MigrateRequest::MigrateRequest(const MigrateRequest& from) + : ::google::protobuf::MessageLite(), + _internal_metadata_(NULL) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_header()) { + header_ = new ::cockroach::roachpb::RequestHeader(*from.header_); + } else { + header_ = NULL; + } + if (from.has_newversion()) { + newversion_ = new ::cockroach::roachpb::Version(*from.newversion_); + } else { + newversion_ = NULL; + } + // @@protoc_insertion_point(copy_constructor:cockroach.roachpb.MigrateRequest) +} + +void MigrateRequest::SharedCtor() { + ::memset(&header_, 0, static_cast( + reinterpret_cast(&newversion_) - + reinterpret_cast(&header_)) + sizeof(newversion_)); +} + +MigrateRequest::~MigrateRequest() { + // @@protoc_insertion_point(destructor:cockroach.roachpb.MigrateRequest) + SharedDtor(); +} + +void MigrateRequest::SharedDtor() { + if (this != internal_default_instance()) delete header_; + if (this != internal_default_instance()) delete newversion_; +} + +void MigrateRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const MigrateRequest& MigrateRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&protobuf_roachpb_2fapi_2eproto::scc_info_MigrateRequest.base); + return *internal_default_instance(); +} + + +void MigrateRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:cockroach.roachpb.MigrateRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + if (GetArenaNoVirtual() == NULL && header_ != NULL) { + delete header_; + } + header_ = NULL; + if (GetArenaNoVirtual() == NULL && newversion_ != NULL) { + delete newversion_; + } + newversion_ = NULL; + _internal_metadata_.Clear(); +} + +bool MigrateRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter( + &_internal_metadata_); + ::google::protobuf::io::StringOutputStream unknown_fields_output( + unknown_fields_setter.buffer()); + ::google::protobuf::io::CodedOutputStream unknown_fields_stream( + &unknown_fields_output, false); + // @@protoc_insertion_point(parse_start:cockroach.roachpb.MigrateRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_header())); + } else { + goto handle_unusual; + } + break; + } + + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_newversion())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField( + input, tag, &unknown_fields_stream)); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:cockroach.roachpb.MigrateRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:cockroach.roachpb.MigrateRequest) + return false; +#undef DO_ +} + +void MigrateRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:cockroach.roachpb.MigrateRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (this->has_header()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 1, this->_internal_header(), output); + } + + if (this->has_newversion()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 2, this->_internal_newversion(), output); + } + + output->WriteRaw((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).data(), + static_cast((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size())); + // @@protoc_insertion_point(serialize_end:cockroach.roachpb.MigrateRequest) +} + +size_t MigrateRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:cockroach.roachpb.MigrateRequest) + size_t total_size = 0; + + total_size += (::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size(); + + if (this->has_header()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *header_); + } + + if (this->has_newversion()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *newversion_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void MigrateRequest::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void MigrateRequest::MergeFrom(const MigrateRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:cockroach.roachpb.MigrateRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_header()) { + mutable_header()->::cockroach::roachpb::RequestHeader::MergeFrom(from.header()); + } + if (from.has_newversion()) { + mutable_newversion()->::cockroach::roachpb::Version::MergeFrom(from.newversion()); + } +} + +void MigrateRequest::CopyFrom(const MigrateRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:cockroach.roachpb.MigrateRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool MigrateRequest::IsInitialized() const { + return true; +} + +void MigrateRequest::Swap(MigrateRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void MigrateRequest::InternalSwap(MigrateRequest* other) { + using std::swap; + swap(header_, other->header_); + swap(newversion_, other->newversion_); + _internal_metadata_.Swap(&other->_internal_metadata_); +} + +::std::string MigrateRequest::GetTypeName() const { + return "cockroach.roachpb.MigrateRequest"; +} + + +// =================================================================== + +void MigrateResponse::InitAsDefaultInstance() { + ::cockroach::roachpb::_MigrateResponse_default_instance_._instance.get_mutable()->header_ = const_cast< ::cockroach::roachpb::ResponseHeader*>( + ::cockroach::roachpb::ResponseHeader::internal_default_instance()); +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int MigrateResponse::kHeaderFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +MigrateResponse::MigrateResponse() + : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) { + ::google::protobuf::internal::InitSCC( + &protobuf_roachpb_2fapi_2eproto::scc_info_MigrateResponse.base); + SharedCtor(); + // @@protoc_insertion_point(constructor:cockroach.roachpb.MigrateResponse) +} +MigrateResponse::MigrateResponse(const MigrateResponse& from) + : ::google::protobuf::MessageLite(), + _internal_metadata_(NULL) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_header()) { + header_ = new ::cockroach::roachpb::ResponseHeader(*from.header_); + } else { + header_ = NULL; + } + // @@protoc_insertion_point(copy_constructor:cockroach.roachpb.MigrateResponse) +} + +void MigrateResponse::SharedCtor() { + header_ = NULL; +} + +MigrateResponse::~MigrateResponse() { + // @@protoc_insertion_point(destructor:cockroach.roachpb.MigrateResponse) + SharedDtor(); +} + +void MigrateResponse::SharedDtor() { + if (this != internal_default_instance()) delete header_; +} + +void MigrateResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const MigrateResponse& MigrateResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&protobuf_roachpb_2fapi_2eproto::scc_info_MigrateResponse.base); + return *internal_default_instance(); +} + + +void MigrateResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:cockroach.roachpb.MigrateResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + if (GetArenaNoVirtual() == NULL && header_ != NULL) { + delete header_; + } + header_ = NULL; + _internal_metadata_.Clear(); +} + +bool MigrateResponse::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter( + &_internal_metadata_); + ::google::protobuf::io::StringOutputStream unknown_fields_output( + unknown_fields_setter.buffer()); + ::google::protobuf::io::CodedOutputStream unknown_fields_stream( + &unknown_fields_output, false); + // @@protoc_insertion_point(parse_start:cockroach.roachpb.MigrateResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_header())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField( + input, tag, &unknown_fields_stream)); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:cockroach.roachpb.MigrateResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:cockroach.roachpb.MigrateResponse) + return false; +#undef DO_ +} + +void MigrateResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:cockroach.roachpb.MigrateResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (this->has_header()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 1, this->_internal_header(), output); + } + + output->WriteRaw((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).data(), + static_cast((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size())); + // @@protoc_insertion_point(serialize_end:cockroach.roachpb.MigrateResponse) +} + +size_t MigrateResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:cockroach.roachpb.MigrateResponse) + size_t total_size = 0; + + total_size += (::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size(); + + if (this->has_header()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *header_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void MigrateResponse::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void MigrateResponse::MergeFrom(const MigrateResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:cockroach.roachpb.MigrateResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_header()) { + mutable_header()->::cockroach::roachpb::ResponseHeader::MergeFrom(from.header()); + } +} + +void MigrateResponse::CopyFrom(const MigrateResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:cockroach.roachpb.MigrateResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool MigrateResponse::IsInitialized() const { + return true; +} + +void MigrateResponse::Swap(MigrateResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void MigrateResponse::InternalSwap(MigrateResponse* other) { + using std::swap; + swap(header_, other->header_); + _internal_metadata_.Swap(&other->_internal_metadata_); +} + +::std::string MigrateResponse::GetTypeName() const { + return "cockroach.roachpb.MigrateResponse"; +} + + // =================================================================== void AdminVerifyProtectedTimestampRequest::InitAsDefaultInstance() { @@ -30760,6 +31231,20 @@ void RequestUnion::set_allocated_admin_verify_protected_timestamp(::cockroach::r } // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.RequestUnion.admin_verify_protected_timestamp) } +void RequestUnion::set_allocated_migrate(::cockroach::roachpb::MigrateRequest* migrate) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_value(); + if (migrate) { + ::google::protobuf::Arena* submessage_arena = NULL; + if (message_arena != submessage_arena) { + migrate = ::google::protobuf::internal::GetOwnedMessage( + message_arena, migrate, submessage_arena); + } + set_has_migrate(); + value_.migrate_ = migrate; + } + // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.RequestUnion.migrate) +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int RequestUnion::kGetFieldNumber; const int RequestUnion::kPutFieldNumber; @@ -30805,6 +31290,7 @@ const int RequestUnion::kRefreshRangeFieldNumber; const int RequestUnion::kSubsumeFieldNumber; const int RequestUnion::kRangeStatsFieldNumber; const int RequestUnion::kAdminVerifyProtectedTimestampFieldNumber; +const int RequestUnion::kMigrateFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 RequestUnion::RequestUnion() @@ -30996,6 +31482,10 @@ RequestUnion::RequestUnion(const RequestUnion& from) mutable_admin_verify_protected_timestamp()->::cockroach::roachpb::AdminVerifyProtectedTimestampRequest::MergeFrom(from.admin_verify_protected_timestamp()); break; } + case kMigrate: { + mutable_migrate()->::cockroach::roachpb::MigrateRequest::MergeFrom(from.migrate()); + break; + } case VALUE_NOT_SET: { break; } @@ -31206,6 +31696,10 @@ void RequestUnion::clear_value() { delete value_.admin_verify_protected_timestamp_; break; } + case kMigrate: { + delete value_.migrate_; + break; + } case VALUE_NOT_SET: { break; } @@ -31768,6 +32262,18 @@ bool RequestUnion::MergePartialFromCodedStream( break; } + // .cockroach.roachpb.MigrateRequest migrate = 50; + case 50: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(146u /* 402 & 0xFF */)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_migrate())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -32058,6 +32564,12 @@ void RequestUnion::SerializeWithCachedSizes( 49, this->_internal_admin_verify_protected_timestamp(), output); } + // .cockroach.roachpb.MigrateRequest migrate = 50; + if (has_migrate()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 50, this->_internal_migrate(), output); + } + output->WriteRaw((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).data(), static_cast((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size())); // @@protoc_insertion_point(serialize_end:cockroach.roachpb.RequestUnion) @@ -32378,6 +32890,13 @@ size_t RequestUnion::ByteSizeLong() const { *value_.admin_verify_protected_timestamp_); break; } + // .cockroach.roachpb.MigrateRequest migrate = 50; + case kMigrate: { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *value_.migrate_); + break; + } case VALUE_NOT_SET: { break; } @@ -32576,6 +33095,10 @@ void RequestUnion::MergeFrom(const RequestUnion& from) { mutable_admin_verify_protected_timestamp()->::cockroach::roachpb::AdminVerifyProtectedTimestampRequest::MergeFrom(from.admin_verify_protected_timestamp()); break; } + case kMigrate: { + mutable_migrate()->::cockroach::roachpb::MigrateRequest::MergeFrom(from.migrate()); + break; + } case VALUE_NOT_SET: { break; } @@ -33215,6 +33738,20 @@ void ResponseUnion::set_allocated_admin_verify_protected_timestamp(::cockroach:: } // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.ResponseUnion.admin_verify_protected_timestamp) } +void ResponseUnion::set_allocated_migrate(::cockroach::roachpb::MigrateResponse* migrate) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_value(); + if (migrate) { + ::google::protobuf::Arena* submessage_arena = NULL; + if (message_arena != submessage_arena) { + migrate = ::google::protobuf::internal::GetOwnedMessage( + message_arena, migrate, submessage_arena); + } + set_has_migrate(); + value_.migrate_ = migrate; + } + // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.ResponseUnion.migrate) +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int ResponseUnion::kGetFieldNumber; const int ResponseUnion::kPutFieldNumber; @@ -33259,6 +33796,7 @@ const int ResponseUnion::kRefreshRangeFieldNumber; const int ResponseUnion::kSubsumeFieldNumber; const int ResponseUnion::kRangeStatsFieldNumber; const int ResponseUnion::kAdminVerifyProtectedTimestampFieldNumber; +const int ResponseUnion::kMigrateFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 ResponseUnion::ResponseUnion() @@ -33446,6 +33984,10 @@ ResponseUnion::ResponseUnion(const ResponseUnion& from) mutable_admin_verify_protected_timestamp()->::cockroach::roachpb::AdminVerifyProtectedTimestampResponse::MergeFrom(from.admin_verify_protected_timestamp()); break; } + case kMigrate: { + mutable_migrate()->::cockroach::roachpb::MigrateResponse::MergeFrom(from.migrate()); + break; + } case VALUE_NOT_SET: { break; } @@ -33652,6 +34194,10 @@ void ResponseUnion::clear_value() { delete value_.admin_verify_protected_timestamp_; break; } + case kMigrate: { + delete value_.migrate_; + break; + } case VALUE_NOT_SET: { break; } @@ -34202,6 +34748,18 @@ bool ResponseUnion::MergePartialFromCodedStream( break; } + // .cockroach.roachpb.MigrateResponse migrate = 50; + case 50: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(146u /* 402 & 0xFF */)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_migrate())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -34486,6 +35044,12 @@ void ResponseUnion::SerializeWithCachedSizes( 49, this->_internal_admin_verify_protected_timestamp(), output); } + // .cockroach.roachpb.MigrateResponse migrate = 50; + if (has_migrate()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 50, this->_internal_migrate(), output); + } + output->WriteRaw((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).data(), static_cast((::google::protobuf::internal::GetProto3PreserveUnknownsDefault() ? _internal_metadata_.unknown_fields() : _internal_metadata_.default_instance()).size())); // @@protoc_insertion_point(serialize_end:cockroach.roachpb.ResponseUnion) @@ -34799,6 +35363,13 @@ size_t ResponseUnion::ByteSizeLong() const { *value_.admin_verify_protected_timestamp_); break; } + // .cockroach.roachpb.MigrateResponse migrate = 50; + case kMigrate: { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *value_.migrate_); + break; + } case VALUE_NOT_SET: { break; } @@ -34993,6 +35564,10 @@ void ResponseUnion::MergeFrom(const ResponseUnion& from) { mutable_admin_verify_protected_timestamp()->::cockroach::roachpb::AdminVerifyProtectedTimestampResponse::MergeFrom(from.admin_verify_protected_timestamp()); break; } + case kMigrate: { + mutable_migrate()->::cockroach::roachpb::MigrateResponse::MergeFrom(from.migrate()); + break; + } case VALUE_NOT_SET: { break; } @@ -37978,6 +38553,12 @@ template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::cockroach::roachpb::AdminScatter template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::cockroach::roachpb::AdminScatterResponse* Arena::CreateMaybeMessage< ::cockroach::roachpb::AdminScatterResponse >(Arena* arena) { return Arena::CreateInternal< ::cockroach::roachpb::AdminScatterResponse >(arena); } +template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::cockroach::roachpb::MigrateRequest* Arena::CreateMaybeMessage< ::cockroach::roachpb::MigrateRequest >(Arena* arena) { + return Arena::CreateInternal< ::cockroach::roachpb::MigrateRequest >(arena); +} +template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::cockroach::roachpb::MigrateResponse* Arena::CreateMaybeMessage< ::cockroach::roachpb::MigrateResponse >(Arena* arena) { + return Arena::CreateInternal< ::cockroach::roachpb::MigrateResponse >(arena); +} template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* Arena::CreateMaybeMessage< ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest >(Arena* arena) { return Arena::CreateInternal< ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest >(arena); } diff --git a/c-deps/libroach/protos/roachpb/api.pb.h b/c-deps/libroach/protos/roachpb/api.pb.h index f058e5a20a9e..0724aff313ec 100644 --- a/c-deps/libroach/protos/roachpb/api.pb.h +++ b/c-deps/libroach/protos/roachpb/api.pb.h @@ -48,7 +48,7 @@ namespace protobuf_roachpb_2fapi_2eproto { struct TableStruct { static const ::google::protobuf::internal::ParseTableField entries[]; static const ::google::protobuf::internal::AuxillaryParseTableField aux[]; - static const ::google::protobuf::internal::ParseTable schema[118]; + static const ::google::protobuf::internal::ParseTable schema[120]; static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; static const ::google::protobuf::uint32 offsets[]; @@ -263,6 +263,12 @@ extern MergeRequestDefaultTypeInternal _MergeRequest_default_instance_; class MergeResponse; class MergeResponseDefaultTypeInternal; extern MergeResponseDefaultTypeInternal _MergeResponse_default_instance_; +class MigrateRequest; +class MigrateRequestDefaultTypeInternal; +extern MigrateRequestDefaultTypeInternal _MigrateRequest_default_instance_; +class MigrateResponse; +class MigrateResponseDefaultTypeInternal; +extern MigrateResponseDefaultTypeInternal _MigrateResponse_default_instance_; class PushTxnRequest; class PushTxnRequestDefaultTypeInternal; extern PushTxnRequestDefaultTypeInternal _PushTxnRequest_default_instance_; @@ -483,6 +489,8 @@ template<> ::cockroach::roachpb::LeaseInfoRequest* Arena::CreateMaybeMessage<::c template<> ::cockroach::roachpb::LeaseInfoResponse* Arena::CreateMaybeMessage<::cockroach::roachpb::LeaseInfoResponse>(Arena*); template<> ::cockroach::roachpb::MergeRequest* Arena::CreateMaybeMessage<::cockroach::roachpb::MergeRequest>(Arena*); template<> ::cockroach::roachpb::MergeResponse* Arena::CreateMaybeMessage<::cockroach::roachpb::MergeResponse>(Arena*); +template<> ::cockroach::roachpb::MigrateRequest* Arena::CreateMaybeMessage<::cockroach::roachpb::MigrateRequest>(Arena*); +template<> ::cockroach::roachpb::MigrateResponse* Arena::CreateMaybeMessage<::cockroach::roachpb::MigrateResponse>(Arena*); template<> ::cockroach::roachpb::PushTxnRequest* Arena::CreateMaybeMessage<::cockroach::roachpb::PushTxnRequest>(Arena*); template<> ::cockroach::roachpb::PushTxnResponse* Arena::CreateMaybeMessage<::cockroach::roachpb::PushTxnResponse>(Arena*); template<> ::cockroach::roachpb::PutRequest* Arena::CreateMaybeMessage<::cockroach::roachpb::PutRequest>(Arena*); @@ -12528,6 +12536,230 @@ class AdminScatterResponse : public ::google::protobuf::MessageLite /* @@protoc_ }; // ------------------------------------------------------------------- +class MigrateRequest : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:cockroach.roachpb.MigrateRequest) */ { + public: + MigrateRequest(); + virtual ~MigrateRequest(); + + MigrateRequest(const MigrateRequest& from); + + inline MigrateRequest& operator=(const MigrateRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + MigrateRequest(MigrateRequest&& from) noexcept + : MigrateRequest() { + *this = ::std::move(from); + } + + inline MigrateRequest& operator=(MigrateRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const MigrateRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const MigrateRequest* internal_default_instance() { + return reinterpret_cast( + &_MigrateRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 95; + + void Swap(MigrateRequest* other); + friend void swap(MigrateRequest& a, MigrateRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline MigrateRequest* New() const final { + return CreateMaybeMessage(NULL); + } + + MigrateRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from) + final; + void CopyFrom(const MigrateRequest& from); + void MergeFrom(const MigrateRequest& from); + void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + void DiscardUnknownFields(); + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + void InternalSwap(MigrateRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return NULL; + } + inline void* MaybeArenaPtr() const { + return NULL; + } + public: + + ::std::string GetTypeName() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + bool has_header() const; + void clear_header(); + static const int kHeaderFieldNumber = 1; + private: + const ::cockroach::roachpb::RequestHeader& _internal_header() const; + public: + const ::cockroach::roachpb::RequestHeader& header() const; + ::cockroach::roachpb::RequestHeader* release_header(); + ::cockroach::roachpb::RequestHeader* mutable_header(); + void set_allocated_header(::cockroach::roachpb::RequestHeader* header); + + bool has_newversion() const; + void clear_newversion(); + static const int kNewVersionFieldNumber = 2; + private: + const ::cockroach::roachpb::Version& _internal_newversion() const; + public: + const ::cockroach::roachpb::Version& newversion() const; + ::cockroach::roachpb::Version* release_newversion(); + ::cockroach::roachpb::Version* mutable_newversion(); + void set_allocated_newversion(::cockroach::roachpb::Version* newversion); + + // @@protoc_insertion_point(class_scope:cockroach.roachpb.MigrateRequest) + private: + + ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_; + ::cockroach::roachpb::RequestHeader* header_; + ::cockroach::roachpb::Version* newversion_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::protobuf_roachpb_2fapi_2eproto::TableStruct; +}; +// ------------------------------------------------------------------- + +class MigrateResponse : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:cockroach.roachpb.MigrateResponse) */ { + public: + MigrateResponse(); + virtual ~MigrateResponse(); + + MigrateResponse(const MigrateResponse& from); + + inline MigrateResponse& operator=(const MigrateResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + MigrateResponse(MigrateResponse&& from) noexcept + : MigrateResponse() { + *this = ::std::move(from); + } + + inline MigrateResponse& operator=(MigrateResponse&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const MigrateResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const MigrateResponse* internal_default_instance() { + return reinterpret_cast( + &_MigrateResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 96; + + void Swap(MigrateResponse* other); + friend void swap(MigrateResponse& a, MigrateResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline MigrateResponse* New() const final { + return CreateMaybeMessage(NULL); + } + + MigrateResponse* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from) + final; + void CopyFrom(const MigrateResponse& from); + void MergeFrom(const MigrateResponse& from); + void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + void DiscardUnknownFields(); + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + void InternalSwap(MigrateResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return NULL; + } + inline void* MaybeArenaPtr() const { + return NULL; + } + public: + + ::std::string GetTypeName() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + bool has_header() const; + void clear_header(); + static const int kHeaderFieldNumber = 1; + private: + const ::cockroach::roachpb::ResponseHeader& _internal_header() const; + public: + const ::cockroach::roachpb::ResponseHeader& header() const; + ::cockroach::roachpb::ResponseHeader* release_header(); + ::cockroach::roachpb::ResponseHeader* mutable_header(); + void set_allocated_header(::cockroach::roachpb::ResponseHeader* header); + + // @@protoc_insertion_point(class_scope:cockroach.roachpb.MigrateResponse) + private: + + ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_; + ::cockroach::roachpb::ResponseHeader* header_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::protobuf_roachpb_2fapi_2eproto::TableStruct; +}; +// ------------------------------------------------------------------- + class AdminVerifyProtectedTimestampRequest : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:cockroach.roachpb.AdminVerifyProtectedTimestampRequest) */ { public: AdminVerifyProtectedTimestampRequest(); @@ -12562,7 +12794,7 @@ class AdminVerifyProtectedTimestampRequest : public ::google::protobuf::MessageL &_AdminVerifyProtectedTimestampRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 95; + 97; void Swap(AdminVerifyProtectedTimestampRequest* other); friend void swap(AdminVerifyProtectedTimestampRequest& a, AdminVerifyProtectedTimestampRequest& b) { @@ -12706,7 +12938,7 @@ class AdminVerifyProtectedTimestampResponse : public ::google::protobuf::Message &_AdminVerifyProtectedTimestampResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 96; + 98; void Swap(AdminVerifyProtectedTimestampResponse* other); friend void swap(AdminVerifyProtectedTimestampResponse& a, AdminVerifyProtectedTimestampResponse& b) { @@ -12831,7 +13063,7 @@ class AddSSTableRequest : public ::google::protobuf::MessageLite /* @@protoc_ins &_AddSSTableRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 97; + 99; void Swap(AddSSTableRequest* other); friend void swap(AddSSTableRequest& a, AddSSTableRequest& b) { @@ -12978,7 +13210,7 @@ class AddSSTableResponse : public ::google::protobuf::MessageLite /* @@protoc_in &_AddSSTableResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 98; + 100; void Swap(AddSSTableResponse* other); friend void swap(AddSSTableResponse& a, AddSSTableResponse& b) { @@ -13084,7 +13316,7 @@ class RefreshRequest : public ::google::protobuf::MessageLite /* @@protoc_insert &_RefreshRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 99; + 101; void Swap(RefreshRequest* other); friend void swap(RefreshRequest& a, RefreshRequest& b) { @@ -13202,7 +13434,7 @@ class RefreshResponse : public ::google::protobuf::MessageLite /* @@protoc_inser &_RefreshResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 100; + 102; void Swap(RefreshResponse* other); friend void swap(RefreshResponse& a, RefreshResponse& b) { @@ -13308,7 +13540,7 @@ class RefreshRangeRequest : public ::google::protobuf::MessageLite /* @@protoc_i &_RefreshRangeRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 101; + 103; void Swap(RefreshRangeRequest* other); friend void swap(RefreshRangeRequest& a, RefreshRangeRequest& b) { @@ -13426,7 +13658,7 @@ class RefreshRangeResponse : public ::google::protobuf::MessageLite /* @@protoc_ &_RefreshRangeResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 102; + 104; void Swap(RefreshRangeResponse* other); friend void swap(RefreshRangeResponse& a, RefreshRangeResponse& b) { @@ -13532,7 +13764,7 @@ class SubsumeRequest : public ::google::protobuf::MessageLite /* @@protoc_insert &_SubsumeRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 103; + 105; void Swap(SubsumeRequest* other); friend void swap(SubsumeRequest& a, SubsumeRequest& b) { @@ -13662,7 +13894,7 @@ class SubsumeResponse : public ::google::protobuf::MessageLite /* @@protoc_inser &_SubsumeResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 104; + 106; void Swap(SubsumeResponse* other); friend void swap(SubsumeResponse& a, SubsumeResponse& b) { @@ -13799,7 +14031,7 @@ class RangeStatsRequest : public ::google::protobuf::MessageLite /* @@protoc_ins &_RangeStatsRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 105; + 107; void Swap(RangeStatsRequest* other); friend void swap(RangeStatsRequest& a, RangeStatsRequest& b) { @@ -13905,7 +14137,7 @@ class RangeStatsResponse : public ::google::protobuf::MessageLite /* @@protoc_in &_RangeStatsResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 106; + 108; void Swap(RangeStatsResponse* other); friend void swap(RangeStatsResponse& a, RangeStatsResponse& b) { @@ -14069,6 +14301,7 @@ class RequestUnion : public ::google::protobuf::MessageLite /* @@protoc_insertio kSubsume = 43, kRangeStats = 44, kAdminVerifyProtectedTimestamp = 49, + kMigrate = 50, VALUE_NOT_SET = 0, }; @@ -14078,7 +14311,7 @@ class RequestUnion : public ::google::protobuf::MessageLite /* @@protoc_insertio &_RequestUnion_default_instance_); } static constexpr int kIndexInFileMessages = - 107; + 109; void Swap(RequestUnion* other); friend void swap(RequestUnion& a, RequestUnion& b) { @@ -14657,6 +14890,18 @@ class RequestUnion : public ::google::protobuf::MessageLite /* @@protoc_insertio ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* mutable_admin_verify_protected_timestamp(); void set_allocated_admin_verify_protected_timestamp(::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* admin_verify_protected_timestamp); + // .cockroach.roachpb.MigrateRequest migrate = 50; + bool has_migrate() const; + void clear_migrate(); + static const int kMigrateFieldNumber = 50; + private: + const ::cockroach::roachpb::MigrateRequest& _internal_migrate() const; + public: + const ::cockroach::roachpb::MigrateRequest& migrate() const; + ::cockroach::roachpb::MigrateRequest* release_migrate(); + ::cockroach::roachpb::MigrateRequest* mutable_migrate(); + void set_allocated_migrate(::cockroach::roachpb::MigrateRequest* migrate); + void clear_value(); ValueCase value_case() const; // @@protoc_insertion_point(class_scope:cockroach.roachpb.RequestUnion) @@ -14705,6 +14950,7 @@ class RequestUnion : public ::google::protobuf::MessageLite /* @@protoc_insertio void set_has_subsume(); void set_has_range_stats(); void set_has_admin_verify_protected_timestamp(); + void set_has_migrate(); inline bool has_value() const; inline void clear_has_value(); @@ -14756,6 +15002,7 @@ class RequestUnion : public ::google::protobuf::MessageLite /* @@protoc_insertio ::cockroach::roachpb::SubsumeRequest* subsume_; ::cockroach::roachpb::RangeStatsRequest* range_stats_; ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* admin_verify_protected_timestamp_; + ::cockroach::roachpb::MigrateRequest* migrate_; } value_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::uint32 _oneof_case_[1]; @@ -14836,6 +15083,7 @@ class ResponseUnion : public ::google::protobuf::MessageLite /* @@protoc_inserti kSubsume = 43, kRangeStats = 44, kAdminVerifyProtectedTimestamp = 49, + kMigrate = 50, VALUE_NOT_SET = 0, }; @@ -14845,7 +15093,7 @@ class ResponseUnion : public ::google::protobuf::MessageLite /* @@protoc_inserti &_ResponseUnion_default_instance_); } static constexpr int kIndexInFileMessages = - 108; + 110; void Swap(ResponseUnion* other); friend void swap(ResponseUnion& a, ResponseUnion& b) { @@ -15412,6 +15660,18 @@ class ResponseUnion : public ::google::protobuf::MessageLite /* @@protoc_inserti ::cockroach::roachpb::AdminVerifyProtectedTimestampResponse* mutable_admin_verify_protected_timestamp(); void set_allocated_admin_verify_protected_timestamp(::cockroach::roachpb::AdminVerifyProtectedTimestampResponse* admin_verify_protected_timestamp); + // .cockroach.roachpb.MigrateResponse migrate = 50; + bool has_migrate() const; + void clear_migrate(); + static const int kMigrateFieldNumber = 50; + private: + const ::cockroach::roachpb::MigrateResponse& _internal_migrate() const; + public: + const ::cockroach::roachpb::MigrateResponse& migrate() const; + ::cockroach::roachpb::MigrateResponse* release_migrate(); + ::cockroach::roachpb::MigrateResponse* mutable_migrate(); + void set_allocated_migrate(::cockroach::roachpb::MigrateResponse* migrate); + void clear_value(); ValueCase value_case() const; // @@protoc_insertion_point(class_scope:cockroach.roachpb.ResponseUnion) @@ -15459,6 +15719,7 @@ class ResponseUnion : public ::google::protobuf::MessageLite /* @@protoc_inserti void set_has_subsume(); void set_has_range_stats(); void set_has_admin_verify_protected_timestamp(); + void set_has_migrate(); inline bool has_value() const; inline void clear_has_value(); @@ -15509,6 +15770,7 @@ class ResponseUnion : public ::google::protobuf::MessageLite /* @@protoc_inserti ::cockroach::roachpb::SubsumeResponse* subsume_; ::cockroach::roachpb::RangeStatsResponse* range_stats_; ::cockroach::roachpb::AdminVerifyProtectedTimestampResponse* admin_verify_protected_timestamp_; + ::cockroach::roachpb::MigrateResponse* migrate_; } value_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::uint32 _oneof_case_[1]; @@ -15551,7 +15813,7 @@ class Header : public ::google::protobuf::MessageLite /* @@protoc_insertion_poin &_Header_default_instance_); } static constexpr int kIndexInFileMessages = - 109; + 111; void Swap(Header* other); friend void swap(Header& a, Header& b) { @@ -15755,7 +16017,7 @@ class BatchRequest : public ::google::protobuf::MessageLite /* @@protoc_insertio &_BatchRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 110; + 112; void Swap(BatchRequest* other); friend void swap(BatchRequest& a, BatchRequest& b) { @@ -15873,7 +16135,7 @@ class BatchResponse_Header : public ::google::protobuf::MessageLite /* @@protoc_ &_BatchResponse_Header_default_instance_); } static constexpr int kIndexInFileMessages = - 111; + 113; void Swap(BatchResponse_Header* other); friend void swap(BatchResponse_Header& a, BatchResponse_Header& b) { @@ -16029,7 +16291,7 @@ class BatchResponse : public ::google::protobuf::MessageLite /* @@protoc_inserti &_BatchResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 112; + 114; void Swap(BatchResponse* other); friend void swap(BatchResponse& a, BatchResponse& b) { @@ -16149,7 +16411,7 @@ class RangeFeedRequest : public ::google::protobuf::MessageLite /* @@protoc_inse &_RangeFeedRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 113; + 115; void Swap(RangeFeedRequest* other); friend void swap(RangeFeedRequest& a, RangeFeedRequest& b) { @@ -16274,7 +16536,7 @@ class RangeFeedValue : public ::google::protobuf::MessageLite /* @@protoc_insert &_RangeFeedValue_default_instance_); } static constexpr int kIndexInFileMessages = - 114; + 116; void Swap(RangeFeedValue* other); friend void swap(RangeFeedValue& a, RangeFeedValue& b) { @@ -16406,7 +16668,7 @@ class RangeFeedCheckpoint : public ::google::protobuf::MessageLite /* @@protoc_i &_RangeFeedCheckpoint_default_instance_); } static constexpr int kIndexInFileMessages = - 115; + 117; void Swap(RangeFeedCheckpoint* other); friend void swap(RangeFeedCheckpoint& a, RangeFeedCheckpoint& b) { @@ -16524,7 +16786,7 @@ class RangeFeedError : public ::google::protobuf::MessageLite /* @@protoc_insert &_RangeFeedError_default_instance_); } static constexpr int kIndexInFileMessages = - 116; + 118; void Swap(RangeFeedError* other); friend void swap(RangeFeedError& a, RangeFeedError& b) { @@ -16630,7 +16892,7 @@ class RangeFeedEvent : public ::google::protobuf::MessageLite /* @@protoc_insert &_RangeFeedEvent_default_instance_); } static constexpr int kIndexInFileMessages = - 117; + 119; void Swap(RangeFeedEvent* other); friend void swap(RangeFeedEvent& a, RangeFeedEvent& b) { @@ -27710,6 +27972,167 @@ AdminScatterResponse::ranges() const { // ------------------------------------------------------------------- +// MigrateRequest + +inline bool MigrateRequest::has_header() const { + return this != internal_default_instance() && header_ != NULL; +} +inline void MigrateRequest::clear_header() { + if (GetArenaNoVirtual() == NULL && header_ != NULL) { + delete header_; + } + header_ = NULL; +} +inline const ::cockroach::roachpb::RequestHeader& MigrateRequest::_internal_header() const { + return *header_; +} +inline const ::cockroach::roachpb::RequestHeader& MigrateRequest::header() const { + const ::cockroach::roachpb::RequestHeader* p = header_; + // @@protoc_insertion_point(field_get:cockroach.roachpb.MigrateRequest.header) + return p != NULL ? *p : *reinterpret_cast( + &::cockroach::roachpb::_RequestHeader_default_instance_); +} +inline ::cockroach::roachpb::RequestHeader* MigrateRequest::release_header() { + // @@protoc_insertion_point(field_release:cockroach.roachpb.MigrateRequest.header) + + ::cockroach::roachpb::RequestHeader* temp = header_; + header_ = NULL; + return temp; +} +inline ::cockroach::roachpb::RequestHeader* MigrateRequest::mutable_header() { + + if (header_ == NULL) { + auto* p = CreateMaybeMessage<::cockroach::roachpb::RequestHeader>(GetArenaNoVirtual()); + header_ = p; + } + // @@protoc_insertion_point(field_mutable:cockroach.roachpb.MigrateRequest.header) + return header_; +} +inline void MigrateRequest::set_allocated_header(::cockroach::roachpb::RequestHeader* header) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == NULL) { + delete header_; + } + if (header) { + ::google::protobuf::Arena* submessage_arena = NULL; + if (message_arena != submessage_arena) { + header = ::google::protobuf::internal::GetOwnedMessage( + message_arena, header, submessage_arena); + } + + } else { + + } + header_ = header; + // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.MigrateRequest.header) +} + +inline bool MigrateRequest::has_newversion() const { + return this != internal_default_instance() && newversion_ != NULL; +} +inline const ::cockroach::roachpb::Version& MigrateRequest::_internal_newversion() const { + return *newversion_; +} +inline const ::cockroach::roachpb::Version& MigrateRequest::newversion() const { + const ::cockroach::roachpb::Version* p = newversion_; + // @@protoc_insertion_point(field_get:cockroach.roachpb.MigrateRequest.NewVersion) + return p != NULL ? *p : *reinterpret_cast( + &::cockroach::roachpb::_Version_default_instance_); +} +inline ::cockroach::roachpb::Version* MigrateRequest::release_newversion() { + // @@protoc_insertion_point(field_release:cockroach.roachpb.MigrateRequest.NewVersion) + + ::cockroach::roachpb::Version* temp = newversion_; + newversion_ = NULL; + return temp; +} +inline ::cockroach::roachpb::Version* MigrateRequest::mutable_newversion() { + + if (newversion_ == NULL) { + auto* p = CreateMaybeMessage<::cockroach::roachpb::Version>(GetArenaNoVirtual()); + newversion_ = p; + } + // @@protoc_insertion_point(field_mutable:cockroach.roachpb.MigrateRequest.NewVersion) + return newversion_; +} +inline void MigrateRequest::set_allocated_newversion(::cockroach::roachpb::Version* newversion) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == NULL) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(newversion_); + } + if (newversion) { + ::google::protobuf::Arena* submessage_arena = NULL; + if (message_arena != submessage_arena) { + newversion = ::google::protobuf::internal::GetOwnedMessage( + message_arena, newversion, submessage_arena); + } + + } else { + + } + newversion_ = newversion; + // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.MigrateRequest.NewVersion) +} + +// ------------------------------------------------------------------- + +// MigrateResponse + +inline bool MigrateResponse::has_header() const { + return this != internal_default_instance() && header_ != NULL; +} +inline void MigrateResponse::clear_header() { + if (GetArenaNoVirtual() == NULL && header_ != NULL) { + delete header_; + } + header_ = NULL; +} +inline const ::cockroach::roachpb::ResponseHeader& MigrateResponse::_internal_header() const { + return *header_; +} +inline const ::cockroach::roachpb::ResponseHeader& MigrateResponse::header() const { + const ::cockroach::roachpb::ResponseHeader* p = header_; + // @@protoc_insertion_point(field_get:cockroach.roachpb.MigrateResponse.header) + return p != NULL ? *p : *reinterpret_cast( + &::cockroach::roachpb::_ResponseHeader_default_instance_); +} +inline ::cockroach::roachpb::ResponseHeader* MigrateResponse::release_header() { + // @@protoc_insertion_point(field_release:cockroach.roachpb.MigrateResponse.header) + + ::cockroach::roachpb::ResponseHeader* temp = header_; + header_ = NULL; + return temp; +} +inline ::cockroach::roachpb::ResponseHeader* MigrateResponse::mutable_header() { + + if (header_ == NULL) { + auto* p = CreateMaybeMessage<::cockroach::roachpb::ResponseHeader>(GetArenaNoVirtual()); + header_ = p; + } + // @@protoc_insertion_point(field_mutable:cockroach.roachpb.MigrateResponse.header) + return header_; +} +inline void MigrateResponse::set_allocated_header(::cockroach::roachpb::ResponseHeader* header) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == NULL) { + delete header_; + } + if (header) { + ::google::protobuf::Arena* submessage_arena = NULL; + if (message_arena != submessage_arena) { + header = ::google::protobuf::internal::GetOwnedMessage( + message_arena, header, submessage_arena); + } + + } else { + + } + header_ = header; + // @@protoc_insertion_point(field_set_allocated:cockroach.roachpb.MigrateResponse.header) +} + +// ------------------------------------------------------------------- + // AdminVerifyProtectedTimestampRequest inline bool AdminVerifyProtectedTimestampRequest::has_header() const { @@ -31003,6 +31426,50 @@ inline ::cockroach::roachpb::AdminVerifyProtectedTimestampRequest* RequestUnion: return value_.admin_verify_protected_timestamp_; } +// .cockroach.roachpb.MigrateRequest migrate = 50; +inline bool RequestUnion::has_migrate() const { + return value_case() == kMigrate; +} +inline void RequestUnion::set_has_migrate() { + _oneof_case_[0] = kMigrate; +} +inline void RequestUnion::clear_migrate() { + if (has_migrate()) { + delete value_.migrate_; + clear_has_value(); + } +} +inline const ::cockroach::roachpb::MigrateRequest& RequestUnion::_internal_migrate() const { + return *value_.migrate_; +} +inline ::cockroach::roachpb::MigrateRequest* RequestUnion::release_migrate() { + // @@protoc_insertion_point(field_release:cockroach.roachpb.RequestUnion.migrate) + if (has_migrate()) { + clear_has_value(); + ::cockroach::roachpb::MigrateRequest* temp = value_.migrate_; + value_.migrate_ = NULL; + return temp; + } else { + return NULL; + } +} +inline const ::cockroach::roachpb::MigrateRequest& RequestUnion::migrate() const { + // @@protoc_insertion_point(field_get:cockroach.roachpb.RequestUnion.migrate) + return has_migrate() + ? *value_.migrate_ + : *reinterpret_cast< ::cockroach::roachpb::MigrateRequest*>(&::cockroach::roachpb::_MigrateRequest_default_instance_); +} +inline ::cockroach::roachpb::MigrateRequest* RequestUnion::mutable_migrate() { + if (!has_migrate()) { + clear_value(); + set_has_migrate(); + value_.migrate_ = CreateMaybeMessage< ::cockroach::roachpb::MigrateRequest >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:cockroach.roachpb.RequestUnion.migrate) + return value_.migrate_; +} + inline bool RequestUnion::has_value() const { return value_case() != VALUE_NOT_SET; } @@ -32908,6 +33375,50 @@ inline ::cockroach::roachpb::AdminVerifyProtectedTimestampResponse* ResponseUnio return value_.admin_verify_protected_timestamp_; } +// .cockroach.roachpb.MigrateResponse migrate = 50; +inline bool ResponseUnion::has_migrate() const { + return value_case() == kMigrate; +} +inline void ResponseUnion::set_has_migrate() { + _oneof_case_[0] = kMigrate; +} +inline void ResponseUnion::clear_migrate() { + if (has_migrate()) { + delete value_.migrate_; + clear_has_value(); + } +} +inline const ::cockroach::roachpb::MigrateResponse& ResponseUnion::_internal_migrate() const { + return *value_.migrate_; +} +inline ::cockroach::roachpb::MigrateResponse* ResponseUnion::release_migrate() { + // @@protoc_insertion_point(field_release:cockroach.roachpb.ResponseUnion.migrate) + if (has_migrate()) { + clear_has_value(); + ::cockroach::roachpb::MigrateResponse* temp = value_.migrate_; + value_.migrate_ = NULL; + return temp; + } else { + return NULL; + } +} +inline const ::cockroach::roachpb::MigrateResponse& ResponseUnion::migrate() const { + // @@protoc_insertion_point(field_get:cockroach.roachpb.ResponseUnion.migrate) + return has_migrate() + ? *value_.migrate_ + : *reinterpret_cast< ::cockroach::roachpb::MigrateResponse*>(&::cockroach::roachpb::_MigrateResponse_default_instance_); +} +inline ::cockroach::roachpb::MigrateResponse* ResponseUnion::mutable_migrate() { + if (!has_migrate()) { + clear_value(); + set_has_migrate(); + value_.migrate_ = CreateMaybeMessage< ::cockroach::roachpb::MigrateResponse >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:cockroach.roachpb.ResponseUnion.migrate) + return value_.migrate_; +} + inline bool ResponseUnion::has_value() const { return value_case() != VALUE_NOT_SET; } @@ -34452,6 +34963,10 @@ inline void RangeFeedEvent::set_allocated_error(::cockroach::roachpb::RangeFeedE // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/pkg/keys/constants.go b/pkg/keys/constants.go index 29aaf3b033c7..28862447b96d 100644 --- a/pkg/keys/constants.go +++ b/pkg/keys/constants.go @@ -142,11 +142,6 @@ var ( LocalRangeMax = LocalRangePrefix.PrefixEnd() // LocalQueueLastProcessedSuffix is the suffix for replica queue state keys. LocalQueueLastProcessedSuffix = roachpb.RKey("qlpt") - // LocalRangeDescriptorJointSuffix is the suffix for keys storing - // range descriptors. The value is a struct of type RangeDescriptor. - // - // TODO(tbg): decide what to actually store here. This is still unused. - LocalRangeDescriptorJointSuffix = roachpb.RKey("rdjt") // LocalRangeDescriptorSuffix is the suffix for keys storing // range descriptors. The value is a struct of type RangeDescriptor. LocalRangeDescriptorSuffix = roachpb.RKey("rdsc") diff --git a/pkg/keys/doc.go b/pkg/keys/doc.go index effab3893df5..1f05db1f6580 100644 --- a/pkg/keys/doc.go +++ b/pkg/keys/doc.go @@ -195,10 +195,9 @@ var keymap = [...]interface{}{ // lint:ignore U1001 // as a whole. They are replicated and addressable. Typical examples are // the range descriptor and transaction records. They all share // `LocalRangePrefix`. - QueueLastProcessedKey, // "qlpt" - RangeDescriptorJointKey, // "rdjt" - RangeDescriptorKey, // "rdsc" - TransactionKey, // "txn-" + QueueLastProcessedKey, // "qlpt" + RangeDescriptorKey, // "rdsc" + TransactionKey, // "txn-" // 4. Store local keys: These contain metadata about an individual store. // They are unreplicated and unaddressable. The typical example is the diff --git a/pkg/keys/keys.go b/pkg/keys/keys.go index 4581dda38c1d..84785a7a5695 100644 --- a/pkg/keys/keys.go +++ b/pkg/keys/keys.go @@ -401,16 +401,6 @@ func RangeDescriptorKey(key roachpb.RKey) roachpb.Key { return MakeRangeKey(key, LocalRangeDescriptorSuffix, nil) } -// RangeDescriptorJointKey returns a range-local key for the "joint descriptor" -// for the range with specified key. This key is not versioned and it is set if -// and only if the range is in a joint configuration that it yet has to transition -// out of. -func RangeDescriptorJointKey(key roachpb.RKey) roachpb.Key { - return MakeRangeKey(key, LocalRangeDescriptorJointSuffix, nil) -} - -var _ = RangeDescriptorJointKey // silence unused check - // TransactionKey returns a transaction key based on the provided // transaction key and ID. The base key is encoded in order to // guarantee that all transaction records for a range sort together. diff --git a/pkg/roachpb/api.go b/pkg/roachpb/api.go index 17d6530cc86c..49e7b383b3f4 100644 --- a/pkg/roachpb/api.go +++ b/pkg/roachpb/api.go @@ -578,6 +578,8 @@ func (*ImportRequest) Method() Method { return Import } // Method implements the Request interface. func (*AdminScatterRequest) Method() Method { return AdminScatter } +func (*MigrateRequest) Method() Method { return Migrate } + // Method implements the Request interface. func (*AddSSTableRequest) Method() Method { return AddSSTable } @@ -821,6 +823,11 @@ func (r *AdminScatterRequest) ShallowCopy() Request { return &shallowCopy } +func (r *MigrateRequest) ShallowCopy() Request { + shallowCopy := *r + return &shallowCopy +} + // ShallowCopy implements the Request interface. func (r *AddSSTableRequest) ShallowCopy() Request { shallowCopy := *r @@ -1120,6 +1127,7 @@ func (*ExportRequest) flags() int { return isRead | isRan func (*ImportRequest) flags() int { return isAdmin | isAlone } func (*AdminScatterRequest) flags() int { return isAdmin | isRange | isAlone } func (*AdminVerifyProtectedTimestampRequest) flags() int { return isAdmin | isRange | isAlone } +func (*MigrateRequest) flags() int { return isWrite | isRange | isAlone } func (*AddSSTableRequest) flags() int { return isWrite | isRange | isAlone | isUnsplittable | canBackpressure } diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index 8362951373fe..1537fe4e75fe 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -71,7 +71,7 @@ func (x ReadConsistencyType) String() string { return proto.EnumName(ReadConsistencyType_name, int32(x)) } func (ReadConsistencyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{0} + return fileDescriptor_api_c1701b707e02ced5, []int{0} } // ScanFormat is an enumeration of the available response formats for MVCCScan @@ -99,7 +99,7 @@ func (x ScanFormat) String() string { return proto.EnumName(ScanFormat_name, int32(x)) } func (ScanFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{1} + return fileDescriptor_api_c1701b707e02ced5, []int{1} } type ChecksumMode int32 @@ -146,7 +146,7 @@ func (x ChecksumMode) String() string { return proto.EnumName(ChecksumMode_name, int32(x)) } func (ChecksumMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{2} + return fileDescriptor_api_c1701b707e02ced5, []int{2} } // PushTxnType determines what action to take when pushing a transaction. @@ -177,7 +177,7 @@ func (x PushTxnType) String() string { return proto.EnumName(PushTxnType_name, int32(x)) } func (PushTxnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{3} + return fileDescriptor_api_c1701b707e02ced5, []int{3} } type ExternalStorageProvider int32 @@ -215,7 +215,7 @@ func (x ExternalStorageProvider) String() string { return proto.EnumName(ExternalStorageProvider_name, int32(x)) } func (ExternalStorageProvider) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{4} + return fileDescriptor_api_c1701b707e02ced5, []int{4} } type MVCCFilter int32 @@ -238,7 +238,7 @@ func (x MVCCFilter) String() string { return proto.EnumName(MVCCFilter_name, int32(x)) } func (MVCCFilter) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{5} + return fileDescriptor_api_c1701b707e02ced5, []int{5} } type ResponseHeader_ResumeReason int32 @@ -270,7 +270,7 @@ func (x ResponseHeader_ResumeReason) String() string { return proto.EnumName(ResponseHeader_ResumeReason_name, int32(x)) } func (ResponseHeader_ResumeReason) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{2, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{2, 0} } type CheckConsistencyResponse_Status int32 @@ -312,7 +312,7 @@ func (x CheckConsistencyResponse_Status) String() string { return proto.EnumName(CheckConsistencyResponse_Status_name, int32(x)) } func (CheckConsistencyResponse_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{27, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{27, 0} } // RangeInfo describes a range which executed a request. It contains @@ -326,7 +326,7 @@ func (m *RangeInfo) Reset() { *m = RangeInfo{} } func (m *RangeInfo) String() string { return proto.CompactTextString(m) } func (*RangeInfo) ProtoMessage() {} func (*RangeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{0} + return fileDescriptor_api_c1701b707e02ced5, []int{0} } func (m *RangeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -369,7 +369,7 @@ func (m *RequestHeader) Reset() { *m = RequestHeader{} } func (m *RequestHeader) String() string { return proto.CompactTextString(m) } func (*RequestHeader) ProtoMessage() {} func (*RequestHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{1} + return fileDescriptor_api_c1701b707e02ced5, []int{1} } func (m *RequestHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -431,7 +431,7 @@ func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } func (m *ResponseHeader) String() string { return proto.CompactTextString(m) } func (*ResponseHeader) ProtoMessage() {} func (*ResponseHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{2} + return fileDescriptor_api_c1701b707e02ced5, []int{2} } func (m *ResponseHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -465,7 +465,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{3} + return fileDescriptor_api_c1701b707e02ced5, []int{3} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -503,7 +503,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{4} + return fileDescriptor_api_c1701b707e02ced5, []int{4} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -546,7 +546,7 @@ func (m *PutRequest) Reset() { *m = PutRequest{} } func (m *PutRequest) String() string { return proto.CompactTextString(m) } func (*PutRequest) ProtoMessage() {} func (*PutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{5} + return fileDescriptor_api_c1701b707e02ced5, []int{5} } func (m *PutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -580,7 +580,7 @@ func (m *PutResponse) Reset() { *m = PutResponse{} } func (m *PutResponse) String() string { return proto.CompactTextString(m) } func (*PutResponse) ProtoMessage() {} func (*PutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{6} + return fileDescriptor_api_c1701b707e02ced5, []int{6} } func (m *PutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -634,7 +634,7 @@ func (m *ConditionalPutRequest) Reset() { *m = ConditionalPutRequest{} } func (m *ConditionalPutRequest) String() string { return proto.CompactTextString(m) } func (*ConditionalPutRequest) ProtoMessage() {} func (*ConditionalPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{7} + return fileDescriptor_api_c1701b707e02ced5, []int{7} } func (m *ConditionalPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -669,7 +669,7 @@ func (m *ConditionalPutResponse) Reset() { *m = ConditionalPutResponse{} func (m *ConditionalPutResponse) String() string { return proto.CompactTextString(m) } func (*ConditionalPutResponse) ProtoMessage() {} func (*ConditionalPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{8} + return fileDescriptor_api_c1701b707e02ced5, []int{8} } func (m *ConditionalPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -715,7 +715,7 @@ func (m *InitPutRequest) Reset() { *m = InitPutRequest{} } func (m *InitPutRequest) String() string { return proto.CompactTextString(m) } func (*InitPutRequest) ProtoMessage() {} func (*InitPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{9} + return fileDescriptor_api_c1701b707e02ced5, []int{9} } func (m *InitPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -749,7 +749,7 @@ func (m *InitPutResponse) Reset() { *m = InitPutResponse{} } func (m *InitPutResponse) String() string { return proto.CompactTextString(m) } func (*InitPutResponse) ProtoMessage() {} func (*InitPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{10} + return fileDescriptor_api_c1701b707e02ced5, []int{10} } func (m *InitPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -789,7 +789,7 @@ func (m *IncrementRequest) Reset() { *m = IncrementRequest{} } func (m *IncrementRequest) String() string { return proto.CompactTextString(m) } func (*IncrementRequest) ProtoMessage() {} func (*IncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{11} + return fileDescriptor_api_c1701b707e02ced5, []int{11} } func (m *IncrementRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -826,7 +826,7 @@ func (m *IncrementResponse) Reset() { *m = IncrementResponse{} } func (m *IncrementResponse) String() string { return proto.CompactTextString(m) } func (*IncrementResponse) ProtoMessage() {} func (*IncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{12} + return fileDescriptor_api_c1701b707e02ced5, []int{12} } func (m *IncrementResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -860,7 +860,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRequest) ProtoMessage() {} func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{13} + return fileDescriptor_api_c1701b707e02ced5, []int{13} } func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +894,7 @@ func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } func (*DeleteResponse) ProtoMessage() {} func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{14} + return fileDescriptor_api_c1701b707e02ced5, []int{14} } func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -946,7 +946,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{15} + return fileDescriptor_api_c1701b707e02ced5, []int{15} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -983,7 +983,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{16} + return fileDescriptor_api_c1701b707e02ced5, []int{16} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1030,7 +1030,7 @@ func (m *ClearRangeRequest) Reset() { *m = ClearRangeRequest{} } func (m *ClearRangeRequest) String() string { return proto.CompactTextString(m) } func (*ClearRangeRequest) ProtoMessage() {} func (*ClearRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{17} + return fileDescriptor_api_c1701b707e02ced5, []int{17} } func (m *ClearRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1064,7 +1064,7 @@ func (m *ClearRangeResponse) Reset() { *m = ClearRangeResponse{} } func (m *ClearRangeResponse) String() string { return proto.CompactTextString(m) } func (*ClearRangeResponse) ProtoMessage() {} func (*ClearRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{18} + return fileDescriptor_api_c1701b707e02ced5, []int{18} } func (m *ClearRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1105,7 +1105,7 @@ func (m *RevertRangeRequest) Reset() { *m = RevertRangeRequest{} } func (m *RevertRangeRequest) String() string { return proto.CompactTextString(m) } func (*RevertRangeRequest) ProtoMessage() {} func (*RevertRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{19} + return fileDescriptor_api_c1701b707e02ced5, []int{19} } func (m *RevertRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1139,7 +1139,7 @@ func (m *RevertRangeResponse) Reset() { *m = RevertRangeResponse{} } func (m *RevertRangeResponse) String() string { return proto.CompactTextString(m) } func (*RevertRangeResponse) ProtoMessage() {} func (*RevertRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{20} + return fileDescriptor_api_c1701b707e02ced5, []int{20} } func (m *RevertRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1207,7 +1207,7 @@ func (m *ScanOptions) Reset() { *m = ScanOptions{} } func (m *ScanOptions) String() string { return proto.CompactTextString(m) } func (*ScanOptions) ProtoMessage() {} func (*ScanOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{21} + return fileDescriptor_api_c1701b707e02ced5, []int{21} } func (m *ScanOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1247,7 +1247,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{22} + return fileDescriptor_api_c1701b707e02ced5, []int{22} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1294,7 +1294,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{23} + return fileDescriptor_api_c1701b707e02ced5, []int{23} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1334,7 +1334,7 @@ func (m *ReverseScanRequest) Reset() { *m = ReverseScanRequest{} } func (m *ReverseScanRequest) String() string { return proto.CompactTextString(m) } func (*ReverseScanRequest) ProtoMessage() {} func (*ReverseScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{24} + return fileDescriptor_api_c1701b707e02ced5, []int{24} } func (m *ReverseScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1381,7 +1381,7 @@ func (m *ReverseScanResponse) Reset() { *m = ReverseScanResponse{} } func (m *ReverseScanResponse) String() string { return proto.CompactTextString(m) } func (*ReverseScanResponse) ProtoMessage() {} func (*ReverseScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{25} + return fileDescriptor_api_c1701b707e02ced5, []int{25} } func (m *ReverseScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1434,7 +1434,7 @@ func (m *CheckConsistencyRequest) Reset() { *m = CheckConsistencyRequest func (m *CheckConsistencyRequest) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyRequest) ProtoMessage() {} func (*CheckConsistencyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{26} + return fileDescriptor_api_c1701b707e02ced5, []int{26} } func (m *CheckConsistencyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1471,7 +1471,7 @@ func (m *CheckConsistencyResponse) Reset() { *m = CheckConsistencyRespon func (m *CheckConsistencyResponse) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse) ProtoMessage() {} func (*CheckConsistencyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{27} + return fileDescriptor_api_c1701b707e02ced5, []int{27} } func (m *CheckConsistencyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1515,7 +1515,7 @@ func (m *CheckConsistencyResponse_Result) Reset() { *m = CheckConsistenc func (m *CheckConsistencyResponse_Result) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse_Result) ProtoMessage() {} func (*CheckConsistencyResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{27, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{27, 0} } func (m *CheckConsistencyResponse_Result) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1563,7 +1563,7 @@ func (m *RecomputeStatsRequest) Reset() { *m = RecomputeStatsRequest{} } func (m *RecomputeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsRequest) ProtoMessage() {} func (*RecomputeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{28} + return fileDescriptor_api_c1701b707e02ced5, []int{28} } func (m *RecomputeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1599,7 +1599,7 @@ func (m *RecomputeStatsResponse) Reset() { *m = RecomputeStatsResponse{} func (m *RecomputeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsResponse) ProtoMessage() {} func (*RecomputeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{29} + return fileDescriptor_api_c1701b707e02ced5, []int{29} } func (m *RecomputeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1690,7 +1690,7 @@ func (m *EndTxnRequest) Reset() { *m = EndTxnRequest{} } func (m *EndTxnRequest) String() string { return proto.CompactTextString(m) } func (*EndTxnRequest) ProtoMessage() {} func (*EndTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{30} + return fileDescriptor_api_c1701b707e02ced5, []int{30} } func (m *EndTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1736,7 +1736,7 @@ func (m *EndTxnResponse) Reset() { *m = EndTxnResponse{} } func (m *EndTxnResponse) String() string { return proto.CompactTextString(m) } func (*EndTxnResponse) ProtoMessage() {} func (*EndTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{31} + return fileDescriptor_api_c1701b707e02ced5, []int{31} } func (m *EndTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1797,7 +1797,7 @@ func (m *AdminSplitRequest) Reset() { *m = AdminSplitRequest{} } func (m *AdminSplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminSplitRequest) ProtoMessage() {} func (*AdminSplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{32} + return fileDescriptor_api_c1701b707e02ced5, []int{32} } func (m *AdminSplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1832,7 +1832,7 @@ func (m *AdminSplitResponse) Reset() { *m = AdminSplitResponse{} } func (m *AdminSplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminSplitResponse) ProtoMessage() {} func (*AdminSplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{33} + return fileDescriptor_api_c1701b707e02ced5, []int{33} } func (m *AdminSplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1871,7 +1871,7 @@ func (m *AdminUnsplitRequest) Reset() { *m = AdminUnsplitRequest{} } func (m *AdminUnsplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitRequest) ProtoMessage() {} func (*AdminUnsplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{34} + return fileDescriptor_api_c1701b707e02ced5, []int{34} } func (m *AdminUnsplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1906,7 +1906,7 @@ func (m *AdminUnsplitResponse) Reset() { *m = AdminUnsplitResponse{} } func (m *AdminUnsplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitResponse) ProtoMessage() {} func (*AdminUnsplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{35} + return fileDescriptor_api_c1701b707e02ced5, []int{35} } func (m *AdminUnsplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1949,7 +1949,7 @@ func (m *AdminMergeRequest) Reset() { *m = AdminMergeRequest{} } func (m *AdminMergeRequest) String() string { return proto.CompactTextString(m) } func (*AdminMergeRequest) ProtoMessage() {} func (*AdminMergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{36} + return fileDescriptor_api_c1701b707e02ced5, []int{36} } func (m *AdminMergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1984,7 +1984,7 @@ func (m *AdminMergeResponse) Reset() { *m = AdminMergeResponse{} } func (m *AdminMergeResponse) String() string { return proto.CompactTextString(m) } func (*AdminMergeResponse) ProtoMessage() {} func (*AdminMergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{37} + return fileDescriptor_api_c1701b707e02ced5, []int{37} } func (m *AdminMergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2022,7 +2022,7 @@ func (m *AdminTransferLeaseRequest) Reset() { *m = AdminTransferLeaseReq func (m *AdminTransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseRequest) ProtoMessage() {} func (*AdminTransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{38} + return fileDescriptor_api_c1701b707e02ced5, []int{38} } func (m *AdminTransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2055,7 +2055,7 @@ func (m *AdminTransferLeaseResponse) Reset() { *m = AdminTransferLeaseRe func (m *AdminTransferLeaseResponse) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseResponse) ProtoMessage() {} func (*AdminTransferLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{39} + return fileDescriptor_api_c1701b707e02ced5, []int{39} } func (m *AdminTransferLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2090,7 +2090,7 @@ func (m *ReplicationChange) Reset() { *m = ReplicationChange{} } func (m *ReplicationChange) String() string { return proto.CompactTextString(m) } func (*ReplicationChange) ProtoMessage() {} func (*ReplicationChange) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{40} + return fileDescriptor_api_c1701b707e02ced5, []int{40} } func (m *ReplicationChange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2148,7 +2148,7 @@ func (m *AdminChangeReplicasRequest) Reset() { *m = AdminChangeReplicasR func (m *AdminChangeReplicasRequest) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasRequest) ProtoMessage() {} func (*AdminChangeReplicasRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{41} + return fileDescriptor_api_c1701b707e02ced5, []int{41} } func (m *AdminChangeReplicasRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2183,7 +2183,7 @@ func (m *AdminChangeReplicasResponse) Reset() { *m = AdminChangeReplicas func (m *AdminChangeReplicasResponse) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasResponse) ProtoMessage() {} func (*AdminChangeReplicasResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{42} + return fileDescriptor_api_c1701b707e02ced5, []int{42} } func (m *AdminChangeReplicasResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2220,7 +2220,7 @@ func (m *AdminRelocateRangeRequest) Reset() { *m = AdminRelocateRangeReq func (m *AdminRelocateRangeRequest) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeRequest) ProtoMessage() {} func (*AdminRelocateRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{43} + return fileDescriptor_api_c1701b707e02ced5, []int{43} } func (m *AdminRelocateRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2253,7 +2253,7 @@ func (m *AdminRelocateRangeResponse) Reset() { *m = AdminRelocateRangeRe func (m *AdminRelocateRangeResponse) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeResponse) ProtoMessage() {} func (*AdminRelocateRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{44} + return fileDescriptor_api_c1701b707e02ced5, []int{44} } func (m *AdminRelocateRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2292,7 +2292,7 @@ func (m *HeartbeatTxnRequest) Reset() { *m = HeartbeatTxnRequest{} } func (m *HeartbeatTxnRequest) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnRequest) ProtoMessage() {} func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{45} + return fileDescriptor_api_c1701b707e02ced5, []int{45} } func (m *HeartbeatTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2329,7 +2329,7 @@ func (m *HeartbeatTxnResponse) Reset() { *m = HeartbeatTxnResponse{} } func (m *HeartbeatTxnResponse) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnResponse) ProtoMessage() {} func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{46} + return fileDescriptor_api_c1701b707e02ced5, []int{46} } func (m *HeartbeatTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2367,7 +2367,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{47} + return fileDescriptor_api_c1701b707e02ced5, []int{47} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2401,7 +2401,7 @@ func (m *GCRequest_GCKey) Reset() { *m = GCRequest_GCKey{} } func (m *GCRequest_GCKey) String() string { return proto.CompactTextString(m) } func (*GCRequest_GCKey) ProtoMessage() {} func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{47, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{47, 0} } func (m *GCRequest_GCKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2435,7 +2435,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{48} + return fileDescriptor_api_c1701b707e02ced5, []int{48} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2504,7 +2504,7 @@ func (m *PushTxnRequest) Reset() { *m = PushTxnRequest{} } func (m *PushTxnRequest) String() string { return proto.CompactTextString(m) } func (*PushTxnRequest) ProtoMessage() {} func (*PushTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{49} + return fileDescriptor_api_c1701b707e02ced5, []int{49} } func (m *PushTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2547,7 +2547,7 @@ func (m *PushTxnResponse) Reset() { *m = PushTxnResponse{} } func (m *PushTxnResponse) String() string { return proto.CompactTextString(m) } func (*PushTxnResponse) ProtoMessage() {} func (*PushTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{50} + return fileDescriptor_api_c1701b707e02ced5, []int{50} } func (m *PushTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2594,7 +2594,7 @@ func (m *RecoverTxnRequest) Reset() { *m = RecoverTxnRequest{} } func (m *RecoverTxnRequest) String() string { return proto.CompactTextString(m) } func (*RecoverTxnRequest) ProtoMessage() {} func (*RecoverTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{51} + return fileDescriptor_api_c1701b707e02ced5, []int{51} } func (m *RecoverTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2630,7 +2630,7 @@ func (m *RecoverTxnResponse) Reset() { *m = RecoverTxnResponse{} } func (m *RecoverTxnResponse) String() string { return proto.CompactTextString(m) } func (*RecoverTxnResponse) ProtoMessage() {} func (*RecoverTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{52} + return fileDescriptor_api_c1701b707e02ced5, []int{52} } func (m *RecoverTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2674,7 +2674,7 @@ func (m *QueryTxnRequest) Reset() { *m = QueryTxnRequest{} } func (m *QueryTxnRequest) String() string { return proto.CompactTextString(m) } func (*QueryTxnRequest) ProtoMessage() {} func (*QueryTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{53} + return fileDescriptor_api_c1701b707e02ced5, []int{53} } func (m *QueryTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2713,7 +2713,7 @@ func (m *QueryTxnResponse) Reset() { *m = QueryTxnResponse{} } func (m *QueryTxnResponse) String() string { return proto.CompactTextString(m) } func (*QueryTxnResponse) ProtoMessage() {} func (*QueryTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{54} + return fileDescriptor_api_c1701b707e02ced5, []int{54} } func (m *QueryTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2773,7 +2773,7 @@ func (m *QueryIntentRequest) Reset() { *m = QueryIntentRequest{} } func (m *QueryIntentRequest) String() string { return proto.CompactTextString(m) } func (*QueryIntentRequest) ProtoMessage() {} func (*QueryIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{55} + return fileDescriptor_api_c1701b707e02ced5, []int{55} } func (m *QueryIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2809,7 +2809,7 @@ func (m *QueryIntentResponse) Reset() { *m = QueryIntentResponse{} } func (m *QueryIntentResponse) String() string { return proto.CompactTextString(m) } func (*QueryIntentResponse) ProtoMessage() {} func (*QueryIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{56} + return fileDescriptor_api_c1701b707e02ced5, []int{56} } func (m *QueryIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2855,7 +2855,7 @@ func (m *ResolveIntentRequest) Reset() { *m = ResolveIntentRequest{} } func (m *ResolveIntentRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRequest) ProtoMessage() {} func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{57} + return fileDescriptor_api_c1701b707e02ced5, []int{57} } func (m *ResolveIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2890,7 +2890,7 @@ func (m *ResolveIntentResponse) Reset() { *m = ResolveIntentResponse{} } func (m *ResolveIntentResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentResponse) ProtoMessage() {} func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{58} + return fileDescriptor_api_c1701b707e02ced5, []int{58} } func (m *ResolveIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2940,7 +2940,7 @@ func (m *ResolveIntentRangeRequest) Reset() { *m = ResolveIntentRangeReq func (m *ResolveIntentRangeRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeRequest) ProtoMessage() {} func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{59} + return fileDescriptor_api_c1701b707e02ced5, []int{59} } func (m *ResolveIntentRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2975,7 +2975,7 @@ func (m *ResolveIntentRangeResponse) Reset() { *m = ResolveIntentRangeRe func (m *ResolveIntentRangeResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeResponse) ProtoMessage() {} func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{60} + return fileDescriptor_api_c1701b707e02ced5, []int{60} } func (m *ResolveIntentRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3012,7 +3012,7 @@ func (m *MergeRequest) Reset() { *m = MergeRequest{} } func (m *MergeRequest) String() string { return proto.CompactTextString(m) } func (*MergeRequest) ProtoMessage() {} func (*MergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{61} + return fileDescriptor_api_c1701b707e02ced5, []int{61} } func (m *MergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3046,7 +3046,7 @@ func (m *MergeResponse) Reset() { *m = MergeResponse{} } func (m *MergeResponse) String() string { return proto.CompactTextString(m) } func (*MergeResponse) ProtoMessage() {} func (*MergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{62} + return fileDescriptor_api_c1701b707e02ced5, []int{62} } func (m *MergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3091,7 +3091,7 @@ func (m *TruncateLogRequest) Reset() { *m = TruncateLogRequest{} } func (m *TruncateLogRequest) String() string { return proto.CompactTextString(m) } func (*TruncateLogRequest) ProtoMessage() {} func (*TruncateLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{63} + return fileDescriptor_api_c1701b707e02ced5, []int{63} } func (m *TruncateLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3125,7 +3125,7 @@ func (m *TruncateLogResponse) Reset() { *m = TruncateLogResponse{} } func (m *TruncateLogResponse) String() string { return proto.CompactTextString(m) } func (*TruncateLogResponse) ProtoMessage() {} func (*TruncateLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{64} + return fileDescriptor_api_c1701b707e02ced5, []int{64} } func (m *TruncateLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3169,7 +3169,7 @@ func (m *RequestLeaseRequest) Reset() { *m = RequestLeaseRequest{} } func (m *RequestLeaseRequest) String() string { return proto.CompactTextString(m) } func (*RequestLeaseRequest) ProtoMessage() {} func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{65} + return fileDescriptor_api_c1701b707e02ced5, []int{65} } func (m *RequestLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3218,7 +3218,7 @@ func (m *TransferLeaseRequest) Reset() { *m = TransferLeaseRequest{} } func (m *TransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*TransferLeaseRequest) ProtoMessage() {} func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{66} + return fileDescriptor_api_c1701b707e02ced5, []int{66} } func (m *TransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3255,7 +3255,7 @@ func (m *LeaseInfoRequest) Reset() { *m = LeaseInfoRequest{} } func (m *LeaseInfoRequest) String() string { return proto.CompactTextString(m) } func (*LeaseInfoRequest) ProtoMessage() {} func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{67} + return fileDescriptor_api_c1701b707e02ced5, []int{67} } func (m *LeaseInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3292,7 +3292,7 @@ func (m *LeaseInfoResponse) Reset() { *m = LeaseInfoResponse{} } func (m *LeaseInfoResponse) String() string { return proto.CompactTextString(m) } func (*LeaseInfoResponse) ProtoMessage() {} func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{68} + return fileDescriptor_api_c1701b707e02ced5, []int{68} } func (m *LeaseInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3327,7 +3327,7 @@ func (m *RequestLeaseResponse) Reset() { *m = RequestLeaseResponse{} } func (m *RequestLeaseResponse) String() string { return proto.CompactTextString(m) } func (*RequestLeaseResponse) ProtoMessage() {} func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{69} + return fileDescriptor_api_c1701b707e02ced5, []int{69} } func (m *RequestLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3382,7 +3382,7 @@ func (m *ComputeChecksumRequest) Reset() { *m = ComputeChecksumRequest{} func (m *ComputeChecksumRequest) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumRequest) ProtoMessage() {} func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{70} + return fileDescriptor_api_c1701b707e02ced5, []int{70} } func (m *ComputeChecksumRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3419,7 +3419,7 @@ func (m *ComputeChecksumResponse) Reset() { *m = ComputeChecksumResponse func (m *ComputeChecksumResponse) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumResponse) ProtoMessage() {} func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{71} + return fileDescriptor_api_c1701b707e02ced5, []int{71} } func (m *ComputeChecksumResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3458,7 +3458,7 @@ func (m *ExternalStorage) Reset() { *m = ExternalStorage{} } func (m *ExternalStorage) String() string { return proto.CompactTextString(m) } func (*ExternalStorage) ProtoMessage() {} func (*ExternalStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72} + return fileDescriptor_api_c1701b707e02ced5, []int{72} } func (m *ExternalStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3492,7 +3492,7 @@ func (m *ExternalStorage_LocalFilePath) Reset() { *m = ExternalStorage_L func (m *ExternalStorage_LocalFilePath) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_LocalFilePath) ProtoMessage() {} func (*ExternalStorage_LocalFilePath) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 0} } func (m *ExternalStorage_LocalFilePath) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3525,7 +3525,7 @@ func (m *ExternalStorage_Http) Reset() { *m = ExternalStorage_Http{} } func (m *ExternalStorage_Http) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Http) ProtoMessage() {} func (*ExternalStorage_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 1} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 1} } func (m *ExternalStorage_Http) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3565,7 +3565,7 @@ func (m *ExternalStorage_S3) Reset() { *m = ExternalStorage_S3{} } func (m *ExternalStorage_S3) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_S3) ProtoMessage() {} func (*ExternalStorage_S3) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 2} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 2} } func (m *ExternalStorage_S3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3604,7 +3604,7 @@ func (m *ExternalStorage_GCS) Reset() { *m = ExternalStorage_GCS{} } func (m *ExternalStorage_GCS) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_GCS) ProtoMessage() {} func (*ExternalStorage_GCS) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 3} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 3} } func (m *ExternalStorage_GCS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3640,7 @@ func (m *ExternalStorage_Azure) Reset() { *m = ExternalStorage_Azure{} } func (m *ExternalStorage_Azure) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Azure) ProtoMessage() {} func (*ExternalStorage_Azure) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 4} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 4} } func (m *ExternalStorage_Azure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3679,7 @@ func (m *ExternalStorage_Workload) Reset() { *m = ExternalStorage_Worklo func (m *ExternalStorage_Workload) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Workload) ProtoMessage() {} func (*ExternalStorage_Workload) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{72, 5} + return fileDescriptor_api_c1701b707e02ced5, []int{72, 5} } func (m *ExternalStorage_Workload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3719,7 +3719,7 @@ func (m *WriteBatchRequest) Reset() { *m = WriteBatchRequest{} } func (m *WriteBatchRequest) String() string { return proto.CompactTextString(m) } func (*WriteBatchRequest) ProtoMessage() {} func (*WriteBatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{73} + return fileDescriptor_api_c1701b707e02ced5, []int{73} } func (m *WriteBatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3753,7 +3753,7 @@ func (m *WriteBatchResponse) Reset() { *m = WriteBatchResponse{} } func (m *WriteBatchResponse) String() string { return proto.CompactTextString(m) } func (*WriteBatchResponse) ProtoMessage() {} func (*WriteBatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{74} + return fileDescriptor_api_c1701b707e02ced5, []int{74} } func (m *WriteBatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3815,7 +3815,7 @@ func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} func (*ExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{75} + return fileDescriptor_api_c1701b707e02ced5, []int{75} } func (m *ExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3851,7 +3851,7 @@ func (m *BulkOpSummary) Reset() { *m = BulkOpSummary{} } func (m *BulkOpSummary) String() string { return proto.CompactTextString(m) } func (*BulkOpSummary) ProtoMessage() {} func (*BulkOpSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{76} + return fileDescriptor_api_c1701b707e02ced5, []int{76} } func (m *BulkOpSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3887,7 +3887,7 @@ func (m *ExportResponse) Reset() { *m = ExportResponse{} } func (m *ExportResponse) String() string { return proto.CompactTextString(m) } func (*ExportResponse) ProtoMessage() {} func (*ExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{77} + return fileDescriptor_api_c1701b707e02ced5, []int{77} } func (m *ExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3927,7 +3927,7 @@ func (m *ExportResponse_File) Reset() { *m = ExportResponse_File{} } func (m *ExportResponse_File) String() string { return proto.CompactTextString(m) } func (*ExportResponse_File) ProtoMessage() {} func (*ExportResponse_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{77, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{77, 0} } func (m *ExportResponse_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3977,7 +3977,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{78} + return fileDescriptor_api_c1701b707e02ced5, []int{78} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4012,7 +4012,7 @@ func (m *ImportRequest_File) Reset() { *m = ImportRequest_File{} } func (m *ImportRequest_File) String() string { return proto.CompactTextString(m) } func (*ImportRequest_File) ProtoMessage() {} func (*ImportRequest_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{78, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{78, 0} } func (m *ImportRequest_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4048,7 +4048,7 @@ func (m *ImportRequest_TableRekey) Reset() { *m = ImportRequest_TableRek func (m *ImportRequest_TableRekey) String() string { return proto.CompactTextString(m) } func (*ImportRequest_TableRekey) ProtoMessage() {} func (*ImportRequest_TableRekey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{78, 1} + return fileDescriptor_api_c1701b707e02ced5, []int{78, 1} } func (m *ImportRequest_TableRekey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4083,7 +4083,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{79} + return fileDescriptor_api_c1701b707e02ced5, []int{79} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4121,7 +4121,7 @@ func (m *AdminScatterRequest) Reset() { *m = AdminScatterRequest{} } func (m *AdminScatterRequest) String() string { return proto.CompactTextString(m) } func (*AdminScatterRequest) ProtoMessage() {} func (*AdminScatterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{80} + return fileDescriptor_api_c1701b707e02ced5, []int{80} } func (m *AdminScatterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4156,7 +4156,7 @@ func (m *AdminScatterResponse) Reset() { *m = AdminScatterResponse{} } func (m *AdminScatterResponse) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse) ProtoMessage() {} func (*AdminScatterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{81} + return fileDescriptor_api_c1701b707e02ced5, []int{81} } func (m *AdminScatterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4189,7 +4189,7 @@ func (m *AdminScatterResponse_Range) Reset() { *m = AdminScatterResponse func (m *AdminScatterResponse_Range) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse_Range) ProtoMessage() {} func (*AdminScatterResponse_Range) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{81, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{81, 0} } func (m *AdminScatterResponse_Range) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4214,6 +4214,79 @@ func (m *AdminScatterResponse_Range) XXX_DiscardUnknown() { var xxx_messageInfo_AdminScatterResponse_Range proto.InternalMessageInfo +// MigrateRequest forces all ranges overlapping it to proactively move out of +// any legacy modes that they are currently in. When this command returns, the +// ranges are ready to run with the most up to date cluster version supported +// by this binary. +type MigrateRequest struct { + RequestHeader `protobuf:"bytes,1,opt,name=header,proto3,embedded=header" json:"header"` + // The new version that will become active next. + NewVersion Version `protobuf:"bytes,2,opt,name=NewVersion,proto3" json:"NewVersion"` +} + +func (m *MigrateRequest) Reset() { *m = MigrateRequest{} } +func (m *MigrateRequest) String() string { return proto.CompactTextString(m) } +func (*MigrateRequest) ProtoMessage() {} +func (*MigrateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_c1701b707e02ced5, []int{82} +} +func (m *MigrateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MigrateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (dst *MigrateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MigrateRequest.Merge(dst, src) +} +func (m *MigrateRequest) XXX_Size() int { + return m.Size() +} +func (m *MigrateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MigrateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MigrateRequest proto.InternalMessageInfo + +// MigrateResponse is the response to an Migrate operation. +type MigrateResponse struct { + ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3,embedded=header" json:"header"` +} + +func (m *MigrateResponse) Reset() { *m = MigrateResponse{} } +func (m *MigrateResponse) String() string { return proto.CompactTextString(m) } +func (*MigrateResponse) ProtoMessage() {} +func (*MigrateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_c1701b707e02ced5, []int{83} +} +func (m *MigrateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MigrateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (dst *MigrateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MigrateResponse.Merge(dst, src) +} +func (m *MigrateResponse) XXX_Size() int { + return m.Size() +} +func (m *MigrateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MigrateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MigrateResponse proto.InternalMessageInfo + // AdminVerifyProtectedTimestampRequest is the argument to the // AdminVerifyProtectedTimestamp method which ensures that the specified record // will be seen before data can be garbage collected at the timestamp. @@ -4234,7 +4307,7 @@ func (m *AdminVerifyProtectedTimestampRequest) Reset() { *m = AdminVerif func (m *AdminVerifyProtectedTimestampRequest) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampRequest) ProtoMessage() {} func (*AdminVerifyProtectedTimestampRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{82} + return fileDescriptor_api_c1701b707e02ced5, []int{84} } func (m *AdminVerifyProtectedTimestampRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4272,7 +4345,7 @@ func (m *AdminVerifyProtectedTimestampResponse) Reset() { *m = AdminVeri func (m *AdminVerifyProtectedTimestampResponse) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampResponse) ProtoMessage() {} func (*AdminVerifyProtectedTimestampResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{83} + return fileDescriptor_api_c1701b707e02ced5, []int{85} } func (m *AdminVerifyProtectedTimestampResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4325,7 +4398,7 @@ func (m *AddSSTableRequest) Reset() { *m = AddSSTableRequest{} } func (m *AddSSTableRequest) String() string { return proto.CompactTextString(m) } func (*AddSSTableRequest) ProtoMessage() {} func (*AddSSTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{84} + return fileDescriptor_api_c1701b707e02ced5, []int{86} } func (m *AddSSTableRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4359,7 +4432,7 @@ func (m *AddSSTableResponse) Reset() { *m = AddSSTableResponse{} } func (m *AddSSTableResponse) String() string { return proto.CompactTextString(m) } func (*AddSSTableResponse) ProtoMessage() {} func (*AddSSTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{85} + return fileDescriptor_api_c1701b707e02ced5, []int{87} } func (m *AddSSTableResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4403,7 +4476,7 @@ func (m *RefreshRequest) Reset() { *m = RefreshRequest{} } func (m *RefreshRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRequest) ProtoMessage() {} func (*RefreshRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{86} + return fileDescriptor_api_c1701b707e02ced5, []int{88} } func (m *RefreshRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4437,7 +4510,7 @@ func (m *RefreshResponse) Reset() { *m = RefreshResponse{} } func (m *RefreshResponse) String() string { return proto.CompactTextString(m) } func (*RefreshResponse) ProtoMessage() {} func (*RefreshResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{87} + return fileDescriptor_api_c1701b707e02ced5, []int{89} } func (m *RefreshResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4476,7 +4549,7 @@ func (m *RefreshRangeRequest) Reset() { *m = RefreshRangeRequest{} } func (m *RefreshRangeRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRangeRequest) ProtoMessage() {} func (*RefreshRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{88} + return fileDescriptor_api_c1701b707e02ced5, []int{90} } func (m *RefreshRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,7 +4583,7 @@ func (m *RefreshRangeResponse) Reset() { *m = RefreshRangeResponse{} } func (m *RefreshRangeResponse) String() string { return proto.CompactTextString(m) } func (*RefreshRangeResponse) ProtoMessage() {} func (*RefreshRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{89} + return fileDescriptor_api_c1701b707e02ced5, []int{91} } func (m *RefreshRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4559,7 +4632,7 @@ func (m *SubsumeRequest) Reset() { *m = SubsumeRequest{} } func (m *SubsumeRequest) String() string { return proto.CompactTextString(m) } func (*SubsumeRequest) ProtoMessage() {} func (*SubsumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{90} + return fileDescriptor_api_c1701b707e02ced5, []int{92} } func (m *SubsumeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4608,7 +4681,7 @@ func (m *SubsumeResponse) Reset() { *m = SubsumeResponse{} } func (m *SubsumeResponse) String() string { return proto.CompactTextString(m) } func (*SubsumeResponse) ProtoMessage() {} func (*SubsumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{91} + return fileDescriptor_api_c1701b707e02ced5, []int{93} } func (m *SubsumeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4643,7 +4716,7 @@ func (m *RangeStatsRequest) Reset() { *m = RangeStatsRequest{} } func (m *RangeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RangeStatsRequest) ProtoMessage() {} func (*RangeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{92} + return fileDescriptor_api_c1701b707e02ced5, []int{94} } func (m *RangeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4682,7 +4755,7 @@ func (m *RangeStatsResponse) Reset() { *m = RangeStatsResponse{} } func (m *RangeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RangeStatsResponse) ProtoMessage() {} func (*RangeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{93} + return fileDescriptor_api_c1701b707e02ced5, []int{95} } func (m *RangeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4758,6 +4831,7 @@ type RequestUnion struct { // *RequestUnion_Subsume // *RequestUnion_RangeStats // *RequestUnion_AdminVerifyProtectedTimestamp + // *RequestUnion_Migrate Value isRequestUnion_Value `protobuf_oneof:"value"` } @@ -4765,7 +4839,7 @@ func (m *RequestUnion) Reset() { *m = RequestUnion{} } func (m *RequestUnion) String() string { return proto.CompactTextString(m) } func (*RequestUnion) ProtoMessage() {} func (*RequestUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{94} + return fileDescriptor_api_c1701b707e02ced5, []int{96} } func (m *RequestUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4928,6 +5002,9 @@ type RequestUnion_RangeStats struct { type RequestUnion_AdminVerifyProtectedTimestamp struct { AdminVerifyProtectedTimestamp *AdminVerifyProtectedTimestampRequest `protobuf:"bytes,49,opt,name=admin_verify_protected_timestamp,json=adminVerifyProtectedTimestamp,proto3,oneof"` } +type RequestUnion_Migrate struct { + Migrate *MigrateRequest `protobuf:"bytes,50,opt,name=migrate,proto3,oneof"` +} func (*RequestUnion_Get) isRequestUnion_Value() {} func (*RequestUnion_Put) isRequestUnion_Value() {} @@ -4973,6 +5050,7 @@ func (*RequestUnion_RefreshRange) isRequestUnion_Value() {} func (*RequestUnion_Subsume) isRequestUnion_Value() {} func (*RequestUnion_RangeStats) isRequestUnion_Value() {} func (*RequestUnion_AdminVerifyProtectedTimestamp) isRequestUnion_Value() {} +func (*RequestUnion_Migrate) isRequestUnion_Value() {} func (m *RequestUnion) GetValue() isRequestUnion_Value { if m != nil { @@ -5289,6 +5367,13 @@ func (m *RequestUnion) GetAdminVerifyProtectedTimestamp() *AdminVerifyProtectedT return nil } +func (m *RequestUnion) GetMigrate() *MigrateRequest { + if x, ok := m.GetValue().(*RequestUnion_Migrate); ok { + return x.Migrate + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*RequestUnion) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _RequestUnion_OneofMarshaler, _RequestUnion_OneofUnmarshaler, _RequestUnion_OneofSizer, []interface{}{ @@ -5336,6 +5421,7 @@ func (*RequestUnion) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) (*RequestUnion_Subsume)(nil), (*RequestUnion_RangeStats)(nil), (*RequestUnion_AdminVerifyProtectedTimestamp)(nil), + (*RequestUnion_Migrate)(nil), } } @@ -5563,6 +5649,11 @@ func _RequestUnion_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { if err := b.EncodeMessage(x.AdminVerifyProtectedTimestamp); err != nil { return err } + case *RequestUnion_Migrate: + _ = b.EncodeVarint(50<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Migrate); err != nil { + return err + } case nil: default: return fmt.Errorf("RequestUnion.Value has unexpected type %T", x) @@ -5925,6 +6016,14 @@ func _RequestUnion_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.B err := b.DecodeMessage(msg) m.Value = &RequestUnion_AdminVerifyProtectedTimestamp{msg} return true, err + case 50: // value.migrate + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MigrateRequest) + err := b.DecodeMessage(msg) + m.Value = &RequestUnion_Migrate{msg} + return true, err default: return false, nil } @@ -6154,6 +6253,11 @@ func _RequestUnion_OneofSizer(msg proto.Message) (n int) { n += 2 // tag and wire n += proto.SizeVarint(uint64(s)) n += s + case *RequestUnion_Migrate: + s := proto.Size(x.Migrate) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s case nil: default: panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) @@ -6208,6 +6312,7 @@ type ResponseUnion struct { // *ResponseUnion_Subsume // *ResponseUnion_RangeStats // *ResponseUnion_AdminVerifyProtectedTimestamp + // *ResponseUnion_Migrate Value isResponseUnion_Value `protobuf_oneof:"value"` } @@ -6215,7 +6320,7 @@ func (m *ResponseUnion) Reset() { *m = ResponseUnion{} } func (m *ResponseUnion) String() string { return proto.CompactTextString(m) } func (*ResponseUnion) ProtoMessage() {} func (*ResponseUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{95} + return fileDescriptor_api_c1701b707e02ced5, []int{97} } func (m *ResponseUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6375,6 +6480,9 @@ type ResponseUnion_RangeStats struct { type ResponseUnion_AdminVerifyProtectedTimestamp struct { AdminVerifyProtectedTimestamp *AdminVerifyProtectedTimestampResponse `protobuf:"bytes,49,opt,name=admin_verify_protected_timestamp,json=adminVerifyProtectedTimestamp,proto3,oneof"` } +type ResponseUnion_Migrate struct { + Migrate *MigrateResponse `protobuf:"bytes,50,opt,name=migrate,proto3,oneof"` +} func (*ResponseUnion_Get) isResponseUnion_Value() {} func (*ResponseUnion_Put) isResponseUnion_Value() {} @@ -6419,6 +6527,7 @@ func (*ResponseUnion_RefreshRange) isResponseUnion_Value() {} func (*ResponseUnion_Subsume) isResponseUnion_Value() {} func (*ResponseUnion_RangeStats) isResponseUnion_Value() {} func (*ResponseUnion_AdminVerifyProtectedTimestamp) isResponseUnion_Value() {} +func (*ResponseUnion_Migrate) isResponseUnion_Value() {} func (m *ResponseUnion) GetValue() isResponseUnion_Value { if m != nil { @@ -6728,6 +6837,13 @@ func (m *ResponseUnion) GetAdminVerifyProtectedTimestamp() *AdminVerifyProtected return nil } +func (m *ResponseUnion) GetMigrate() *MigrateResponse { + if x, ok := m.GetValue().(*ResponseUnion_Migrate); ok { + return x.Migrate + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*ResponseUnion) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _ResponseUnion_OneofMarshaler, _ResponseUnion_OneofUnmarshaler, _ResponseUnion_OneofSizer, []interface{}{ @@ -6774,6 +6890,7 @@ func (*ResponseUnion) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) (*ResponseUnion_Subsume)(nil), (*ResponseUnion_RangeStats)(nil), (*ResponseUnion_AdminVerifyProtectedTimestamp)(nil), + (*ResponseUnion_Migrate)(nil), } } @@ -6996,6 +7113,11 @@ func _ResponseUnion_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { if err := b.EncodeMessage(x.AdminVerifyProtectedTimestamp); err != nil { return err } + case *ResponseUnion_Migrate: + _ = b.EncodeVarint(50<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Migrate); err != nil { + return err + } case nil: default: return fmt.Errorf("ResponseUnion.Value has unexpected type %T", x) @@ -7350,6 +7472,14 @@ func _ResponseUnion_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto. err := b.DecodeMessage(msg) m.Value = &ResponseUnion_AdminVerifyProtectedTimestamp{msg} return true, err + case 50: // value.migrate + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MigrateResponse) + err := b.DecodeMessage(msg) + m.Value = &ResponseUnion_Migrate{msg} + return true, err default: return false, nil } @@ -7574,6 +7704,11 @@ func _ResponseUnion_OneofSizer(msg proto.Message) (n int) { n += 2 // tag and wire n += proto.SizeVarint(uint64(s)) n += s + case *ResponseUnion_Migrate: + s := proto.Size(x.Migrate) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s case nil: default: panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) @@ -7670,7 +7805,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{96} + return fileDescriptor_api_c1701b707e02ced5, []int{98} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7706,7 +7841,7 @@ type BatchRequest struct { func (m *BatchRequest) Reset() { *m = BatchRequest{} } func (*BatchRequest) ProtoMessage() {} func (*BatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{97} + return fileDescriptor_api_c1701b707e02ced5, []int{99} } func (m *BatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7743,7 +7878,7 @@ type BatchResponse struct { func (m *BatchResponse) Reset() { *m = BatchResponse{} } func (*BatchResponse) ProtoMessage() {} func (*BatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{98} + return fileDescriptor_api_c1701b707e02ced5, []int{100} } func (m *BatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7801,7 +7936,7 @@ func (m *BatchResponse_Header) Reset() { *m = BatchResponse_Header{} } func (m *BatchResponse_Header) String() string { return proto.CompactTextString(m) } func (*BatchResponse_Header) ProtoMessage() {} func (*BatchResponse_Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{98, 0} + return fileDescriptor_api_c1701b707e02ced5, []int{100, 0} } func (m *BatchResponse_Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7840,7 +7975,7 @@ func (m *RangeFeedRequest) Reset() { *m = RangeFeedRequest{} } func (m *RangeFeedRequest) String() string { return proto.CompactTextString(m) } func (*RangeFeedRequest) ProtoMessage() {} func (*RangeFeedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{99} + return fileDescriptor_api_c1701b707e02ced5, []int{101} } func (m *RangeFeedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7881,7 +8016,7 @@ func (m *RangeFeedValue) Reset() { *m = RangeFeedValue{} } func (m *RangeFeedValue) String() string { return proto.CompactTextString(m) } func (*RangeFeedValue) ProtoMessage() {} func (*RangeFeedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{100} + return fileDescriptor_api_c1701b707e02ced5, []int{102} } func (m *RangeFeedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7922,7 +8057,7 @@ func (m *RangeFeedCheckpoint) Reset() { *m = RangeFeedCheckpoint{} } func (m *RangeFeedCheckpoint) String() string { return proto.CompactTextString(m) } func (*RangeFeedCheckpoint) ProtoMessage() {} func (*RangeFeedCheckpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{101} + return fileDescriptor_api_c1701b707e02ced5, []int{103} } func (m *RangeFeedCheckpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7959,7 +8094,7 @@ func (m *RangeFeedError) Reset() { *m = RangeFeedError{} } func (m *RangeFeedError) String() string { return proto.CompactTextString(m) } func (*RangeFeedError) ProtoMessage() {} func (*RangeFeedError) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{102} + return fileDescriptor_api_c1701b707e02ced5, []int{104} } func (m *RangeFeedError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7996,7 +8131,7 @@ func (m *RangeFeedEvent) Reset() { *m = RangeFeedEvent{} } func (m *RangeFeedEvent) String() string { return proto.CompactTextString(m) } func (*RangeFeedEvent) ProtoMessage() {} func (*RangeFeedEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_api_e65f15698b48cede, []int{103} + return fileDescriptor_api_c1701b707e02ced5, []int{105} } func (m *RangeFeedEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8117,6 +8252,8 @@ func init() { proto.RegisterType((*AdminScatterRequest)(nil), "cockroach.roachpb.AdminScatterRequest") proto.RegisterType((*AdminScatterResponse)(nil), "cockroach.roachpb.AdminScatterResponse") proto.RegisterType((*AdminScatterResponse_Range)(nil), "cockroach.roachpb.AdminScatterResponse.Range") + proto.RegisterType((*MigrateRequest)(nil), "cockroach.roachpb.MigrateRequest") + proto.RegisterType((*MigrateResponse)(nil), "cockroach.roachpb.MigrateResponse") proto.RegisterType((*AdminVerifyProtectedTimestampRequest)(nil), "cockroach.roachpb.AdminVerifyProtectedTimestampRequest") proto.RegisterType((*AdminVerifyProtectedTimestampResponse)(nil), "cockroach.roachpb.AdminVerifyProtectedTimestampResponse") proto.RegisterType((*AddSSTableRequest)(nil), "cockroach.roachpb.AddSSTableRequest") @@ -9817,6 +9954,33 @@ func (this *AdminScatterRequest) Equal(that interface{}) bool { } return true } +func (this *MigrateRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MigrateRequest) + if !ok { + that2, ok := that.(MigrateRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.RequestHeader.Equal(&that1.RequestHeader) { + return false + } + if !this.NewVersion.Equal(&that1.NewVersion) { + return false + } + return true +} func (this *AdminVerifyProtectedTimestampRequest) Equal(that interface{}) bool { if that == nil { return this == nil @@ -13931,7 +14095,7 @@ func (m *AdminScatterResponse_Range) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *AdminVerifyProtectedTimestampRequest) Marshal() (dAtA []byte, err error) { +func (m *MigrateRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -13941,7 +14105,7 @@ func (m *AdminVerifyProtectedTimestampRequest) Marshal() (dAtA []byte, err error return dAtA[:n], nil } -func (m *AdminVerifyProtectedTimestampRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *MigrateRequest) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -13956,28 +14120,88 @@ func (m *AdminVerifyProtectedTimestampRequest) MarshalTo(dAtA []byte) (int, erro i += n136 dAtA[i] = 0x12 i++ - i = encodeVarintApi(dAtA, i, uint64(m.Protected.Size())) - n137, err := m.Protected.MarshalTo(dAtA[i:]) + i = encodeVarintApi(dAtA, i, uint64(m.NewVersion.Size())) + n137, err := m.NewVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n137 + return i, nil +} + +func (m *MigrateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MigrateResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) + n138, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n138 + return i, nil +} + +func (m *AdminVerifyProtectedTimestampRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdminVerifyProtectedTimestampRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) + n139, err := m.RequestHeader.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n139 + dAtA[i] = 0x12 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.Protected.Size())) + n140, err := m.Protected.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n140 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.RecordAliveAt.Size())) - n138, err := m.RecordAliveAt.MarshalTo(dAtA[i:]) + n141, err := m.RecordAliveAt.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n138 + i += n141 dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.RecordID.Size())) - n139, err := m.RecordID.MarshalTo(dAtA[i:]) + n142, err := m.RecordID.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n139 + i += n142 return i, nil } @@ -13999,11 +14223,11 @@ func (m *AdminVerifyProtectedTimestampResponse) MarshalTo(dAtA []byte) (int, err dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n140, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n143, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n140 + i += n143 if m.Verified { dAtA[i] = 0x10 i++ @@ -14047,11 +14271,11 @@ func (m *AddSSTableRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) - n141, err := m.RequestHeader.MarshalTo(dAtA[i:]) + n144, err := m.RequestHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n141 + i += n144 if len(m.Data) > 0 { dAtA[i] = 0x12 i++ @@ -14072,11 +14296,11 @@ func (m *AddSSTableRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.MVCCStats.Size())) - n142, err := m.MVCCStats.MarshalTo(dAtA[i:]) + n145, err := m.MVCCStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n142 + i += n145 } if m.IngestAsWrites { dAtA[i] = 0x28 @@ -14109,11 +14333,11 @@ func (m *AddSSTableResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n143, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n146, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n143 + i += n146 return i, nil } @@ -14135,19 +14359,19 @@ func (m *RefreshRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) - n144, err := m.RequestHeader.MarshalTo(dAtA[i:]) + n147, err := m.RequestHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n144 + i += n147 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.RefreshFrom.Size())) - n145, err := m.RefreshFrom.MarshalTo(dAtA[i:]) + n148, err := m.RefreshFrom.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n145 + i += n148 return i, nil } @@ -14169,11 +14393,11 @@ func (m *RefreshResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n146, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n149, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n146 + i += n149 return i, nil } @@ -14195,19 +14419,19 @@ func (m *RefreshRangeRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) - n147, err := m.RequestHeader.MarshalTo(dAtA[i:]) + n150, err := m.RequestHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n147 + i += n150 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.RefreshFrom.Size())) - n148, err := m.RefreshFrom.MarshalTo(dAtA[i:]) + n151, err := m.RefreshFrom.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n148 + i += n151 return i, nil } @@ -14229,11 +14453,11 @@ func (m *RefreshRangeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n149, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n152, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n149 + i += n152 return i, nil } @@ -14255,27 +14479,27 @@ func (m *SubsumeRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) - n150, err := m.RequestHeader.MarshalTo(dAtA[i:]) + n153, err := m.RequestHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n150 + i += n153 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.LeftDesc.Size())) - n151, err := m.LeftDesc.MarshalTo(dAtA[i:]) + n154, err := m.LeftDesc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n151 + i += n154 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.RightDesc.Size())) - n152, err := m.RightDesc.MarshalTo(dAtA[i:]) + n155, err := m.RightDesc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n152 + i += n155 return i, nil } @@ -14297,19 +14521,19 @@ func (m *SubsumeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n153, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n156, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n153 + i += n156 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.MVCCStats.Size())) - n154, err := m.MVCCStats.MarshalTo(dAtA[i:]) + n157, err := m.MVCCStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n154 + i += n157 if m.LeaseAppliedIndex != 0 { dAtA[i] = 0x20 i++ @@ -14318,11 +14542,11 @@ func (m *SubsumeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.FreezeStart.Size())) - n155, err := m.FreezeStart.MarshalTo(dAtA[i:]) + n158, err := m.FreezeStart.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n155 + i += n158 return i, nil } @@ -14344,11 +14568,11 @@ func (m *RangeStatsRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestHeader.Size())) - n156, err := m.RequestHeader.MarshalTo(dAtA[i:]) + n159, err := m.RequestHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n156 + i += n159 return i, nil } @@ -14370,19 +14594,19 @@ func (m *RangeStatsResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n157, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n160, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n157 + i += n160 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.MVCCStats.Size())) - n158, err := m.MVCCStats.MarshalTo(dAtA[i:]) + n161, err := m.MVCCStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n158 + i += n161 if m.QueriesPerSecond != 0 { dAtA[i] = 0x19 i++ @@ -14408,11 +14632,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Value != nil { - nn159, err := m.Value.MarshalTo(dAtA[i:]) + nn162, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn159 + i += nn162 } return i, nil } @@ -14423,11 +14647,11 @@ func (m *RequestUnion_Get) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Get.Size())) - n160, err := m.Get.MarshalTo(dAtA[i:]) + n163, err := m.Get.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n160 + i += n163 } return i, nil } @@ -14437,11 +14661,11 @@ func (m *RequestUnion_Put) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Put.Size())) - n161, err := m.Put.MarshalTo(dAtA[i:]) + n164, err := m.Put.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n161 + i += n164 } return i, nil } @@ -14451,11 +14675,11 @@ func (m *RequestUnion_ConditionalPut) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.ConditionalPut.Size())) - n162, err := m.ConditionalPut.MarshalTo(dAtA[i:]) + n165, err := m.ConditionalPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n162 + i += n165 } return i, nil } @@ -14465,11 +14689,11 @@ func (m *RequestUnion_Increment) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Increment.Size())) - n163, err := m.Increment.MarshalTo(dAtA[i:]) + n166, err := m.Increment.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n163 + i += n166 } return i, nil } @@ -14479,11 +14703,11 @@ func (m *RequestUnion_Delete) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Delete.Size())) - n164, err := m.Delete.MarshalTo(dAtA[i:]) + n167, err := m.Delete.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n164 + i += n167 } return i, nil } @@ -14493,11 +14717,11 @@ func (m *RequestUnion_DeleteRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeleteRange.Size())) - n165, err := m.DeleteRange.MarshalTo(dAtA[i:]) + n168, err := m.DeleteRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n165 + i += n168 } return i, nil } @@ -14507,11 +14731,11 @@ func (m *RequestUnion_Scan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintApi(dAtA, i, uint64(m.Scan.Size())) - n166, err := m.Scan.MarshalTo(dAtA[i:]) + n169, err := m.Scan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n166 + i += n169 } return i, nil } @@ -14521,11 +14745,11 @@ func (m *RequestUnion_EndTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintApi(dAtA, i, uint64(m.EndTxn.Size())) - n167, err := m.EndTxn.MarshalTo(dAtA[i:]) + n170, err := m.EndTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n167 + i += n170 } return i, nil } @@ -14535,11 +14759,11 @@ func (m *RequestUnion_AdminSplit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminSplit.Size())) - n168, err := m.AdminSplit.MarshalTo(dAtA[i:]) + n171, err := m.AdminSplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n168 + i += n171 } return i, nil } @@ -14549,11 +14773,11 @@ func (m *RequestUnion_AdminMerge) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminMerge.Size())) - n169, err := m.AdminMerge.MarshalTo(dAtA[i:]) + n172, err := m.AdminMerge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n169 + i += n172 } return i, nil } @@ -14563,11 +14787,11 @@ func (m *RequestUnion_HeartbeatTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x62 i++ i = encodeVarintApi(dAtA, i, uint64(m.HeartbeatTxn.Size())) - n170, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) + n173, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n170 + i += n173 } return i, nil } @@ -14577,11 +14801,11 @@ func (m *RequestUnion_Gc) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintApi(dAtA, i, uint64(m.Gc.Size())) - n171, err := m.Gc.MarshalTo(dAtA[i:]) + n174, err := m.Gc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n171 + i += n174 } return i, nil } @@ -14591,11 +14815,11 @@ func (m *RequestUnion_PushTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushTxn.Size())) - n172, err := m.PushTxn.MarshalTo(dAtA[i:]) + n175, err := m.PushTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n172 + i += n175 } return i, nil } @@ -14607,11 +14831,11 @@ func (m *RequestUnion_ResolveIntent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntent.Size())) - n173, err := m.ResolveIntent.MarshalTo(dAtA[i:]) + n176, err := m.ResolveIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n173 + i += n176 } return i, nil } @@ -14623,11 +14847,11 @@ func (m *RequestUnion_ResolveIntentRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntentRange.Size())) - n174, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) + n177, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n174 + i += n177 } return i, nil } @@ -14639,11 +14863,11 @@ func (m *RequestUnion_Merge) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Merge.Size())) - n175, err := m.Merge.MarshalTo(dAtA[i:]) + n178, err := m.Merge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n175 + i += n178 } return i, nil } @@ -14655,11 +14879,11 @@ func (m *RequestUnion_TruncateLog) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TruncateLog.Size())) - n176, err := m.TruncateLog.MarshalTo(dAtA[i:]) + n179, err := m.TruncateLog.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n176 + i += n179 } return i, nil } @@ -14671,11 +14895,11 @@ func (m *RequestUnion_RequestLease) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestLease.Size())) - n177, err := m.RequestLease.MarshalTo(dAtA[i:]) + n180, err := m.RequestLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n177 + i += n180 } return i, nil } @@ -14687,11 +14911,11 @@ func (m *RequestUnion_ReverseScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ReverseScan.Size())) - n178, err := m.ReverseScan.MarshalTo(dAtA[i:]) + n181, err := m.ReverseScan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n178 + i += n181 } return i, nil } @@ -14703,11 +14927,11 @@ func (m *RequestUnion_ComputeChecksum) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ComputeChecksum.Size())) - n179, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) + n182, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n179 + i += n182 } return i, nil } @@ -14719,11 +14943,11 @@ func (m *RequestUnion_CheckConsistency) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.CheckConsistency.Size())) - n180, err := m.CheckConsistency.MarshalTo(dAtA[i:]) + n183, err := m.CheckConsistency.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n180 + i += n183 } return i, nil } @@ -14735,11 +14959,11 @@ func (m *RequestUnion_InitPut) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.InitPut.Size())) - n181, err := m.InitPut.MarshalTo(dAtA[i:]) + n184, err := m.InitPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n181 + i += n184 } return i, nil } @@ -14751,11 +14975,11 @@ func (m *RequestUnion_TransferLease) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TransferLease.Size())) - n182, err := m.TransferLease.MarshalTo(dAtA[i:]) + n185, err := m.TransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n182 + i += n185 } return i, nil } @@ -14767,11 +14991,11 @@ func (m *RequestUnion_AdminTransferLease) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminTransferLease.Size())) - n183, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) + n186, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n186 } return i, nil } @@ -14783,11 +15007,11 @@ func (m *RequestUnion_LeaseInfo) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.LeaseInfo.Size())) - n184, err := m.LeaseInfo.MarshalTo(dAtA[i:]) + n187, err := m.LeaseInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n187 } return i, nil } @@ -14799,11 +15023,11 @@ func (m *RequestUnion_WriteBatch) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.WriteBatch.Size())) - n185, err := m.WriteBatch.MarshalTo(dAtA[i:]) + n188, err := m.WriteBatch.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n185 + i += n188 } return i, nil } @@ -14815,11 +15039,11 @@ func (m *RequestUnion_Export) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Export.Size())) - n186, err := m.Export.MarshalTo(dAtA[i:]) + n189, err := m.Export.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n186 + i += n189 } return i, nil } @@ -14831,11 +15055,11 @@ func (m *RequestUnion_QueryTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryTxn.Size())) - n187, err := m.QueryTxn.MarshalTo(dAtA[i:]) + n190, err := m.QueryTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n187 + i += n190 } return i, nil } @@ -14847,11 +15071,11 @@ func (m *RequestUnion_Import) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Import.Size())) - n188, err := m.Import.MarshalTo(dAtA[i:]) + n191, err := m.Import.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n188 + i += n191 } return i, nil } @@ -14863,11 +15087,11 @@ func (m *RequestUnion_AdminChangeReplicas) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminChangeReplicas.Size())) - n189, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) + n192, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n189 + i += n192 } return i, nil } @@ -14879,11 +15103,11 @@ func (m *RequestUnion_AdminScatter) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminScatter.Size())) - n190, err := m.AdminScatter.MarshalTo(dAtA[i:]) + n193, err := m.AdminScatter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n190 + i += n193 } return i, nil } @@ -14895,11 +15119,11 @@ func (m *RequestUnion_AddSstable) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AddSstable.Size())) - n191, err := m.AddSstable.MarshalTo(dAtA[i:]) + n194, err := m.AddSstable.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n191 + i += n194 } return i, nil } @@ -14911,11 +15135,11 @@ func (m *RequestUnion_ClearRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.ClearRange.Size())) - n192, err := m.ClearRange.MarshalTo(dAtA[i:]) + n195, err := m.ClearRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n192 + i += n195 } return i, nil } @@ -14927,11 +15151,11 @@ func (m *RequestUnion_RecomputeStats) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RecomputeStats.Size())) - n193, err := m.RecomputeStats.MarshalTo(dAtA[i:]) + n196, err := m.RecomputeStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n193 + i += n196 } return i, nil } @@ -14943,11 +15167,11 @@ func (m *RequestUnion_Refresh) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Refresh.Size())) - n194, err := m.Refresh.MarshalTo(dAtA[i:]) + n197, err := m.Refresh.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n194 + i += n197 } return i, nil } @@ -14959,11 +15183,11 @@ func (m *RequestUnion_RefreshRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RefreshRange.Size())) - n195, err := m.RefreshRange.MarshalTo(dAtA[i:]) + n198, err := m.RefreshRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n195 + i += n198 } return i, nil } @@ -14975,11 +15199,11 @@ func (m *RequestUnion_QueryIntent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryIntent.Size())) - n196, err := m.QueryIntent.MarshalTo(dAtA[i:]) + n199, err := m.QueryIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n196 + i += n199 } return i, nil } @@ -14991,11 +15215,11 @@ func (m *RequestUnion_Subsume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Subsume.Size())) - n197, err := m.Subsume.MarshalTo(dAtA[i:]) + n200, err := m.Subsume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n197 + i += n200 } return i, nil } @@ -15007,11 +15231,11 @@ func (m *RequestUnion_RangeStats) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RangeStats.Size())) - n198, err := m.RangeStats.MarshalTo(dAtA[i:]) + n201, err := m.RangeStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n198 + i += n201 } return i, nil } @@ -15023,11 +15247,11 @@ func (m *RequestUnion_AdminRelocateRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminRelocateRange.Size())) - n199, err := m.AdminRelocateRange.MarshalTo(dAtA[i:]) + n202, err := m.AdminRelocateRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n199 + i += n202 } return i, nil } @@ -15039,11 +15263,11 @@ func (m *RequestUnion_RecoverTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RecoverTxn.Size())) - n200, err := m.RecoverTxn.MarshalTo(dAtA[i:]) + n203, err := m.RecoverTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n200 + i += n203 } return i, nil } @@ -15055,11 +15279,11 @@ func (m *RequestUnion_AdminUnsplit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminUnsplit.Size())) - n201, err := m.AdminUnsplit.MarshalTo(dAtA[i:]) + n204, err := m.AdminUnsplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n201 + i += n204 } return i, nil } @@ -15071,11 +15295,11 @@ func (m *RequestUnion_RevertRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3 i++ i = encodeVarintApi(dAtA, i, uint64(m.RevertRange.Size())) - n202, err := m.RevertRange.MarshalTo(dAtA[i:]) + n205, err := m.RevertRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n202 + i += n205 } return i, nil } @@ -15087,11 +15311,27 @@ func (m *RequestUnion_AdminVerifyProtectedTimestamp) MarshalTo(dAtA []byte) (int dAtA[i] = 0x3 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminVerifyProtectedTimestamp.Size())) - n203, err := m.AdminVerifyProtectedTimestamp.MarshalTo(dAtA[i:]) + n206, err := m.AdminVerifyProtectedTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n203 + i += n206 + } + return i, nil +} +func (m *RequestUnion_Migrate) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.Migrate != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x3 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.Migrate.Size())) + n207, err := m.Migrate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n207 } return i, nil } @@ -15111,11 +15351,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Value != nil { - nn204, err := m.Value.MarshalTo(dAtA[i:]) + nn208, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn204 + i += nn208 } return i, nil } @@ -15126,11 +15366,11 @@ func (m *ResponseUnion_Get) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Get.Size())) - n205, err := m.Get.MarshalTo(dAtA[i:]) + n209, err := m.Get.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n205 + i += n209 } return i, nil } @@ -15140,11 +15380,11 @@ func (m *ResponseUnion_Put) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Put.Size())) - n206, err := m.Put.MarshalTo(dAtA[i:]) + n210, err := m.Put.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n206 + i += n210 } return i, nil } @@ -15154,11 +15394,11 @@ func (m *ResponseUnion_ConditionalPut) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.ConditionalPut.Size())) - n207, err := m.ConditionalPut.MarshalTo(dAtA[i:]) + n211, err := m.ConditionalPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n207 + i += n211 } return i, nil } @@ -15168,11 +15408,11 @@ func (m *ResponseUnion_Increment) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Increment.Size())) - n208, err := m.Increment.MarshalTo(dAtA[i:]) + n212, err := m.Increment.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n208 + i += n212 } return i, nil } @@ -15182,11 +15422,11 @@ func (m *ResponseUnion_Delete) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Delete.Size())) - n209, err := m.Delete.MarshalTo(dAtA[i:]) + n213, err := m.Delete.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n209 + i += n213 } return i, nil } @@ -15196,11 +15436,11 @@ func (m *ResponseUnion_DeleteRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeleteRange.Size())) - n210, err := m.DeleteRange.MarshalTo(dAtA[i:]) + n214, err := m.DeleteRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n210 + i += n214 } return i, nil } @@ -15210,11 +15450,11 @@ func (m *ResponseUnion_Scan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintApi(dAtA, i, uint64(m.Scan.Size())) - n211, err := m.Scan.MarshalTo(dAtA[i:]) + n215, err := m.Scan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n211 + i += n215 } return i, nil } @@ -15224,11 +15464,11 @@ func (m *ResponseUnion_EndTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintApi(dAtA, i, uint64(m.EndTxn.Size())) - n212, err := m.EndTxn.MarshalTo(dAtA[i:]) + n216, err := m.EndTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n212 + i += n216 } return i, nil } @@ -15238,11 +15478,11 @@ func (m *ResponseUnion_AdminSplit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminSplit.Size())) - n213, err := m.AdminSplit.MarshalTo(dAtA[i:]) + n217, err := m.AdminSplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n213 + i += n217 } return i, nil } @@ -15252,11 +15492,11 @@ func (m *ResponseUnion_AdminMerge) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminMerge.Size())) - n214, err := m.AdminMerge.MarshalTo(dAtA[i:]) + n218, err := m.AdminMerge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n214 + i += n218 } return i, nil } @@ -15266,11 +15506,11 @@ func (m *ResponseUnion_HeartbeatTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x62 i++ i = encodeVarintApi(dAtA, i, uint64(m.HeartbeatTxn.Size())) - n215, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) + n219, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n215 + i += n219 } return i, nil } @@ -15280,11 +15520,11 @@ func (m *ResponseUnion_Gc) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintApi(dAtA, i, uint64(m.Gc.Size())) - n216, err := m.Gc.MarshalTo(dAtA[i:]) + n220, err := m.Gc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n216 + i += n220 } return i, nil } @@ -15294,11 +15534,11 @@ func (m *ResponseUnion_PushTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushTxn.Size())) - n217, err := m.PushTxn.MarshalTo(dAtA[i:]) + n221, err := m.PushTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n217 + i += n221 } return i, nil } @@ -15310,11 +15550,11 @@ func (m *ResponseUnion_ResolveIntent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntent.Size())) - n218, err := m.ResolveIntent.MarshalTo(dAtA[i:]) + n222, err := m.ResolveIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n218 + i += n222 } return i, nil } @@ -15326,11 +15566,11 @@ func (m *ResponseUnion_ResolveIntentRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntentRange.Size())) - n219, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) + n223, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n219 + i += n223 } return i, nil } @@ -15342,11 +15582,11 @@ func (m *ResponseUnion_Merge) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Merge.Size())) - n220, err := m.Merge.MarshalTo(dAtA[i:]) + n224, err := m.Merge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n220 + i += n224 } return i, nil } @@ -15358,11 +15598,11 @@ func (m *ResponseUnion_TruncateLog) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TruncateLog.Size())) - n221, err := m.TruncateLog.MarshalTo(dAtA[i:]) + n225, err := m.TruncateLog.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n221 + i += n225 } return i, nil } @@ -15374,11 +15614,11 @@ func (m *ResponseUnion_RequestLease) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestLease.Size())) - n222, err := m.RequestLease.MarshalTo(dAtA[i:]) + n226, err := m.RequestLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n222 + i += n226 } return i, nil } @@ -15390,11 +15630,11 @@ func (m *ResponseUnion_ReverseScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ReverseScan.Size())) - n223, err := m.ReverseScan.MarshalTo(dAtA[i:]) + n227, err := m.ReverseScan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n223 + i += n227 } return i, nil } @@ -15406,11 +15646,11 @@ func (m *ResponseUnion_ComputeChecksum) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ComputeChecksum.Size())) - n224, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) + n228, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n224 + i += n228 } return i, nil } @@ -15422,11 +15662,11 @@ func (m *ResponseUnion_CheckConsistency) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.CheckConsistency.Size())) - n225, err := m.CheckConsistency.MarshalTo(dAtA[i:]) + n229, err := m.CheckConsistency.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n225 + i += n229 } return i, nil } @@ -15438,11 +15678,11 @@ func (m *ResponseUnion_InitPut) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.InitPut.Size())) - n226, err := m.InitPut.MarshalTo(dAtA[i:]) + n230, err := m.InitPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n226 + i += n230 } return i, nil } @@ -15454,11 +15694,11 @@ func (m *ResponseUnion_AdminTransferLease) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminTransferLease.Size())) - n227, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) + n231, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n227 + i += n231 } return i, nil } @@ -15470,11 +15710,11 @@ func (m *ResponseUnion_LeaseInfo) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.LeaseInfo.Size())) - n228, err := m.LeaseInfo.MarshalTo(dAtA[i:]) + n232, err := m.LeaseInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n228 + i += n232 } return i, nil } @@ -15486,11 +15726,11 @@ func (m *ResponseUnion_WriteBatch) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.WriteBatch.Size())) - n229, err := m.WriteBatch.MarshalTo(dAtA[i:]) + n233, err := m.WriteBatch.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n229 + i += n233 } return i, nil } @@ -15502,11 +15742,11 @@ func (m *ResponseUnion_Export) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Export.Size())) - n230, err := m.Export.MarshalTo(dAtA[i:]) + n234, err := m.Export.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n230 + i += n234 } return i, nil } @@ -15518,11 +15758,11 @@ func (m *ResponseUnion_QueryTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryTxn.Size())) - n231, err := m.QueryTxn.MarshalTo(dAtA[i:]) + n235, err := m.QueryTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n231 + i += n235 } return i, nil } @@ -15534,11 +15774,11 @@ func (m *ResponseUnion_Import) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Import.Size())) - n232, err := m.Import.MarshalTo(dAtA[i:]) + n236, err := m.Import.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n232 + i += n236 } return i, nil } @@ -15550,11 +15790,11 @@ func (m *ResponseUnion_AdminChangeReplicas) MarshalTo(dAtA []byte) (int, error) dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminChangeReplicas.Size())) - n233, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) + n237, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n233 + i += n237 } return i, nil } @@ -15566,11 +15806,11 @@ func (m *ResponseUnion_AdminScatter) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminScatter.Size())) - n234, err := m.AdminScatter.MarshalTo(dAtA[i:]) + n238, err := m.AdminScatter.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n234 + i += n238 } return i, nil } @@ -15582,11 +15822,11 @@ func (m *ResponseUnion_AddSstable) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AddSstable.Size())) - n235, err := m.AddSstable.MarshalTo(dAtA[i:]) + n239, err := m.AddSstable.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n235 + i += n239 } return i, nil } @@ -15598,11 +15838,11 @@ func (m *ResponseUnion_ClearRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.ClearRange.Size())) - n236, err := m.ClearRange.MarshalTo(dAtA[i:]) + n240, err := m.ClearRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n236 + i += n240 } return i, nil } @@ -15614,11 +15854,11 @@ func (m *ResponseUnion_RecomputeStats) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RecomputeStats.Size())) - n237, err := m.RecomputeStats.MarshalTo(dAtA[i:]) + n241, err := m.RecomputeStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n237 + i += n241 } return i, nil } @@ -15630,11 +15870,11 @@ func (m *ResponseUnion_Refresh) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Refresh.Size())) - n238, err := m.Refresh.MarshalTo(dAtA[i:]) + n242, err := m.Refresh.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n238 + i += n242 } return i, nil } @@ -15646,11 +15886,11 @@ func (m *ResponseUnion_RefreshRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RefreshRange.Size())) - n239, err := m.RefreshRange.MarshalTo(dAtA[i:]) + n243, err := m.RefreshRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n239 + i += n243 } return i, nil } @@ -15662,11 +15902,11 @@ func (m *ResponseUnion_QueryIntent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryIntent.Size())) - n240, err := m.QueryIntent.MarshalTo(dAtA[i:]) + n244, err := m.QueryIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n240 + i += n244 } return i, nil } @@ -15678,11 +15918,11 @@ func (m *ResponseUnion_Subsume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Subsume.Size())) - n241, err := m.Subsume.MarshalTo(dAtA[i:]) + n245, err := m.Subsume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n241 + i += n245 } return i, nil } @@ -15694,11 +15934,11 @@ func (m *ResponseUnion_RangeStats) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RangeStats.Size())) - n242, err := m.RangeStats.MarshalTo(dAtA[i:]) + n246, err := m.RangeStats.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n242 + i += n246 } return i, nil } @@ -15710,11 +15950,11 @@ func (m *ResponseUnion_AdminRelocateRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminRelocateRange.Size())) - n243, err := m.AdminRelocateRange.MarshalTo(dAtA[i:]) + n247, err := m.AdminRelocateRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n243 + i += n247 } return i, nil } @@ -15726,11 +15966,11 @@ func (m *ResponseUnion_RecoverTxn) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.RecoverTxn.Size())) - n244, err := m.RecoverTxn.MarshalTo(dAtA[i:]) + n248, err := m.RecoverTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n244 + i += n248 } return i, nil } @@ -15742,11 +15982,11 @@ func (m *ResponseUnion_AdminUnsplit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminUnsplit.Size())) - n245, err := m.AdminUnsplit.MarshalTo(dAtA[i:]) + n249, err := m.AdminUnsplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n245 + i += n249 } return i, nil } @@ -15758,11 +15998,11 @@ func (m *ResponseUnion_RevertRange) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3 i++ i = encodeVarintApi(dAtA, i, uint64(m.RevertRange.Size())) - n246, err := m.RevertRange.MarshalTo(dAtA[i:]) + n250, err := m.RevertRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n246 + i += n250 } return i, nil } @@ -15774,11 +16014,27 @@ func (m *ResponseUnion_AdminVerifyProtectedTimestamp) MarshalTo(dAtA []byte) (in dAtA[i] = 0x3 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminVerifyProtectedTimestamp.Size())) - n247, err := m.AdminVerifyProtectedTimestamp.MarshalTo(dAtA[i:]) + n251, err := m.AdminVerifyProtectedTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n247 + i += n251 + } + return i, nil +} +func (m *ResponseUnion_Migrate) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.Migrate != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x3 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.Migrate.Size())) + n252, err := m.Migrate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n252 } return i, nil } @@ -15800,19 +16056,19 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp.Size())) - n248, err := m.Timestamp.MarshalTo(dAtA[i:]) + n253, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n248 + i += n253 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Replica.Size())) - n249, err := m.Replica.MarshalTo(dAtA[i:]) + n254, err := m.Replica.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n249 + i += n254 if m.RangeID != 0 { dAtA[i] = 0x18 i++ @@ -15828,11 +16084,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Txn.Size())) - n250, err := m.Txn.MarshalTo(dAtA[i:]) + n255, err := m.Txn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n250 + i += n255 } if m.ReadConsistency != 0 { dAtA[i] = 0x30 @@ -15873,11 +16129,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x62 i++ i = encodeVarintApi(dAtA, i, uint64(m.ScanOptions.Size())) - n251, err := m.ScanOptions.MarshalTo(dAtA[i:]) + n256, err := m.ScanOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n251 + i += n256 } if m.AsyncConsensus { dAtA[i] = 0x68 @@ -15920,11 +16176,11 @@ func (m *BatchRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Header.Size())) - n252, err := m.Header.MarshalTo(dAtA[i:]) + n257, err := m.Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n252 + i += n257 if len(m.Requests) > 0 { for _, msg := range m.Requests { dAtA[i] = 0x12 @@ -15958,11 +16214,11 @@ func (m *BatchResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.BatchResponse_Header.Size())) - n253, err := m.BatchResponse_Header.MarshalTo(dAtA[i:]) + n258, err := m.BatchResponse_Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n253 + i += n258 if len(m.Responses) > 0 { for _, msg := range m.Responses { dAtA[i] = 0x12 @@ -15997,38 +16253,38 @@ func (m *BatchResponse_Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Error.Size())) - n254, err := m.Error.MarshalTo(dAtA[i:]) + n259, err := m.Error.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n254 + i += n259 } dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp.Size())) - n255, err := m.Timestamp.MarshalTo(dAtA[i:]) + n260, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n255 + i += n260 if m.Txn != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.Txn.Size())) - n256, err := m.Txn.MarshalTo(dAtA[i:]) + n261, err := m.Txn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n256 + i += n261 } dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Now.Size())) - n257, err := m.Now.MarshalTo(dAtA[i:]) + n262, err := m.Now.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n257 + i += n262 if len(m.CollectedSpans) > 0 { for _, msg := range m.CollectedSpans { dAtA[i] = 0x32 @@ -16062,19 +16318,19 @@ func (m *RangeFeedRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Header.Size())) - n258, err := m.Header.MarshalTo(dAtA[i:]) + n263, err := m.Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n258 + i += n263 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n259, err := m.Span.MarshalTo(dAtA[i:]) + n264, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n259 + i += n264 if m.WithDiff { dAtA[i] = 0x18 i++ @@ -16112,19 +16368,19 @@ func (m *RangeFeedValue) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Value.Size())) - n260, err := m.Value.MarshalTo(dAtA[i:]) + n265, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n260 + i += n265 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.PrevValue.Size())) - n261, err := m.PrevValue.MarshalTo(dAtA[i:]) + n266, err := m.PrevValue.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n261 + i += n266 return i, nil } @@ -16146,19 +16402,19 @@ func (m *RangeFeedCheckpoint) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n262, err := m.Span.MarshalTo(dAtA[i:]) + n267, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n262 + i += n267 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolvedTS.Size())) - n263, err := m.ResolvedTS.MarshalTo(dAtA[i:]) + n268, err := m.ResolvedTS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n263 + i += n268 return i, nil } @@ -16180,11 +16436,11 @@ func (m *RangeFeedError) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Error.Size())) - n264, err := m.Error.MarshalTo(dAtA[i:]) + n269, err := m.Error.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n264 + i += n269 return i, nil } @@ -16207,31 +16463,31 @@ func (m *RangeFeedEvent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Val.Size())) - n265, err := m.Val.MarshalTo(dAtA[i:]) + n270, err := m.Val.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n265 + i += n270 } if m.Checkpoint != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Checkpoint.Size())) - n266, err := m.Checkpoint.MarshalTo(dAtA[i:]) + n271, err := m.Checkpoint.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n266 + i += n271 } if m.Error != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.Error.Size())) - n267, err := m.Error.MarshalTo(dAtA[i:]) + n272, err := m.Error.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n267 + i += n272 } return i, nil } @@ -17883,6 +18139,30 @@ func (m *AdminScatterResponse_Range) Size() (n int) { return n } +func (m *MigrateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.RequestHeader.Size() + n += 1 + l + sovApi(uint64(l)) + l = m.NewVersion.Size() + n += 1 + l + sovApi(uint64(l)) + return n +} + +func (m *MigrateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ResponseHeader.Size() + n += 1 + l + sovApi(uint64(l)) + return n +} + func (m *AdminVerifyProtectedTimestampRequest) Size() (n int) { if m == nil { return 0 @@ -18604,6 +18884,18 @@ func (m *RequestUnion_AdminVerifyProtectedTimestamp) Size() (n int) { } return n } +func (m *RequestUnion_Migrate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Migrate != nil { + l = m.Migrate.Size() + n += 2 + l + sovApi(uint64(l)) + } + return n +} func (m *ResponseUnion) Size() (n int) { if m == nil { return 0 @@ -19132,6 +19424,18 @@ func (m *ResponseUnion_AdminVerifyProtectedTimestamp) Size() (n int) { } return n } +func (m *ResponseUnion_Migrate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Migrate != nil { + l = m.Migrate.Size() + n += 2 + l + sovApi(uint64(l)) + } + return n +} func (m *Header) Size() (n int) { if m == nil { return 0 @@ -30818,7 +31122,107 @@ func (m *ImportRequest_File) Unmarshal(dAtA []byte) error { } return nil } -func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { +func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TableRekey: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TableRekey: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OldID", wireType) + } + m.OldID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OldID |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewDesc", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewDesc = append(m.NewDesc[:0], dAtA[iNdEx:postIndex]...) + if m.NewDesc == nil { + m.NewDesc = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImportResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -30841,17 +31245,17 @@ func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: TableRekey: wiretype end group for non-group") + return fmt.Errorf("proto: ImportResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: TableRekey: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ImportResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field OldID", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) } - m.OldID = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowApi @@ -30861,16 +31265,27 @@ func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.OldID |= (uint32(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - case 2: + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NewDesc", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Imported", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowApi @@ -30880,21 +31295,20 @@ func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthApi } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.NewDesc = append(m.NewDesc[:0], dAtA[iNdEx:postIndex]...) - if m.NewDesc == nil { - m.NewDesc = []byte{} + if err := m.Imported.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex default: @@ -30918,7 +31332,7 @@ func (m *ImportRequest_TableRekey) Unmarshal(dAtA []byte) error { } return nil } -func (m *ImportResponse) Unmarshal(dAtA []byte) error { +func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -30941,15 +31355,15 @@ func (m *ImportResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ImportResponse: wiretype end group for non-group") + return fmt.Errorf("proto: AdminScatterRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ImportResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AdminScatterRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestHeader", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -30973,15 +31387,15 @@ func (m *ImportResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RequestHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Imported", wireType) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RandomizeLeases", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowApi @@ -30991,22 +31405,12 @@ func (m *ImportResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Imported.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.RandomizeLeases = bool(v != 0) default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -31028,7 +31432,7 @@ func (m *ImportResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { +func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -31051,15 +31455,15 @@ func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AdminScatterRequest: wiretype end group for non-group") + return fmt.Errorf("proto: AdminScatterResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AdminScatterRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AdminScatterResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestHeader", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -31083,15 +31487,15 @@ func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.RequestHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RandomizeLeases", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowApi @@ -31101,12 +31505,23 @@ func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - m.RandomizeLeases = bool(v != 0) + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, AdminScatterResponse_Range{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -31128,7 +31543,7 @@ func (m *AdminScatterRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { +func (m *AdminScatterResponse_Range) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -31151,15 +31566,15 @@ func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AdminScatterResponse: wiretype end group for non-group") + return fmt.Errorf("proto: Range: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AdminScatterResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Range: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Span", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -31183,13 +31598,93 @@ func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Span.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MigrateRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MigrateRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MigrateRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestHeader", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RequestHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NewVersion", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -31213,8 +31708,7 @@ func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Ranges = append(m.Ranges, AdminScatterResponse_Range{}) - if err := m.Ranges[len(m.Ranges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.NewVersion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -31239,7 +31733,7 @@ func (m *AdminScatterResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *AdminScatterResponse_Range) Unmarshal(dAtA []byte) error { +func (m *MigrateResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -31262,15 +31756,15 @@ func (m *AdminScatterResponse_Range) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Range: wiretype end group for non-group") + return fmt.Errorf("proto: MigrateResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Range: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MigrateResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Span", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -31294,7 +31788,7 @@ func (m *AdminScatterResponse_Range) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Span.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -34201,6 +34695,38 @@ func (m *RequestUnion) Unmarshal(dAtA []byte) error { } m.Value = &RequestUnion_AdminVerifyProtectedTimestamp{v} iNdEx = postIndex + case 50: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Migrate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &MigrateRequest{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &RequestUnion_Migrate{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -35627,6 +36153,38 @@ func (m *ResponseUnion) Unmarshal(dAtA []byte) error { } m.Value = &ResponseUnion_AdminVerifyProtectedTimestamp{v} iNdEx = postIndex + case 50: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Migrate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &MigrateResponse{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &ResponseUnion_Migrate{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -37135,461 +37693,465 @@ var ( ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_e65f15698b48cede) } - -var fileDescriptor_api_e65f15698b48cede = []byte{ - // 7241 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x8c, 0x23, 0xc7, - 0x75, 0xee, 0x34, 0xc9, 0xe1, 0x90, 0x87, 0x1c, 0x0e, 0xa7, 0x66, 0x7f, 0xb8, 0x23, 0x69, 0x66, - 0x96, 0xfb, 0xab, 0xb5, 0x34, 0xab, 0xdd, 0xb5, 0xae, 0x64, 0x49, 0x96, 0x3d, 0xc3, 0xe1, 0x2e, - 0xb9, 0xb3, 0xf3, 0xa3, 0x26, 0x67, 0xe5, 0x95, 0xaf, 0x6e, 0xbb, 0xa7, 0xbb, 0x86, 0xd3, 0x5e, - 0xb2, 0x9b, 0xdb, 0xdd, 0x9c, 0x9f, 0x05, 0x2e, 0x2e, 0xee, 0xbd, 0x0f, 0x0e, 0x1c, 0x43, 0x08, - 0x90, 0x20, 0x08, 0xec, 0x04, 0x16, 0xe0, 0x20, 0x09, 0x12, 0xd8, 0x40, 0x80, 0x20, 0x41, 0x82, - 0x04, 0x7e, 0xc8, 0x8b, 0x62, 0x18, 0x81, 0x10, 0x24, 0xb0, 0x11, 0x20, 0x83, 0x78, 0x0c, 0x24, - 0x86, 0x1f, 0xf2, 0x6a, 0x40, 0x0f, 0x49, 0x50, 0x3f, 0xfd, 0x47, 0x36, 0x7f, 0x66, 0xd4, 0x4a, - 0x14, 0xe4, 0x89, 0xec, 0x53, 0x75, 0x4e, 0x57, 0x9d, 0xaa, 0x3a, 0x75, 0xbe, 0xaa, 0x53, 0xd5, - 0x30, 0x6d, 0x1a, 0xb2, 0xb2, 0xdb, 0xde, 0xbe, 0x29, 0xb7, 0xb5, 0xc5, 0xb6, 0x69, 0xd8, 0x06, - 0x9a, 0x56, 0x0c, 0xe5, 0x31, 0x25, 0x2f, 0xf2, 0xc4, 0x59, 0xe4, 0xe4, 0x52, 0x65, 0x5b, 0x66, - 0xd9, 0x66, 0xcf, 0x38, 0x34, 0x6c, 0x9a, 0x86, 0x69, 0x71, 0xea, 0x39, 0x87, 0xda, 0xc2, 0xb6, - 0xec, 0xcb, 0x5d, 0xb4, 0x6c, 0xc3, 0x94, 0x1b, 0xf8, 0x26, 0xd6, 0x1b, 0x9a, 0xee, 0xfc, 0x90, - 0x7c, 0x7b, 0x8a, 0xc2, 0xf3, 0x5c, 0x1a, 0x94, 0xe7, 0x0e, 0xcf, 0x54, 0xe8, 0xd8, 0x5a, 0xf3, - 0xe6, 0x6e, 0x53, 0xb9, 0x69, 0x6b, 0x2d, 0x6c, 0xd9, 0x72, 0xab, 0xcd, 0x53, 0x16, 0x68, 0x8a, - 0x6d, 0xca, 0x8a, 0xa6, 0x37, 0x6e, 0x9a, 0x58, 0x31, 0x4c, 0x15, 0xab, 0x92, 0xd5, 0x96, 0x75, - 0xa7, 0xc8, 0x0d, 0xa3, 0x61, 0xd0, 0xbf, 0x37, 0xc9, 0x3f, 0x46, 0x2d, 0xfe, 0x1f, 0x48, 0x8b, - 0xb2, 0xde, 0xc0, 0x55, 0x7d, 0xc7, 0x40, 0x6f, 0x40, 0x42, 0xc5, 0x96, 0x52, 0x10, 0x16, 0x84, - 0xeb, 0x99, 0xdb, 0xc5, 0xc5, 0x1e, 0x5d, 0x2c, 0xd2, 0xbc, 0x2b, 0xd8, 0x52, 0x4c, 0xad, 0x6d, - 0x1b, 0xe6, 0x72, 0xe2, 0x83, 0xa3, 0xf9, 0x31, 0x91, 0x72, 0xa1, 0xcf, 0xc2, 0x78, 0x13, 0xcb, - 0x16, 0x2e, 0xc4, 0x28, 0x7b, 0x21, 0x84, 0xfd, 0x01, 0x49, 0xe7, 0x4c, 0x2c, 0x73, 0xf1, 0x2f, - 0x05, 0x98, 0x14, 0xf1, 0x93, 0x0e, 0xb6, 0xec, 0x0a, 0x96, 0x55, 0x6c, 0xa2, 0x0b, 0x10, 0x7f, - 0x8c, 0x0f, 0x0b, 0xf1, 0x05, 0xe1, 0x7a, 0x76, 0x79, 0xe2, 0xa3, 0xa3, 0xf9, 0xf8, 0x2a, 0x3e, - 0x14, 0x09, 0x0d, 0x2d, 0xc0, 0x04, 0xd6, 0x55, 0x89, 0x24, 0x27, 0x82, 0xc9, 0x49, 0xac, 0xab, - 0xab, 0xf8, 0x10, 0x29, 0x90, 0xb2, 0x88, 0x34, 0x5d, 0xc1, 0x85, 0xf1, 0x05, 0xe1, 0xfa, 0xf8, - 0xf2, 0xbd, 0x8f, 0x8e, 0xe6, 0x4b, 0x0d, 0xcd, 0xde, 0xed, 0x6c, 0x2f, 0x2a, 0x46, 0xeb, 0xa6, - 0x5b, 0x2a, 0x75, 0xdb, 0xfb, 0x7f, 0xb3, 0xfd, 0xb8, 0x71, 0xb3, 0x4f, 0x0b, 0x2c, 0xd6, 0x0f, - 0xf4, 0x1a, 0x7e, 0x22, 0xba, 0x82, 0x5f, 0x4b, 0xfc, 0xec, 0xfd, 0x79, 0xe1, 0x7e, 0x22, 0x25, - 0xe4, 0x63, 0xf7, 0x13, 0xa9, 0x58, 0x3e, 0x5e, 0xfc, 0x46, 0x1c, 0x72, 0x22, 0xb6, 0xda, 0x86, - 0x6e, 0x61, 0x5e, 0x8d, 0x97, 0x20, 0x6e, 0x1f, 0xe8, 0xb4, 0x1a, 0x99, 0xdb, 0x73, 0x21, 0xca, - 0xa8, 0x9b, 0xb2, 0x6e, 0xc9, 0x8a, 0xad, 0x19, 0xba, 0x48, 0xb2, 0xa2, 0x57, 0x21, 0x63, 0x62, - 0xab, 0xd3, 0xc2, 0xb4, 0xd9, 0x68, 0x0d, 0x33, 0xb7, 0xcf, 0x87, 0x70, 0xd6, 0xda, 0xb2, 0x2e, - 0x02, 0xcb, 0x4b, 0xfe, 0xa3, 0x0b, 0x90, 0xd2, 0x3b, 0x2d, 0xa2, 0x17, 0x8b, 0xd6, 0x3a, 0x2e, - 0x4e, 0xe8, 0x9d, 0xd6, 0x2a, 0x3e, 0xb4, 0x50, 0x09, 0x32, 0x26, 0x69, 0x34, 0x49, 0xd3, 0x77, - 0x0c, 0xab, 0x90, 0x5c, 0x88, 0x5f, 0xcf, 0xdc, 0x7e, 0xb6, 0x5f, 0xd3, 0x92, 0x6e, 0xc0, 0xdb, - 0x07, 0x4c, 0x87, 0x60, 0xa1, 0x1a, 0x4c, 0xf2, 0x92, 0x99, 0x58, 0xb6, 0x0c, 0xbd, 0x30, 0xb1, - 0x20, 0x5c, 0xcf, 0xdd, 0x5e, 0x0c, 0x13, 0x13, 0xd0, 0x02, 0x79, 0xec, 0xb4, 0xb0, 0x48, 0xb9, - 0xc4, 0xac, 0xe9, 0x7b, 0x2a, 0x3e, 0x82, 0xac, 0x3f, 0x15, 0x21, 0xc8, 0x89, 0xe5, 0xda, 0xd6, - 0x5a, 0x59, 0xda, 0x5a, 0x5f, 0x5d, 0xdf, 0x78, 0x7b, 0x3d, 0x3f, 0x86, 0xce, 0x40, 0x9e, 0xd3, - 0x56, 0xcb, 0x8f, 0xa4, 0x07, 0xd5, 0xb5, 0x6a, 0x3d, 0x2f, 0xa0, 0x0b, 0x70, 0x96, 0x53, 0xc5, - 0xa5, 0xf5, 0x7b, 0x65, 0x69, 0x79, 0x63, 0x6b, 0x7d, 0x65, 0x49, 0x7c, 0x94, 0x8f, 0xcd, 0x26, - 0x7e, 0xe9, 0x3b, 0x73, 0x63, 0xc5, 0x87, 0x00, 0xf7, 0xb0, 0xcd, 0xbb, 0x15, 0x5a, 0x86, 0xe4, - 0x2e, 0x2d, 0x0d, 0xef, 0xd8, 0x0b, 0xa1, 0xc5, 0xf6, 0x75, 0xc1, 0xe5, 0x14, 0xd1, 0xc0, 0x87, - 0x47, 0xf3, 0x82, 0xc8, 0x39, 0x59, 0x93, 0x17, 0xbf, 0x2f, 0x40, 0x86, 0x0a, 0x66, 0x75, 0x44, - 0xa5, 0x2e, 0xc9, 0x17, 0x87, 0x2a, 0xa4, 0x57, 0x34, 0x5a, 0x84, 0xf1, 0x3d, 0xb9, 0xd9, 0x19, - 0x34, 0x6e, 0x1e, 0x92, 0x74, 0x91, 0x65, 0x43, 0xaf, 0x43, 0x56, 0xd3, 0x6d, 0xac, 0xdb, 0x12, - 0x63, 0x8b, 0x0f, 0x61, 0xcb, 0xb0, 0xdc, 0xf4, 0xa1, 0xf8, 0x67, 0x02, 0xc0, 0x66, 0x27, 0x4a, - 0xd5, 0x90, 0x71, 0x3f, 0x52, 0xf9, 0x9d, 0x71, 0xcf, 0x6a, 0x71, 0x0e, 0x92, 0x9a, 0xde, 0xd4, - 0x74, 0x56, 0xfe, 0x94, 0xc8, 0x9f, 0xd0, 0x19, 0x18, 0xdf, 0x6e, 0x6a, 0xba, 0x4a, 0xbb, 0x7f, - 0x4a, 0x64, 0x0f, 0x5c, 0xfd, 0x22, 0x64, 0x68, 0xd9, 0x23, 0xd4, 0x7e, 0xf1, 0x9b, 0x31, 0x38, - 0x5b, 0x32, 0x74, 0x55, 0x23, 0xe3, 0x50, 0x6e, 0x7e, 0x2a, 0x74, 0xf3, 0x32, 0xa4, 0xf1, 0x41, - 0x7b, 0xc4, 0xe6, 0x4d, 0xe1, 0x83, 0x36, 0xfd, 0x17, 0xae, 0x3a, 0xf4, 0x59, 0x38, 0x2f, 0x37, - 0x9b, 0xc6, 0xbe, 0xa4, 0xed, 0x48, 0xaa, 0x81, 0x2d, 0x49, 0x37, 0x6c, 0x09, 0x1f, 0x68, 0x96, - 0x4d, 0x4d, 0x45, 0x4a, 0x9c, 0xa1, 0xc9, 0xd5, 0x9d, 0x15, 0x03, 0x5b, 0xeb, 0x86, 0x5d, 0x26, - 0x49, 0x5c, 0xe1, 0xef, 0xc2, 0xb9, 0x6e, 0xdd, 0x44, 0xa9, 0xfb, 0xbf, 0x11, 0x20, 0x57, 0xd5, - 0x35, 0xfb, 0x53, 0xa1, 0x74, 0x57, 0x7b, 0x71, 0xbf, 0xf6, 0x6e, 0x40, 0x7e, 0x47, 0xd6, 0x9a, - 0x1b, 0x7a, 0xdd, 0x68, 0x6d, 0x5b, 0xb6, 0xa1, 0x63, 0x8b, 0xab, 0xb7, 0x87, 0xce, 0x75, 0xf6, - 0x10, 0xa6, 0xdc, 0x3a, 0x45, 0xa9, 0xac, 0xa7, 0x90, 0xaf, 0xea, 0x8a, 0x89, 0x5b, 0x58, 0x8f, - 0x54, 0x5b, 0xcf, 0x42, 0x5a, 0x73, 0xe4, 0x52, 0x8d, 0xc5, 0x45, 0x8f, 0xc0, 0xeb, 0xd4, 0x81, - 0x69, 0xdf, 0xbb, 0xa3, 0x34, 0x7e, 0xcf, 0x40, 0x5a, 0xc7, 0xfb, 0x92, 0xd7, 0x5e, 0x71, 0x31, - 0xa5, 0xe3, 0x7d, 0x66, 0xac, 0x1e, 0xc1, 0xe4, 0x0a, 0x6e, 0x62, 0x1b, 0x47, 0x6f, 0xc9, 0xb7, - 0x20, 0xe7, 0x88, 0x8e, 0xb2, 0x91, 0x7e, 0x4b, 0x00, 0xc4, 0xe5, 0x92, 0xd9, 0x33, 0xca, 0x76, - 0x9a, 0x27, 0xde, 0x81, 0xdd, 0x31, 0x75, 0x36, 0xcd, 0xb3, 0x5e, 0x0a, 0x8c, 0x44, 0x67, 0x7a, - 0xcf, 0xa2, 0x26, 0xfc, 0x16, 0xd5, 0xf5, 0x56, 0x88, 0x9f, 0xb2, 0x0f, 0x33, 0x81, 0xe2, 0x45, - 0xdb, 0x94, 0x09, 0x5a, 0xb2, 0xd8, 0x42, 0xdc, 0xef, 0x99, 0x51, 0x62, 0xf1, 0x5d, 0x98, 0x2e, - 0x35, 0xb1, 0x6c, 0x46, 0xad, 0x16, 0xde, 0x9c, 0x8f, 0x00, 0xf9, 0xc5, 0x47, 0xd9, 0xa4, 0xbf, - 0x2d, 0x00, 0x12, 0xf1, 0x1e, 0x36, 0xed, 0xc8, 0x9b, 0x74, 0x05, 0x32, 0xb6, 0x6c, 0x36, 0xb0, - 0x2d, 0x11, 0x77, 0x9e, 0x9b, 0xab, 0xe7, 0x7c, 0x82, 0x88, 0x53, 0xbf, 0xb8, 0xdb, 0x54, 0x16, - 0xeb, 0x8e, 0xbb, 0xef, 0x38, 0x67, 0x8c, 0x8f, 0x90, 0xb9, 0x06, 0xde, 0x81, 0x99, 0x40, 0x29, - 0xa3, 0x54, 0x81, 0x06, 0x99, 0x9a, 0x22, 0xeb, 0x1b, 0x6d, 0x32, 0x0f, 0x58, 0xe8, 0x0e, 0x9c, - 0xb3, 0x6c, 0xa3, 0x2d, 0xc9, 0xb6, 0xc4, 0x5c, 0xcb, 0x6d, 0xa3, 0xa3, 0xab, 0xb2, 0x79, 0x48, - 0xdf, 0x91, 0x12, 0x67, 0x48, 0xea, 0x12, 0x2b, 0xc8, 0x32, 0x4f, 0x22, 0xdd, 0xb7, 0xa5, 0xe9, - 0x12, 0xf1, 0x00, 0x9b, 0xb6, 0xc5, 0x87, 0x3a, 0xb4, 0x34, 0x5d, 0x64, 0x14, 0x5e, 0x8d, 0xef, - 0x08, 0xec, 0x5d, 0x51, 0xaa, 0xf9, 0x4d, 0xc8, 0x58, 0x8a, 0xac, 0x4b, 0x3b, 0x86, 0xd9, 0x92, - 0x6d, 0x3a, 0x3a, 0x72, 0x01, 0x35, 0xbb, 0x7e, 0xb5, 0x22, 0xeb, 0x77, 0x69, 0x26, 0x11, 0x2c, - 0xf7, 0xbf, 0x7f, 0x00, 0xdd, 0x4f, 0xa4, 0xe2, 0xf9, 0x44, 0xf1, 0x17, 0x02, 0x64, 0x59, 0x29, - 0xa3, 0x1c, 0x40, 0x2f, 0x43, 0xc2, 0x34, 0xf6, 0xd9, 0x00, 0xca, 0xdc, 0x7e, 0x26, 0x44, 0xc4, - 0x2a, 0x3e, 0xf4, 0xcf, 0x5c, 0x34, 0x3b, 0x5a, 0x06, 0xee, 0xe1, 0x49, 0x94, 0x3b, 0x3e, 0x2a, - 0x37, 0x30, 0x2e, 0x91, 0xc8, 0xb8, 0x06, 0x53, 0xdb, 0xb2, 0xad, 0xec, 0x92, 0xf6, 0xa1, 0x85, - 0x24, 0xb3, 0x5c, 0xfc, 0x7a, 0x56, 0xcc, 0x51, 0xb2, 0x53, 0x74, 0xab, 0xf8, 0xfb, 0xce, 0x68, - 0xb0, 0xf0, 0xa7, 0xbf, 0x99, 0xfe, 0x55, 0xe0, 0x83, 0xc2, 0x29, 0xec, 0x7f, 0xb7, 0xd6, 0xfa, - 0x76, 0x0c, 0xce, 0x97, 0x76, 0xb1, 0xf2, 0xb8, 0x64, 0xe8, 0x96, 0x66, 0xd9, 0x58, 0x57, 0x0e, - 0xa3, 0x6c, 0xb2, 0x67, 0x20, 0xbd, 0xaf, 0xd9, 0xbb, 0x92, 0xaa, 0xed, 0xec, 0xd0, 0x21, 0x9d, - 0x12, 0x53, 0x84, 0xb0, 0xa2, 0xed, 0xec, 0xa0, 0x3b, 0x90, 0x68, 0x19, 0x2a, 0x73, 0x60, 0x73, - 0xb7, 0xe7, 0x43, 0xc4, 0xd3, 0xa2, 0x59, 0x9d, 0xd6, 0x9a, 0xa1, 0x62, 0x91, 0x66, 0x46, 0x73, - 0x00, 0x0a, 0xa1, 0xb6, 0x0d, 0x4d, 0xb7, 0xf9, 0x44, 0xe6, 0xa3, 0xa0, 0x0a, 0xa4, 0x6d, 0x6c, - 0xb6, 0x34, 0x5d, 0xb6, 0x09, 0xc0, 0x27, 0xca, 0xbb, 0x1c, 0x5a, 0xf0, 0x76, 0x53, 0x53, 0xe4, - 0x9e, 0x95, 0x0a, 0x8f, 0x99, 0xdb, 0x9b, 0xf7, 0x12, 0x50, 0xe8, 0xd5, 0x50, 0x94, 0xfd, 0x64, - 0x13, 0x92, 0xcc, 0xe8, 0xf1, 0x9e, 0x72, 0xbb, 0x9f, 0x22, 0x42, 0x4a, 0xb0, 0xc8, 0x8c, 0x23, - 0x2f, 0x3c, 0x97, 0x33, 0xfb, 0xe7, 0x02, 0x24, 0x59, 0x02, 0xba, 0x05, 0x29, 0x8e, 0xee, 0x55, - 0x5a, 0xc6, 0xf8, 0xf2, 0xb9, 0xe3, 0xa3, 0xf9, 0x09, 0x86, 0xe5, 0x57, 0x3e, 0xf2, 0xfe, 0x8a, - 0x13, 0x0c, 0xce, 0xab, 0xa4, 0xcd, 0x2c, 0x5b, 0x36, 0x6d, 0xba, 0x8a, 0x42, 0xda, 0x2c, 0x2b, - 0xa6, 0x28, 0x61, 0x15, 0x1f, 0xa2, 0xfb, 0x90, 0xb4, 0x6c, 0xd9, 0xee, 0x58, 0xbc, 0xd5, 0x4e, - 0x54, 0xd8, 0x1a, 0xe5, 0x14, 0xb9, 0x04, 0xe2, 0x8f, 0xa8, 0xd8, 0x96, 0xb5, 0x26, 0x6d, 0xc6, - 0xb4, 0xc8, 0x9f, 0x8a, 0xdf, 0x12, 0x20, 0xc9, 0xb2, 0xa2, 0xf3, 0x30, 0xc3, 0x10, 0x7c, 0x75, - 0x7d, 0xa5, 0x5c, 0x2f, 0x8b, 0x6b, 0xd5, 0xf5, 0xa5, 0x7a, 0x39, 0x3f, 0x86, 0xce, 0x01, 0x72, - 0x12, 0x4a, 0x1b, 0xeb, 0xb5, 0x6a, 0xad, 0x5e, 0x5e, 0x27, 0xc8, 0xff, 0x0c, 0xe4, 0x19, 0xdd, - 0x47, 0x8d, 0xa1, 0xcb, 0xb0, 0xd0, 0x4d, 0x95, 0x6a, 0xf5, 0xa5, 0x7a, 0x4d, 0x2a, 0xd7, 0xea, - 0xd5, 0xb5, 0xa5, 0x7a, 0x79, 0x25, 0x1f, 0x1f, 0x90, 0x8b, 0xbc, 0x44, 0x14, 0xcb, 0xa5, 0x7a, - 0x3e, 0x51, 0x7c, 0x0a, 0x67, 0x45, 0xac, 0x18, 0xad, 0x76, 0xc7, 0xc6, 0xa4, 0x94, 0x56, 0x94, - 0xe3, 0xe5, 0x3c, 0x4c, 0xa8, 0xe6, 0xa1, 0x64, 0x76, 0x74, 0x3e, 0x5a, 0x92, 0xaa, 0x79, 0x28, - 0x76, 0x74, 0xde, 0x19, 0xff, 0x44, 0x80, 0x73, 0xdd, 0x2f, 0x8f, 0xb2, 0x2b, 0x7e, 0x09, 0x32, - 0xb2, 0xaa, 0x62, 0x55, 0x52, 0x71, 0xd3, 0x96, 0xb9, 0xbf, 0x71, 0xcb, 0x27, 0x89, 0xaf, 0x80, - 0x2d, 0xb2, 0xa5, 0xaf, 0x45, 0x77, 0x05, 0x6c, 0xed, 0x61, 0xa9, 0x44, 0xcb, 0xb3, 0x42, 0x18, - 0x1d, 0x8b, 0x44, 0x65, 0x51, 0x4a, 0xf1, 0x8f, 0x13, 0x30, 0x59, 0xd6, 0xd5, 0xfa, 0x41, 0xa4, - 0x33, 0xc2, 0x39, 0x48, 0x2a, 0x46, 0xab, 0xa5, 0xd9, 0x8e, 0xb6, 0xd8, 0x13, 0xfa, 0x1c, 0xa4, - 0x54, 0x2c, 0xab, 0xee, 0xea, 0xc1, 0x30, 0xa7, 0x49, 0x74, 0xb3, 0xa3, 0xaf, 0xc0, 0x79, 0x62, - 0x48, 0x4d, 0x5d, 0x6e, 0x4a, 0x4c, 0x9a, 0x64, 0x9b, 0x5a, 0xa3, 0x81, 0x4d, 0xbe, 0xde, 0x76, - 0x3d, 0xa4, 0x9c, 0x55, 0xce, 0x51, 0xa2, 0x0c, 0x75, 0x96, 0x5f, 0x3c, 0xab, 0x85, 0x91, 0xd1, - 0x17, 0xdd, 0xe5, 0x19, 0xab, 0x2d, 0xeb, 0x16, 0x37, 0x52, 0xfd, 0x96, 0xf1, 0xb8, 0x2e, 0xf9, - 0x9c, 0x40, 0x28, 0x16, 0xba, 0x49, 0x3c, 0xfd, 0x27, 0x1d, 0xcd, 0xc4, 0xd2, 0xad, 0xb6, 0x52, - 0x48, 0x92, 0xba, 0x2f, 0xe7, 0x8e, 0x8f, 0xe6, 0x41, 0x64, 0xe4, 0x5b, 0x9b, 0x25, 0xe2, 0xf9, - 0xb3, 0xff, 0x6d, 0x05, 0x2d, 0xc3, 0x1c, 0x99, 0x38, 0x79, 0x7d, 0x64, 0x5b, 0xda, 0xd5, 0x1a, - 0xbb, 0xd8, 0x94, 0xdc, 0x45, 0xe2, 0x42, 0x8a, 0xea, 0x6f, 0x56, 0x91, 0x75, 0x56, 0xd8, 0x25, - 0xbb, 0x42, 0xb3, 0xb8, 0x2a, 0x22, 0xba, 0x6e, 0x1b, 0x9a, 0x65, 0xe8, 0x85, 0x34, 0xd3, 0x35, - 0x7b, 0x42, 0x6f, 0x41, 0x5e, 0xd3, 0xa5, 0x9d, 0xa6, 0xd6, 0xd8, 0xb5, 0xa5, 0x7d, 0x53, 0xb3, - 0xb1, 0x55, 0x98, 0xa6, 0x55, 0x0a, 0xeb, 0x82, 0x35, 0xbe, 0x44, 0xaa, 0xbe, 0x4d, 0x72, 0xf2, - 0xca, 0xe5, 0x34, 0xfd, 0x2e, 0xe5, 0xa7, 0x44, 0xcb, 0x9d, 0xa8, 0x27, 0xf2, 0xa9, 0xe2, 0x3f, - 0x08, 0x90, 0x73, 0x3a, 0x4e, 0x94, 0x5d, 0xfd, 0x3a, 0xe4, 0x0d, 0x1d, 0x4b, 0xed, 0x5d, 0xd9, - 0xc2, 0x5c, 0x31, 0x7c, 0x36, 0xc9, 0x19, 0x3a, 0xde, 0x24, 0x64, 0xa6, 0x09, 0xb4, 0x09, 0xd3, - 0x96, 0x2d, 0x37, 0x34, 0xbd, 0xe1, 0xd3, 0xd7, 0xf8, 0xe8, 0xae, 0x78, 0x9e, 0x73, 0xbb, 0xf4, - 0x80, 0x0b, 0xf2, 0x23, 0x01, 0xa6, 0x97, 0xd4, 0x96, 0xa6, 0xd7, 0xda, 0x4d, 0x2d, 0x52, 0xdc, - 0x7e, 0x19, 0xd2, 0x16, 0x91, 0xe9, 0xd9, 0x71, 0x0f, 0x73, 0xa5, 0x68, 0x0a, 0x31, 0xe8, 0x0f, - 0x60, 0x0a, 0x1f, 0xb4, 0x35, 0x53, 0x26, 0xae, 0x3b, 0x83, 0x19, 0x89, 0xd1, 0xeb, 0x96, 0xf3, - 0x78, 0x3d, 0xa8, 0xc1, 0x6b, 0xf6, 0x08, 0x90, 0xbf, 0x62, 0x51, 0xe2, 0x0d, 0x09, 0x66, 0xa8, - 0xe8, 0x2d, 0xdd, 0x8a, 0x58, 0x6b, 0xdc, 0xd0, 0x7e, 0x19, 0xce, 0x04, 0x5f, 0x10, 0x65, 0xe9, - 0xdf, 0xe5, 0x2d, 0xbe, 0x86, 0xcd, 0x4f, 0x08, 0xea, 0xfa, 0xc5, 0x47, 0x59, 0xf2, 0xaf, 0x0b, - 0x70, 0x81, 0xca, 0xa6, 0x5b, 0x13, 0x3b, 0xd8, 0xa4, 0xfb, 0x35, 0x51, 0x76, 0xda, 0x4b, 0x90, - 0x64, 0xc8, 0x95, 0xf6, 0xd8, 0xf1, 0xe5, 0x0c, 0x71, 0x51, 0x6a, 0xb6, 0x61, 0x12, 0x17, 0x85, - 0x27, 0xf1, 0x7a, 0xca, 0x30, 0x1b, 0x56, 0x96, 0x88, 0xa1, 0xfd, 0x34, 0xf7, 0x14, 0x49, 0x17, - 0x2f, 0xed, 0x12, 0x17, 0x09, 0x95, 0x21, 0xa3, 0xd0, 0x7f, 0x92, 0x7d, 0xd8, 0xc6, 0x54, 0x7e, - 0x6e, 0x90, 0x93, 0xc9, 0xd8, 0xea, 0x87, 0x6d, 0x4c, 0x3c, 0x55, 0xe7, 0x3f, 0x51, 0x97, 0xaf, - 0xaa, 0x03, 0xdd, 0x54, 0x3a, 0xbe, 0x68, 0x5e, 0xc7, 0xd3, 0x0b, 0x68, 0xe2, 0x4f, 0xe3, 0x5c, - 0x15, 0xec, 0x4d, 0x9c, 0x29, 0x52, 0xc7, 0xe4, 0x1d, 0x38, 0xa7, 0xe2, 0xb6, 0x89, 0x15, 0xd9, - 0xc6, 0xaa, 0xe4, 0xaf, 0x7e, 0xec, 0x04, 0xd5, 0x3f, 0xe3, 0xc9, 0xf0, 0xa8, 0xe8, 0x11, 0x20, - 0x9f, 0x6c, 0x56, 0x33, 0x07, 0xf8, 0x9c, 0x44, 0x29, 0xd3, 0x9e, 0x14, 0x46, 0xb7, 0x50, 0x09, - 0x52, 0xf8, 0xa0, 0x2d, 0xd1, 0x4d, 0xcb, 0xc4, 0x09, 0x37, 0x2d, 0x27, 0xf0, 0x41, 0x9b, 0x10, - 0xd1, 0x16, 0x99, 0xe1, 0x1c, 0x97, 0x80, 0x16, 0xdb, 0x1a, 0x8e, 0x2c, 0xbc, 0xfe, 0xc2, 0xc5, - 0x4d, 0xb9, 0xde, 0x00, 0x13, 0xc1, 0xdb, 0xee, 0x7d, 0x01, 0x9e, 0x09, 0x6d, 0xbb, 0x28, 0x27, - 0x3b, 0x67, 0xdf, 0x36, 0x76, 0x9a, 0x7d, 0xdb, 0xe2, 0x1f, 0x38, 0xa3, 0x5e, 0xc4, 0x4d, 0x83, - 0xa8, 0xf7, 0x13, 0x58, 0xe7, 0x9a, 0x70, 0x9a, 0x3d, 0x76, 0xe2, 0x66, 0x77, 0x58, 0xbb, 0xcc, - 0x42, 0x57, 0x61, 0xa3, 0x34, 0x0b, 0xbf, 0x2e, 0xc0, 0x4c, 0x05, 0xcb, 0xa6, 0xbd, 0x8d, 0x65, - 0x3b, 0x62, 0x97, 0xf6, 0x65, 0x88, 0xeb, 0xc6, 0xfe, 0x49, 0x96, 0xfa, 0x48, 0x7e, 0x6f, 0xda, - 0x0a, 0x96, 0x2b, 0xca, 0x5a, 0xff, 0x55, 0x0c, 0xd2, 0xf7, 0x4a, 0x51, 0xd6, 0xf5, 0x0d, 0xbe, - 0x20, 0xcc, 0x86, 0x7a, 0x58, 0xb7, 0x74, 0xdf, 0xb7, 0x78, 0xaf, 0xb4, 0x8a, 0x0f, 0x9d, 0x6e, - 0x49, 0xb8, 0xd0, 0x12, 0xa4, 0xed, 0x5d, 0x13, 0x5b, 0xbb, 0x46, 0x53, 0x3d, 0x89, 0xcf, 0xe2, - 0x71, 0xcd, 0x3e, 0x86, 0x71, 0x2a, 0xd7, 0x09, 0x29, 0x10, 0x42, 0x42, 0x0a, 0xc8, 0x6b, 0x5c, - 0xb7, 0x2f, 0x76, 0x92, 0xd7, 0x38, 0x04, 0xd6, 0x38, 0xae, 0x6f, 0x34, 0x9e, 0x4f, 0x16, 0xdf, - 0x02, 0x20, 0x55, 0x8b, 0xb2, 0x79, 0x7e, 0x35, 0x0e, 0xb9, 0xcd, 0x8e, 0xb5, 0x1b, 0x71, 0x7f, - 0x2c, 0x01, 0xb4, 0x3b, 0x16, 0x05, 0x0b, 0x07, 0x3a, 0xaf, 0xff, 0x90, 0x60, 0x05, 0x47, 0x01, - 0x8c, 0xaf, 0x7e, 0xa0, 0xa3, 0x0d, 0x2e, 0x04, 0x4b, 0x5e, 0xc4, 0xc3, 0x8d, 0x11, 0x60, 0x65, - 0xfd, 0x40, 0x5f, 0xc3, 0x2e, 0x9e, 0x64, 0x02, 0x31, 0x11, 0xf8, 0x06, 0x4c, 0x90, 0x07, 0xc9, - 0x36, 0x4e, 0xd2, 0xf2, 0x49, 0xc2, 0x53, 0x37, 0xd0, 0xeb, 0x90, 0x66, 0xdc, 0x64, 0xfe, 0x4a, - 0xd2, 0xf9, 0x2b, 0xac, 0x4a, 0x5c, 0x9b, 0x74, 0xe6, 0x4a, 0x51, 0x56, 0x32, 0x5b, 0x9d, 0x81, - 0xf1, 0x1d, 0xc3, 0x54, 0x30, 0x0d, 0x71, 0x48, 0x89, 0xec, 0xc1, 0xdf, 0xb8, 0xf7, 0x13, 0xa9, - 0x54, 0x3e, 0x7d, 0x3f, 0x91, 0x4a, 0xe7, 0xa1, 0xf8, 0x2d, 0x01, 0xa6, 0xdc, 0x56, 0x89, 0xd2, - 0xa4, 0x97, 0x02, 0x2a, 0x3d, 0x79, 0xbb, 0x10, 0x35, 0x16, 0xff, 0x96, 0xfa, 0x37, 0x8a, 0xb1, - 0x47, 0x9b, 0x29, 0xca, 0x6e, 0xb3, 0xcc, 0x82, 0x5b, 0x62, 0xa7, 0x6c, 0x6a, 0x1a, 0xee, 0x72, - 0x0b, 0xce, 0x68, 0x2d, 0x62, 0xf3, 0x35, 0xbb, 0x79, 0xc8, 0x31, 0x9a, 0x8d, 0x9d, 0xfd, 0xd7, - 0x19, 0x2f, 0xad, 0xe4, 0x24, 0x71, 0x33, 0xc8, 0x76, 0x64, 0xbc, 0x6a, 0x45, 0xa9, 0xf7, 0x2a, - 0x4c, 0x9a, 0x4c, 0x34, 0xf1, 0x55, 0x4e, 0xa8, 0xfa, 0xac, 0xcb, 0x4a, 0xb4, 0xff, 0xbd, 0x18, - 0x4c, 0xbd, 0xd5, 0xc1, 0xe6, 0xe1, 0xa7, 0x50, 0xf7, 0x57, 0x61, 0x6a, 0x5f, 0xd6, 0x6c, 0x69, - 0xc7, 0x30, 0xa5, 0x4e, 0x5b, 0x95, 0x6d, 0x27, 0x0c, 0x63, 0x92, 0x90, 0xef, 0x1a, 0xe6, 0x16, - 0x25, 0x22, 0x0c, 0xe8, 0xb1, 0x6e, 0xec, 0xeb, 0x12, 0x21, 0x53, 0x88, 0x7c, 0xa0, 0xf3, 0xc5, - 0xe6, 0xe5, 0x57, 0xfe, 0xfe, 0x68, 0xfe, 0xce, 0x48, 0x81, 0x55, 0x34, 0x36, 0xad, 0xd3, 0xd1, - 0xd4, 0xc5, 0xad, 0xad, 0xea, 0x8a, 0x98, 0xa7, 0x22, 0xdf, 0x66, 0x12, 0xeb, 0x07, 0xba, 0x33, - 0xb5, 0x7f, 0x24, 0x40, 0xde, 0x53, 0x58, 0x94, 0xad, 0x5a, 0x86, 0xcc, 0x93, 0x0e, 0x36, 0xb5, - 0x53, 0xb4, 0x29, 0x70, 0x46, 0x62, 0x96, 0xde, 0x81, 0x6c, 0x40, 0x0f, 0xf1, 0x8f, 0xa7, 0x87, - 0xcc, 0xbe, 0xa7, 0x82, 0xe2, 0x0f, 0x05, 0x40, 0xb4, 0xf2, 0x55, 0xb6, 0xce, 0xff, 0x29, 0xeb, - 0x30, 0xd7, 0x21, 0x4f, 0x43, 0x1d, 0x25, 0x6d, 0x47, 0x6a, 0x69, 0x96, 0xa5, 0xe9, 0x0d, 0xde, - 0x63, 0x72, 0x94, 0x5e, 0xdd, 0x59, 0x63, 0x54, 0xde, 0x96, 0xff, 0x1b, 0x66, 0x02, 0xb5, 0x89, - 0xb2, 0x35, 0x2f, 0x42, 0x76, 0xc7, 0xe8, 0xe8, 0xaa, 0xc4, 0x16, 0xcd, 0xf8, 0xe2, 0x60, 0x86, - 0xd2, 0xd8, 0xfb, 0x8a, 0xff, 0x16, 0x83, 0x33, 0x22, 0xb6, 0x8c, 0xe6, 0x1e, 0x8e, 0x5e, 0x9f, - 0x1b, 0xc0, 0x37, 0x63, 0xa4, 0x8f, 0xa3, 0xd6, 0x34, 0x93, 0xc1, 0xa6, 0xbb, 0xe0, 0xaa, 0xfb, - 0xe5, 0xc1, 0x3d, 0xb3, 0x77, 0x9d, 0x9d, 0xaf, 0xdc, 0x25, 0x02, 0x2b, 0x77, 0x7b, 0x30, 0xa5, - 0x35, 0x74, 0x83, 0x18, 0x32, 0x0b, 0x3f, 0xd1, 0x3b, 0x2d, 0x07, 0xd6, 0xbc, 0x3c, 0x42, 0x59, - 0xab, 0x8c, 0xb3, 0x86, 0x9f, 0xac, 0x77, 0x5a, 0x6c, 0x27, 0xf7, 0x1c, 0x29, 0xf6, 0xf1, 0xd1, - 0x7c, 0x2e, 0x90, 0x66, 0x89, 0x39, 0xcd, 0x7d, 0x26, 0x2f, 0xe1, 0x1d, 0xe0, 0x7f, 0xc2, 0xd9, - 0xae, 0x06, 0x88, 0xd2, 0x1b, 0xfa, 0xeb, 0x38, 0x5c, 0x08, 0x8a, 0x8f, 0x1a, 0xb3, 0xfc, 0x17, - 0x69, 0xe4, 0x0a, 0x4c, 0xb6, 0x34, 0xfd, 0x74, 0x2b, 0x97, 0xd9, 0x96, 0xa6, 0x7b, 0x0b, 0xc0, - 0x21, 0xdd, 0x25, 0xf9, 0x1f, 0xd7, 0x5d, 0x64, 0x98, 0x0d, 0x6b, 0xcf, 0x28, 0xfb, 0xcc, 0x7b, - 0x02, 0x64, 0xa3, 0x5e, 0x93, 0x3b, 0x5d, 0xac, 0x19, 0xaf, 0x73, 0x1d, 0x26, 0x3f, 0x81, 0x45, - 0xbc, 0xdf, 0x15, 0x00, 0xd5, 0xcd, 0x8e, 0x4e, 0xc0, 0xf1, 0x03, 0xa3, 0x11, 0x65, 0x65, 0xcf, - 0xc0, 0xb8, 0xa6, 0xab, 0xf8, 0x80, 0x56, 0x36, 0x21, 0xb2, 0x87, 0xc0, 0x1e, 0x64, 0x7c, 0xa4, - 0x3d, 0x48, 0x2f, 0x64, 0x25, 0x50, 0xd0, 0x28, 0xb5, 0xf0, 0xbd, 0x18, 0xcc, 0xf0, 0xea, 0x44, - 0xbe, 0x88, 0x79, 0xaa, 0x40, 0x77, 0xf4, 0x79, 0x80, 0xb6, 0x89, 0xf7, 0x24, 0xc6, 0x1a, 0x1f, - 0x89, 0x35, 0x4d, 0x38, 0x28, 0x01, 0x7d, 0x09, 0xa6, 0xc8, 0x40, 0x6f, 0x9b, 0x46, 0xdb, 0xb0, - 0x88, 0x1f, 0x63, 0x8d, 0x06, 0x8d, 0xa6, 0x8f, 0x8f, 0xe6, 0x27, 0xd7, 0x34, 0x7d, 0x93, 0x33, - 0xd6, 0x6b, 0x22, 0xb1, 0x18, 0xee, 0xa3, 0x33, 0x00, 0xff, 0x4e, 0x80, 0x33, 0x9f, 0xd8, 0xb2, - 0xef, 0x7f, 0x86, 0xc6, 0xdc, 0x79, 0x28, 0x4f, 0x1f, 0xab, 0xfa, 0x8e, 0x11, 0xfd, 0x62, 0xfc, - 0x7b, 0x02, 0x4c, 0xfb, 0xc4, 0x47, 0xe9, 0xe5, 0x9c, 0xee, 0x38, 0xc5, 0x97, 0x89, 0xdf, 0xe3, - 0xef, 0xf6, 0x51, 0x0e, 0xaa, 0xbf, 0x88, 0xc1, 0xb9, 0x12, 0xdb, 0x9d, 0x76, 0x42, 0x37, 0xa2, - 0xec, 0x25, 0x05, 0x98, 0xd8, 0xc3, 0xa6, 0xa5, 0x19, 0x6c, 0xbe, 0x9d, 0x14, 0x9d, 0x47, 0x34, - 0x0b, 0x29, 0x4b, 0x97, 0xdb, 0xd6, 0xae, 0xe1, 0xec, 0xe2, 0xb9, 0xcf, 0x6e, 0x98, 0xc9, 0xf8, - 0xe9, 0xc3, 0x4c, 0x92, 0x83, 0xc3, 0x4c, 0x26, 0x3e, 0x76, 0x98, 0x09, 0xdf, 0x32, 0xfb, 0x81, - 0x00, 0xe7, 0x7b, 0xf4, 0x17, 0x65, 0x9f, 0xf9, 0x2a, 0x64, 0x14, 0x2e, 0x98, 0x58, 0x63, 0xb6, - 0x2b, 0x58, 0x25, 0xd9, 0x4e, 0x89, 0x51, 0x8e, 0x8f, 0xe6, 0xc1, 0x29, 0x6a, 0x75, 0x85, 0xab, - 0x88, 0xfc, 0x57, 0x8b, 0xbf, 0x9c, 0x81, 0xa9, 0xf2, 0x01, 0x5b, 0xf3, 0xae, 0x31, 0xb7, 0x00, - 0xdd, 0x85, 0x54, 0xdb, 0x34, 0xf6, 0x34, 0xa7, 0x1a, 0xb9, 0x80, 0xcb, 0xe4, 0x54, 0xa3, 0x8b, - 0x6b, 0x93, 0x73, 0x88, 0x2e, 0x2f, 0xaa, 0x43, 0xfa, 0x81, 0xa1, 0xc8, 0xcd, 0xbb, 0x5a, 0xd3, - 0xe9, 0xff, 0x2f, 0x0d, 0x17, 0xb4, 0xe8, 0xf2, 0x6c, 0xca, 0xf6, 0xae, 0xd3, 0x14, 0x2e, 0x11, - 0x55, 0x21, 0x55, 0xb1, 0xed, 0x36, 0x49, 0xe4, 0xd6, 0xe4, 0xda, 0x08, 0x42, 0x09, 0x0b, 0x97, - 0xe5, 0xb2, 0xa3, 0x3a, 0x4c, 0xdf, 0x33, 0x8c, 0x46, 0x13, 0x97, 0x9a, 0x46, 0x47, 0x2d, 0x19, - 0xfa, 0x8e, 0xd6, 0xe0, 0xf6, 0xf8, 0xea, 0x08, 0x32, 0xef, 0x95, 0x6a, 0x62, 0xaf, 0x00, 0xb4, - 0x04, 0xa9, 0xda, 0x1d, 0x2e, 0x8c, 0xf9, 0x71, 0x57, 0x46, 0x10, 0x56, 0xbb, 0x23, 0xba, 0x6c, - 0xe8, 0x3e, 0x64, 0x96, 0x9e, 0x76, 0x4c, 0xcc, 0xa5, 0x24, 0xfb, 0xc6, 0x34, 0x74, 0x4b, 0xa1, - 0x5c, 0xa2, 0x9f, 0x19, 0xd5, 0x20, 0xf7, 0xb6, 0x61, 0x3e, 0x6e, 0x1a, 0xb2, 0x53, 0xc3, 0x09, - 0x2a, 0xee, 0x33, 0x23, 0x88, 0x73, 0x18, 0xc5, 0x2e, 0x11, 0xb3, 0x5f, 0x82, 0xc9, 0x40, 0x33, - 0x21, 0x04, 0x89, 0x36, 0x69, 0x11, 0x81, 0x06, 0x09, 0xd1, 0xff, 0xe8, 0x45, 0x98, 0xd0, 0x0d, - 0x15, 0x3b, 0x7d, 0x78, 0x72, 0xf9, 0xcc, 0xf1, 0xd1, 0x7c, 0x72, 0xdd, 0x50, 0x99, 0x43, 0xc1, - 0xff, 0x89, 0x49, 0x92, 0xc9, 0x71, 0x27, 0x66, 0xaf, 0x42, 0x82, 0xb4, 0x0f, 0x31, 0x23, 0xdb, - 0xb2, 0x85, 0xb7, 0x4c, 0x8d, 0xcb, 0x74, 0x1e, 0x79, 0xbe, 0x1f, 0x0b, 0x10, 0xab, 0xdd, 0x21, - 0x1e, 0xf5, 0x76, 0x47, 0x79, 0x8c, 0x6d, 0x9e, 0x8b, 0x3f, 0x51, 0x4f, 0xdb, 0xc4, 0x3b, 0x1a, - 0xf3, 0x72, 0xd2, 0x22, 0x7f, 0x42, 0xcf, 0x01, 0xc8, 0x8a, 0x82, 0x2d, 0x4b, 0x72, 0x4e, 0xa7, - 0xa5, 0xc5, 0x34, 0xa3, 0xac, 0xe2, 0x43, 0xc2, 0x66, 0x61, 0xc5, 0xc4, 0xb6, 0x13, 0xed, 0xc4, - 0x9e, 0x08, 0x9b, 0x8d, 0x5b, 0x6d, 0xc9, 0x36, 0x1e, 0x63, 0x9d, 0xb6, 0x6a, 0x9a, 0x98, 0x87, - 0x56, 0xbb, 0x4e, 0x08, 0xc4, 0xb2, 0x61, 0x5d, 0xf5, 0xcc, 0x50, 0x5a, 0x74, 0x9f, 0x89, 0x48, - 0x13, 0x37, 0x34, 0x7e, 0xdc, 0x2a, 0x2d, 0xf2, 0x27, 0xa2, 0x31, 0xb9, 0x63, 0xef, 0xd2, 0xa0, - 0x8e, 0xb4, 0x48, 0xff, 0xf3, 0xaa, 0x7d, 0x53, 0x80, 0xf8, 0xbd, 0x52, 0xed, 0xc4, 0x75, 0x73, - 0x24, 0xc6, 0x3d, 0x89, 0x34, 0xc8, 0x50, 0x6b, 0x36, 0x35, 0xbd, 0x41, 0x9c, 0x8e, 0xaf, 0x62, - 0xc5, 0xa9, 0x59, 0x8e, 0x93, 0x37, 0x19, 0x15, 0x2d, 0x40, 0x46, 0x31, 0xb1, 0x8a, 0x75, 0x5b, - 0x93, 0x9b, 0x16, 0xaf, 0xa2, 0x9f, 0xc4, 0x0b, 0xf7, 0x35, 0x01, 0xc6, 0x69, 0xf7, 0x42, 0xcf, - 0x42, 0x5a, 0x31, 0x74, 0x5b, 0xd6, 0x74, 0x6e, 0x27, 0xd2, 0xa2, 0x47, 0xe8, 0x5b, 0xc8, 0x8b, - 0x90, 0x95, 0x15, 0xc5, 0xe8, 0xe8, 0xb6, 0xa4, 0xcb, 0x2d, 0xcc, 0x0b, 0x9b, 0xe1, 0xb4, 0x75, - 0xb9, 0x85, 0xd1, 0x3c, 0x38, 0x8f, 0xee, 0x19, 0xc1, 0xb4, 0x08, 0x9c, 0xb4, 0x8a, 0x0f, 0x79, - 0x49, 0x7e, 0x20, 0x40, 0xca, 0xe9, 0x96, 0xa4, 0x30, 0x0d, 0xac, 0x63, 0x53, 0xb6, 0x0d, 0xb7, - 0x30, 0x2e, 0xa1, 0x7b, 0x4e, 0x4a, 0x7b, 0x73, 0xd2, 0x19, 0x18, 0xb7, 0xe5, 0xed, 0xa6, 0x53, - 0x0e, 0xf6, 0x40, 0x97, 0x8f, 0x9b, 0x72, 0x83, 0xad, 0x91, 0xa5, 0x45, 0xf6, 0x40, 0xaa, 0xc4, - 0xa3, 0x5a, 0x99, 0x76, 0xf8, 0x13, 0x29, 0x2f, 0x0b, 0xe4, 0xdc, 0xc6, 0x0d, 0x4d, 0xa7, 0x1d, - 0x20, 0x2e, 0x02, 0x25, 0x2d, 0x13, 0x0a, 0x7a, 0x06, 0xd2, 0x2c, 0x03, 0xd6, 0x55, 0xda, 0x0b, - 0xe2, 0x62, 0x8a, 0x12, 0xca, 0xce, 0xa1, 0x28, 0xee, 0x88, 0x7c, 0x57, 0x80, 0x69, 0x16, 0x73, - 0xc3, 0x22, 0x40, 0xa3, 0x9b, 0x95, 0x5f, 0x83, 0xb4, 0x2a, 0xdb, 0x32, 0x3b, 0x93, 0x18, 0x1b, - 0x78, 0x26, 0xd1, 0x31, 0x93, 0x24, 0x3f, 0x3d, 0x97, 0x88, 0x20, 0x41, 0xfe, 0xb3, 0xb3, 0x9c, - 0x22, 0xfd, 0xef, 0x45, 0x31, 0xf8, 0x8b, 0x1b, 0xa5, 0x97, 0xf2, 0xe1, 0x38, 0x4c, 0x96, 0x0f, - 0xda, 0x86, 0x19, 0xf1, 0x22, 0xda, 0x04, 0x07, 0xbf, 0x03, 0xb6, 0x59, 0xbb, 0xac, 0xa0, 0xb3, - 0x83, 0xc9, 0x19, 0xd1, 0x32, 0x00, 0x0b, 0xbd, 0xa4, 0x71, 0x38, 0xf1, 0x13, 0x6c, 0x36, 0x51, - 0x36, 0x42, 0x45, 0xeb, 0x90, 0x69, 0xed, 0x29, 0x8a, 0xb4, 0xa3, 0x35, 0x6d, 0x1e, 0xb4, 0x16, - 0x1e, 0x25, 0xbd, 0xf6, 0xb0, 0x54, 0xba, 0x4b, 0x33, 0xb1, 0xd8, 0x31, 0xef, 0x59, 0x04, 0x22, - 0x81, 0xfd, 0x47, 0x2f, 0x00, 0x3f, 0x43, 0x22, 0x59, 0xce, 0x89, 0xb0, 0xe5, 0xc9, 0xe3, 0xa3, - 0xf9, 0xb4, 0x48, 0xa9, 0xb5, 0x5a, 0x5d, 0x4c, 0xb3, 0x0c, 0x35, 0xcb, 0x46, 0x97, 0x60, 0xd2, - 0x68, 0x69, 0xb6, 0xe4, 0xf8, 0x01, 0xdc, 0x75, 0xca, 0x12, 0xa2, 0xe3, 0x27, 0xa0, 0x3a, 0x5c, - 0xc3, 0x3a, 0x19, 0x0d, 0xb4, 0x9e, 0xec, 0x74, 0x80, 0xa4, 0xd9, 0x6c, 0x44, 0x49, 0x46, 0xdb, - 0xd6, 0x5a, 0xda, 0x53, 0xba, 0xd1, 0xcb, 0x37, 0x59, 0x2e, 0xb1, 0xec, 0xa4, 0x7e, 0xf4, 0xbc, - 0x40, 0x95, 0xe7, 0xdd, 0xf0, 0x65, 0x45, 0x5f, 0x13, 0xe8, 0xb1, 0x03, 0xa2, 0x48, 0x69, 0xfb, - 0x50, 0x6a, 0x92, 0x49, 0x44, 0xb3, 0x0f, 0xa5, 0xc7, 0x7b, 0x85, 0x14, 0x75, 0xd0, 0x3e, 0x17, - 0xda, 0x20, 0xbe, 0x7e, 0xb0, 0xe8, 0x34, 0xcb, 0xe1, 0x03, 0xce, 0xbc, 0xba, 0x57, 0xd6, 0x6d, - 0xf3, 0x70, 0xf9, 0xfc, 0xf1, 0xd1, 0xfc, 0x4c, 0x6f, 0xea, 0x43, 0x7a, 0x94, 0xa1, 0x9b, 0x65, - 0xf6, 0xab, 0x50, 0xe8, 0x27, 0x09, 0xe5, 0xbd, 0x9d, 0xc6, 0x34, 0xdb, 0x60, 0x7c, 0x35, 0xb8, - 0x42, 0x30, 0x42, 0xb7, 0x71, 0x56, 0x09, 0x62, 0xaf, 0x3a, 0xa3, 0xfb, 0x1b, 0x02, 0x4c, 0x2e, - 0x77, 0x9a, 0x8f, 0x37, 0xda, 0xb5, 0x4e, 0xab, 0x25, 0x9b, 0x87, 0xc4, 0x30, 0xb0, 0x51, 0xa9, - 0x3d, 0x65, 0x21, 0x2a, 0x71, 0x3e, 0xec, 0xb4, 0xa7, 0x98, 0x0c, 0x3b, 0x1e, 0x9a, 0x4e, 0xe8, - 0x2c, 0xee, 0xfc, 0x12, 0x4c, 0x52, 0xb8, 0x2e, 0x61, 0xdd, 0x36, 0x35, 0xcc, 0x56, 0xa1, 0xe2, - 0x62, 0x96, 0x12, 0xcb, 0x8c, 0x86, 0xae, 0x40, 0xce, 0x3a, 0xb4, 0x6c, 0xdc, 0x92, 0xd8, 0x09, - 0x72, 0x86, 0x31, 0xe3, 0xe2, 0x24, 0xa3, 0x8a, 0x8c, 0x58, 0xfc, 0x49, 0x1c, 0x72, 0x8e, 0x66, - 0xa3, 0x74, 0x5f, 0x97, 0x61, 0x7c, 0x47, 0x6b, 0x62, 0x27, 0x4a, 0xe0, 0xea, 0x80, 0x06, 0xe5, - 0x21, 0xc7, 0xc4, 0x8b, 0x70, 0x00, 0x10, 0x65, 0x8d, 0x62, 0x8c, 0xcd, 0xfe, 0xdf, 0x18, 0x24, - 0xa8, 0xc7, 0x78, 0x0b, 0x12, 0xd4, 0xec, 0x09, 0xa3, 0x98, 0x3d, 0x9a, 0xd5, 0x75, 0x67, 0x62, - 0x3e, 0x77, 0x86, 0xf8, 0x06, 0xbb, 0xf2, 0xcb, 0xb7, 0x6e, 0xd3, 0xf1, 0x95, 0x15, 0xf9, 0x13, - 0x5a, 0xa6, 0xe1, 0x2b, 0x86, 0x69, 0x63, 0x95, 0x7b, 0x6a, 0x61, 0x96, 0x29, 0xd0, 0xf0, 0x8e, - 0x89, 0x75, 0xf8, 0xd0, 0x05, 0x88, 0x93, 0x81, 0x3b, 0xc1, 0xb6, 0xb6, 0x8f, 0x8f, 0xe6, 0xe3, - 0x64, 0xc8, 0x12, 0x1a, 0xba, 0x09, 0x99, 0xe0, 0x28, 0x11, 0xae, 0xa7, 0x99, 0x2d, 0xf0, 0xf5, - 0x70, 0x68, 0xba, 0x3d, 0x98, 0xa1, 0x94, 0xfb, 0x89, 0x54, 0x22, 0x3f, 0x4e, 0x23, 0x7a, 0xab, - 0xad, 0xa8, 0xad, 0xe8, 0x52, 0xb0, 0x85, 0xc3, 0xdc, 0xdb, 0xc0, 0x4b, 0x43, 0x1a, 0x38, 0x30, - 0x1f, 0xc5, 0x4f, 0x36, 0x1f, 0x55, 0x89, 0x47, 0xc5, 0x4f, 0xc9, 0xc7, 0xfb, 0x78, 0xb2, 0xc1, - 0xf7, 0xd7, 0x89, 0x61, 0x12, 0x09, 0x8f, 0x17, 0x84, 0x4f, 0xc3, 0x13, 0xde, 0xa4, 0x8e, 0x1b, - 0xeb, 0x65, 0xc9, 0xd1, 0x7b, 0xd9, 0x04, 0xd6, 0x55, 0xda, 0xc7, 0x9e, 0xf2, 0x2e, 0xf6, 0x1a, - 0xc4, 0x55, 0xcd, 0x1c, 0x70, 0xe5, 0x42, 0xf8, 0x9c, 0x42, 0x98, 0x86, 0xf4, 0xb5, 0x84, 0xbf, - 0xaf, 0xf9, 0x71, 0xe8, 0xec, 0x06, 0x80, 0x57, 0x2f, 0xb4, 0x00, 0x49, 0xa3, 0xa9, 0x3a, 0x27, - 0x08, 0x26, 0x97, 0xd3, 0xc7, 0x47, 0xf3, 0xe3, 0x1b, 0x4d, 0xb5, 0xba, 0x22, 0x8e, 0x1b, 0x4d, - 0xb5, 0xaa, 0xd2, 0xeb, 0x05, 0xf0, 0xbe, 0xe4, 0xc6, 0x18, 0x65, 0xc5, 0x09, 0x1d, 0xef, 0x13, - 0xd4, 0xdb, 0x15, 0xfb, 0x40, 0x3a, 0xce, 0xb7, 0x05, 0xc8, 0x39, 0x3a, 0x8c, 0xd6, 0x38, 0xa4, - 0xb4, 0x16, 0x1f, 0x2c, 0xf1, 0x93, 0x0d, 0x16, 0x87, 0x8f, 0x1f, 0x82, 0xfc, 0xba, 0xc0, 0xe3, - 0x4b, 0x6b, 0x8a, 0x6c, 0x93, 0xf9, 0x30, 0xc2, 0x0e, 0xfe, 0x3c, 0xe4, 0x4d, 0x59, 0x57, 0x8d, - 0x96, 0xf6, 0x14, 0xb3, 0x85, 0x2b, 0x8b, 0xef, 0x4f, 0x4d, 0xb9, 0x74, 0xba, 0x32, 0xe3, 0xac, - 0xbb, 0xfd, 0x5c, 0xe0, 0xb1, 0xa8, 0x6e, 0x61, 0xa2, 0x54, 0xda, 0x2a, 0x24, 0x4d, 0x16, 0xd1, - 0xc6, 0x06, 0xdc, 0x8b, 0x21, 0x42, 0xc2, 0xde, 0xce, 0x02, 0xc6, 0xdc, 0x2e, 0x4f, 0x45, 0xcc, - 0x7e, 0x11, 0xc6, 0x29, 0xf9, 0x14, 0x66, 0x91, 0x6b, 0xfe, 0x9f, 0x62, 0x70, 0x99, 0xbe, 0xee, - 0x21, 0x36, 0xb5, 0x9d, 0xc3, 0x4d, 0xd3, 0xb0, 0xb1, 0x62, 0x63, 0xd5, 0x8b, 0xd4, 0x8f, 0xd4, - 0xd6, 0xa4, 0xdb, 0xce, 0x0b, 0x4e, 0x14, 0xd9, 0xe3, 0x72, 0xa1, 0x55, 0x98, 0x62, 0x13, 0xa1, - 0x24, 0x37, 0xb5, 0x3d, 0x2c, 0xc9, 0xf6, 0x49, 0x66, 0x94, 0x49, 0xc6, 0xbb, 0x44, 0x58, 0x97, - 0x6c, 0xa4, 0x42, 0x9a, 0x0b, 0xd3, 0x54, 0x7e, 0x7d, 0xc9, 0xbd, 0x8f, 0xb7, 0x34, 0x93, 0x62, - 0x13, 0x72, 0x75, 0x45, 0x4c, 0x31, 0xc9, 0xee, 0xd2, 0xfa, 0x8f, 0x04, 0xb8, 0x32, 0x44, 0xd1, - 0x51, 0x76, 0xb3, 0x59, 0x48, 0xed, 0x91, 0x17, 0x69, 0x5c, 0xd3, 0x29, 0xd1, 0x7d, 0x46, 0x6b, - 0x30, 0xb9, 0x23, 0x6b, 0x4d, 0xac, 0x4a, 0xbc, 0x27, 0xf6, 0x0f, 0x07, 0x0b, 0x8f, 0x52, 0xcc, - 0x32, 0x76, 0x9a, 0x68, 0x15, 0x7f, 0x27, 0x06, 0xd3, 0x4b, 0xaa, 0x5a, 0xab, 0x71, 0x0b, 0x16, - 0x5d, 0x7f, 0x71, 0xc0, 0x4a, 0xcc, 0x03, 0x2b, 0xe8, 0x45, 0x40, 0xaa, 0x66, 0xb1, 0xfb, 0x13, - 0xac, 0x5d, 0x59, 0x35, 0xf6, 0xbd, 0x8d, 0xef, 0x69, 0x27, 0xa5, 0xe6, 0x24, 0xa0, 0x77, 0x80, - 0xba, 0xd6, 0x92, 0x65, 0xcb, 0xee, 0xfa, 0xfc, 0x0b, 0x27, 0x39, 0x5f, 0xc3, 0x5c, 0x6f, 0xf7, - 0x51, 0x4c, 0x13, 0x71, 0xf4, 0x2f, 0xba, 0x0e, 0x79, 0x8d, 0x68, 0xc0, 0x96, 0x64, 0xcb, 0x39, - 0x88, 0xc1, 0x2e, 0x70, 0xc8, 0x31, 0xfa, 0x92, 0xe5, 0x3f, 0x5f, 0xc1, 0xe2, 0xc4, 0x3d, 0x3d, - 0x45, 0x89, 0xb0, 0x7e, 0x4f, 0x80, 0x9c, 0x88, 0x77, 0x4c, 0x6c, 0x45, 0x8a, 0x34, 0xef, 0x42, - 0xd6, 0x64, 0x52, 0xa5, 0x1d, 0xd3, 0x68, 0x9d, 0x64, 0xa8, 0x65, 0x38, 0xe3, 0x5d, 0xd3, 0x68, - 0x05, 0x0e, 0xbc, 0x3f, 0x84, 0x29, 0xb7, 0xa4, 0x51, 0xaa, 0xe0, 0xbb, 0xf4, 0x68, 0x29, 0x13, - 0x1c, 0xf5, 0xd6, 0xf3, 0x27, 0xa1, 0x07, 0xba, 0x2f, 0xe0, 0x2f, 0x6e, 0x94, 0xca, 0xf8, 0xb9, - 0x00, 0xb9, 0x5a, 0x67, 0x9b, 0xdd, 0xe5, 0x13, 0x9d, 0x1e, 0xca, 0x90, 0x6e, 0xe2, 0x1d, 0x5b, - 0x3a, 0x55, 0x6c, 0x73, 0x8a, 0xb0, 0xd2, 0xf8, 0xee, 0x7b, 0x00, 0x26, 0x3d, 0xbd, 0x44, 0xe5, - 0xc4, 0x4f, 0x28, 0x27, 0x4d, 0x79, 0x3d, 0x5f, 0xa7, 0xf8, 0x47, 0x31, 0x98, 0x72, 0x2b, 0x1b, - 0xa5, 0x11, 0xfd, 0x5f, 0x01, 0xe3, 0x11, 0x3f, 0x85, 0xf1, 0x98, 0xe6, 0x5b, 0xee, 0xe1, 0x06, - 0x64, 0x11, 0x66, 0xa8, 0x43, 0x22, 0xc9, 0xed, 0x76, 0x53, 0xc3, 0xaa, 0xc4, 0xf6, 0x72, 0x13, - 0x74, 0x2f, 0x77, 0x9a, 0x26, 0x2d, 0xb1, 0x94, 0x2a, 0xdd, 0xd7, 0xbd, 0x0b, 0xd9, 0x1d, 0x13, - 0xe3, 0xa7, 0x58, 0xa2, 0xc8, 0xe8, 0x24, 0x91, 0x05, 0x19, 0xc6, 0x58, 0x23, 0x7c, 0xbc, 0x03, - 0xbe, 0x0b, 0xd3, 0x54, 0xc1, 0x51, 0x9f, 0xa9, 0xe4, 0xad, 0xf2, 0xcf, 0x02, 0x20, 0xbf, 0xfc, - 0x4f, 0xae, 0x61, 0x62, 0x91, 0x37, 0xcc, 0x0b, 0x80, 0x58, 0x90, 0x99, 0x25, 0xb5, 0xb1, 0x29, - 0x59, 0x58, 0x31, 0xf8, 0x35, 0x34, 0x82, 0x98, 0xe7, 0x29, 0x9b, 0xd8, 0xac, 0x51, 0x7a, 0xf1, - 0xbd, 0x59, 0xc8, 0x72, 0x9d, 0x6c, 0xe9, 0x9a, 0xa1, 0xa3, 0x5b, 0x10, 0x6f, 0xf0, 0x95, 0xde, - 0x4c, 0xe8, 0x4a, 0x90, 0x77, 0x15, 0x56, 0x65, 0x4c, 0x24, 0x79, 0x09, 0x4b, 0xbb, 0x63, 0x87, - 0x38, 0x45, 0x5e, 0x6c, 0xac, 0x9f, 0xa5, 0xdd, 0xb1, 0x51, 0x0d, 0xa6, 0x14, 0xef, 0x2a, 0x20, - 0x89, 0xb0, 0xc7, 0xfb, 0x6e, 0x2e, 0x84, 0x5e, 0xa8, 0x54, 0x19, 0x13, 0x73, 0x4a, 0x20, 0x01, - 0x95, 0xfc, 0x77, 0xcf, 0xb0, 0xe9, 0xf2, 0x52, 0xe8, 0xf9, 0xcb, 0xe0, 0xbd, 0x37, 0x95, 0x31, - 0xdf, 0x15, 0x35, 0xe8, 0x35, 0x48, 0xaa, 0xf4, 0x4e, 0x13, 0xde, 0x43, 0xc3, 0x3a, 0x51, 0xe0, - 0x1a, 0x99, 0xca, 0x98, 0xc8, 0x39, 0xd0, 0x7d, 0xc8, 0xb2, 0x7f, 0xcc, 0x39, 0xe1, 0x48, 0xee, - 0x4a, 0x7f, 0x09, 0x3e, 0x5b, 0x5f, 0x19, 0x13, 0x33, 0xaa, 0x47, 0x45, 0x9f, 0x85, 0x84, 0xa5, - 0xc8, 0x3a, 0xdf, 0x24, 0x99, 0xeb, 0x73, 0x71, 0x81, 0xc7, 0x4c, 0x73, 0xa3, 0xd7, 0xd9, 0x95, - 0x76, 0xf6, 0x01, 0x3b, 0x78, 0x19, 0x5e, 0xfc, 0xc0, 0xd1, 0x5a, 0x52, 0x7c, 0x4c, 0x09, 0xe8, - 0x1e, 0x64, 0x64, 0xe2, 0xe5, 0x49, 0xf4, 0x18, 0x5b, 0x01, 0xfa, 0x1e, 0x34, 0xea, 0x39, 0x82, - 0x58, 0xa1, 0xe7, 0x77, 0x1d, 0xa2, 0x27, 0xa8, 0x85, 0xcd, 0x06, 0x2e, 0x64, 0x06, 0x0b, 0xf2, - 0x47, 0xd1, 0xb8, 0x82, 0x28, 0x91, 0x78, 0x7b, 0xbb, 0xce, 0x11, 0x05, 0x5a, 0xa9, 0x6c, 0xdf, - 0x4d, 0xb1, 0x90, 0x23, 0x16, 0x95, 0x31, 0x31, 0xbb, 0xeb, 0x23, 0xa3, 0x45, 0x88, 0x35, 0x94, - 0xc2, 0x24, 0x95, 0xf1, 0xec, 0xa0, 0x03, 0x04, 0x95, 0x31, 0x31, 0xd6, 0x50, 0x08, 0x2a, 0x67, - 0xa1, 0xdf, 0x07, 0x7a, 0x21, 0xd7, 0x77, 0xc4, 0x07, 0xe3, 0xe8, 0x2b, 0x63, 0x22, 0x8d, 0x36, - 0x27, 0xef, 0xdb, 0x84, 0x9c, 0xc9, 0xc2, 0x90, 0x9c, 0xe0, 0xc2, 0x7c, 0xdf, 0x8d, 0xc2, 0xb0, - 0xf8, 0xc2, 0x0a, 0xf5, 0xfa, 0x7d, 0x74, 0xf4, 0x15, 0x38, 0x13, 0x94, 0xc8, 0x7b, 0xda, 0x74, - 0x8f, 0x19, 0x09, 0x97, 0x1b, 0xec, 0x70, 0xc8, 0xec, 0x49, 0x44, 0xaf, 0xc0, 0x38, 0x6b, 0x35, - 0x44, 0x45, 0x86, 0xed, 0x80, 0x77, 0x35, 0x18, 0xcb, 0x4f, 0x3a, 0xbf, 0xcd, 0xe3, 0x6f, 0xa4, - 0xa6, 0xd1, 0x28, 0xcc, 0xf4, 0xed, 0xfc, 0xbd, 0xf1, 0x44, 0xa4, 0xf3, 0xdb, 0x1e, 0x95, 0xb4, - 0xbb, 0xc9, 0x52, 0x78, 0xb8, 0xc6, 0x99, 0xbe, 0xed, 0x1e, 0x12, 0x96, 0x53, 0xa1, 0xb1, 0xd3, - 0x1e, 0x99, 0x14, 0xcd, 0x64, 0x17, 0x77, 0x48, 0x74, 0x4c, 0x9d, 0xed, 0x5b, 0xb4, 0xde, 0xcb, - 0x48, 0x2a, 0xd4, 0x0d, 0x72, 0xa9, 0xe8, 0x21, 0xe4, 0xf9, 0x91, 0x7a, 0x6f, 0xd9, 0xfa, 0x1c, - 0x95, 0xf7, 0x7c, 0xa8, 0xe9, 0x0a, 0x8b, 0x6f, 0xa8, 0x8c, 0x89, 0x53, 0x4a, 0x30, 0x05, 0x3d, - 0x82, 0x69, 0x2a, 0x4f, 0x52, 0xbc, 0xbb, 0x10, 0x0a, 0x85, 0x9e, 0x40, 0xc1, 0xfe, 0xd7, 0x26, - 0x38, 0x92, 0xf3, 0x4a, 0x57, 0x12, 0xe9, 0xc6, 0x9a, 0xae, 0xd9, 0xd4, 0xca, 0xce, 0xf6, 0xed, - 0xc6, 0xc1, 0xab, 0xd3, 0x48, 0x37, 0xd6, 0x18, 0x85, 0x74, 0x63, 0x9b, 0xc7, 0xf2, 0xf0, 0xe6, - 0x78, 0xb6, 0x6f, 0x37, 0x0e, 0x0b, 0xfa, 0x21, 0xdd, 0xd8, 0xf6, 0xd3, 0x49, 0x37, 0x66, 0x06, - 0xa2, 0x4b, 0xee, 0x73, 0x7d, 0xbb, 0x71, 0xdf, 0x83, 0xa4, 0xa4, 0x1b, 0xcb, 0x3d, 0x89, 0x68, - 0x05, 0x80, 0xb9, 0x27, 0x9a, 0xbe, 0x63, 0x14, 0xe6, 0xfa, 0x4e, 0x06, 0xdd, 0xd1, 0x3c, 0x64, - 0x32, 0x68, 0x3a, 0x34, 0x62, 0xc8, 0x28, 0x36, 0x92, 0xe8, 0x2e, 0x59, 0x61, 0xbe, 0xaf, 0x21, - 0xeb, 0xd9, 0x2c, 0x23, 0x86, 0x6c, 0xdf, 0x25, 0x92, 0x59, 0x85, 0xad, 0xb1, 0x16, 0x16, 0xfa, - 0x9b, 0x65, 0xff, 0xee, 0x02, 0x35, 0xcb, 0x94, 0x80, 0x96, 0x20, 0x4d, 0xa6, 0xed, 0x43, 0x6a, - 0x86, 0x2e, 0xf6, 0x75, 0x38, 0xbb, 0x0e, 0x07, 0x54, 0xc6, 0xc4, 0xd4, 0x13, 0x4e, 0x22, 0xaf, - 0x67, 0xab, 0x56, 0x85, 0x62, 0xdf, 0xd7, 0x07, 0x56, 0x2a, 0xc9, 0xeb, 0x19, 0x07, 0x52, 0xe0, - 0x2c, 0x6b, 0x2b, 0x7e, 0x8e, 0xd3, 0xe4, 0x87, 0x0e, 0x0b, 0x97, 0xa8, 0xa8, 0xbe, 0x6b, 0x40, - 0xa1, 0xc7, 0x4b, 0x2b, 0x63, 0xe2, 0x8c, 0xdc, 0x9b, 0x4a, 0x06, 0x3c, 0x9f, 0x7a, 0xd8, 0xca, - 0x51, 0xe1, 0x72, 0xdf, 0x01, 0x1f, 0xb2, 0xd6, 0x46, 0x06, 0xbc, 0xec, 0x23, 0xb3, 0x09, 0x48, - 0x95, 0x2c, 0x8b, 0xed, 0xa9, 0x5e, 0x19, 0x30, 0x01, 0x75, 0x61, 0x7f, 0x36, 0x01, 0xa9, 0x35, - 0xc6, 0x49, 0x04, 0x29, 0x4d, 0x2c, 0x9b, 0xdc, 0xcc, 0x5e, 0xed, 0x2b, 0xa8, 0xe7, 0x3a, 0x32, - 0x22, 0x48, 0x71, 0x89, 0xc4, 0xe1, 0x31, 0x9d, 0xbb, 0x38, 0xb8, 0xeb, 0x77, 0xad, 0xaf, 0xc3, - 0x13, 0x7a, 0x65, 0x08, 0x71, 0x78, 0xcc, 0x40, 0x02, 0xfa, 0x3c, 0x4c, 0x70, 0x84, 0x56, 0xb8, - 0x3e, 0xc0, 0x21, 0xf5, 0x43, 0x6b, 0x32, 0xae, 0x39, 0x0f, 0xb3, 0xb2, 0x0c, 0x19, 0xb2, 0xea, - 0x3d, 0x3f, 0xc0, 0xca, 0xf6, 0x80, 0x53, 0x66, 0x65, 0x3d, 0x32, 0xb1, 0xb2, 0xac, 0x9f, 0xf2, - 0xb9, 0xee, 0x46, 0x5f, 0x2b, 0xdb, 0x7b, 0x32, 0x81, 0x58, 0xd9, 0x27, 0x1e, 0x95, 0xd4, 0xcc, - 0x62, 0xa8, 0xa8, 0xf0, 0x99, 0xbe, 0x35, 0x0b, 0x82, 0x44, 0x52, 0x33, 0xce, 0x43, 0x9a, 0x8d, - 0x05, 0x91, 0x32, 0x4d, 0xbf, 0xd0, 0xff, 0xc8, 0x74, 0x37, 0x88, 0xa8, 0x38, 0x57, 0xd5, 0x32, - 0x0d, 0xbb, 0x86, 0xca, 0xe4, 0x07, 0x44, 0xb9, 0xa6, 0x5e, 0x1c, 0x6c, 0xa8, 0xc2, 0xce, 0xbe, - 0xba, 0x86, 0x2a, 0x90, 0x48, 0x8b, 0xca, 0xce, 0xf9, 0xd0, 0xf1, 0xbd, 0x38, 0xe0, 0x74, 0x77, - 0xd7, 0xd1, 0x2b, 0x5a, 0x54, 0x97, 0xe8, 0x0d, 0xa1, 0x0e, 0xbb, 0x86, 0xa0, 0x70, 0x73, 0xf0, - 0x10, 0x0a, 0x5e, 0x87, 0xe0, 0x0e, 0x21, 0x4e, 0x76, 0xe7, 0x4c, 0xc7, 0xc3, 0x78, 0x69, 0xf0, - 0x9c, 0xd9, 0xed, 0x5a, 0xb0, 0x39, 0x93, 0xfb, 0x14, 0xff, 0x4f, 0x80, 0x05, 0x56, 0x36, 0xba, - 0x8e, 0x77, 0x28, 0xb9, 0x6b, 0xa2, 0xbe, 0x50, 0xf3, 0x5b, 0xf4, 0x05, 0xaf, 0xf4, 0x2b, 0xee, - 0x90, 0x35, 0xde, 0xca, 0x98, 0xf8, 0x9c, 0x3c, 0x28, 0xdf, 0xf2, 0x04, 0xdf, 0x39, 0x75, 0x4f, - 0xdc, 0x4d, 0xe5, 0xf3, 0xf7, 0x13, 0xa9, 0xf3, 0xf9, 0xc2, 0xfd, 0x44, 0xea, 0x42, 0x7e, 0xf6, - 0x7e, 0x22, 0xf5, 0x4c, 0xfe, 0xd9, 0xe2, 0xbf, 0x5c, 0x80, 0x49, 0x07, 0xc3, 0x31, 0x44, 0x74, - 0xdb, 0x8f, 0x88, 0xe6, 0xfa, 0x21, 0x22, 0x8e, 0xfa, 0x38, 0x24, 0xba, 0xed, 0x87, 0x44, 0x73, - 0xfd, 0x20, 0x91, 0xc7, 0x43, 0x30, 0x51, 0xbd, 0x1f, 0x26, 0x7a, 0x7e, 0x04, 0x4c, 0xe4, 0x8a, - 0xea, 0x06, 0x45, 0x2b, 0xbd, 0xa0, 0xe8, 0xf2, 0x60, 0x50, 0xe4, 0x8a, 0xf2, 0xa1, 0xa2, 0xd7, - 0xbb, 0x50, 0xd1, 0xc5, 0x01, 0xa8, 0xc8, 0xe5, 0x77, 0x60, 0xd1, 0x6a, 0x28, 0x2c, 0xba, 0x3a, - 0x0c, 0x16, 0xb9, 0x72, 0x02, 0xb8, 0xe8, 0xe5, 0x00, 0x2e, 0x9a, 0xef, 0x8b, 0x8b, 0x5c, 0x6e, - 0x06, 0x8c, 0xde, 0xe8, 0x06, 0x46, 0x17, 0x07, 0x00, 0x23, 0xaf, 0x06, 0x1c, 0x19, 0x55, 0xc2, - 0x90, 0xd1, 0x95, 0x21, 0xc8, 0xc8, 0x95, 0xe2, 0x87, 0x46, 0x95, 0x30, 0x68, 0x74, 0x65, 0x08, - 0x34, 0xea, 0x92, 0xc4, 0xb0, 0xd1, 0x7a, 0x38, 0x36, 0xba, 0x36, 0x14, 0x1b, 0xb9, 0xd2, 0x82, - 0xe0, 0xe8, 0xa6, 0x0f, 0x1c, 0x3d, 0xd7, 0x07, 0x1c, 0xb9, 0xac, 0x04, 0x1d, 0x7d, 0xa1, 0x07, - 0x1d, 0x15, 0x07, 0xa1, 0x23, 0x97, 0xd7, 0x85, 0x47, 0x6f, 0xf5, 0x81, 0x47, 0xd7, 0x87, 0xc3, - 0x23, 0x57, 0x58, 0x17, 0x3e, 0x92, 0x07, 0xe2, 0xa3, 0x17, 0x47, 0xc4, 0x47, 0xae, 0xf4, 0x30, - 0x80, 0xf4, 0x6a, 0x10, 0x20, 0x2d, 0xf4, 0x07, 0x48, 0xae, 0x18, 0x8e, 0x90, 0x56, 0x43, 0x11, - 0xd2, 0xd5, 0x61, 0x08, 0xc9, 0x1b, 0x07, 0x7e, 0x88, 0xb4, 0x1e, 0x0e, 0x91, 0xae, 0x0d, 0x85, - 0x48, 0x5e, 0xf3, 0x07, 0x30, 0xd2, 0x6a, 0x28, 0x46, 0xba, 0x3a, 0x0c, 0x23, 0x79, 0x85, 0xf3, - 0x83, 0xa4, 0xb7, 0xfb, 0x82, 0xa4, 0x1b, 0xa3, 0x80, 0x24, 0x57, 0x68, 0x0f, 0x4a, 0x7a, 0xa7, - 0x3f, 0x4a, 0xfa, 0xcc, 0x09, 0x2e, 0x97, 0x0b, 0x85, 0x49, 0x5f, 0xe8, 0x81, 0x49, 0xc5, 0x41, - 0x30, 0xc9, 0xeb, 0xcf, 0x0e, 0x4e, 0x92, 0x07, 0xa2, 0x9a, 0x17, 0x47, 0x44, 0x35, 0x5e, 0xe7, - 0x0b, 0x81, 0x35, 0xe5, 0x10, 0x58, 0x73, 0x79, 0x30, 0xac, 0xf1, 0xcc, 0xb9, 0x87, 0x6b, 0x2a, - 0x61, 0xb8, 0xe6, 0xca, 0x10, 0x5c, 0xe3, 0x59, 0x21, 0x1f, 0xb0, 0x79, 0xbd, 0x0b, 0xd8, 0x5c, - 0x1c, 0x1a, 0x65, 0xe3, 0x43, 0x36, 0xcb, 0xbd, 0xc8, 0xe6, 0xd2, 0x40, 0x64, 0xe3, 0x4a, 0xf0, - 0xa0, 0xcd, 0xeb, 0x5d, 0xd0, 0xe6, 0xe2, 0x00, 0x68, 0xe3, 0x15, 0x80, 0x63, 0x1b, 0x75, 0x30, - 0xb6, 0x59, 0x1c, 0x15, 0xdb, 0xb8, 0x82, 0x43, 0xc1, 0xcd, 0x7a, 0x38, 0xb8, 0xb9, 0x36, 0xe2, - 0xee, 0x79, 0x0f, 0xba, 0xa9, 0x84, 0xa1, 0x9b, 0x2b, 0x43, 0xd0, 0x8d, 0x7f, 0x0e, 0x71, 0xe1, - 0x4d, 0x25, 0x0c, 0xde, 0x5c, 0x19, 0x02, 0x6f, 0x3c, 0x49, 0x3e, 0x7c, 0x53, 0xef, 0x87, 0x6f, - 0x9e, 0x1f, 0x01, 0xdf, 0x78, 0xce, 0x4b, 0x17, 0xc0, 0x79, 0xb3, 0x1b, 0xe0, 0x14, 0x07, 0x01, - 0x1c, 0x6f, 0x44, 0x3a, 0x08, 0x67, 0x3d, 0x1c, 0xe1, 0x5c, 0x1b, 0x8a, 0x70, 0xfc, 0x46, 0xd2, - 0x07, 0x71, 0x56, 0x43, 0x21, 0xce, 0xd5, 0x61, 0x10, 0xc7, 0x33, 0x92, 0x7e, 0x8c, 0xf3, 0x66, - 0x37, 0xc6, 0x29, 0x0e, 0xc2, 0x38, 0x5e, 0xe5, 0x1c, 0x90, 0x53, 0x09, 0x03, 0x39, 0x57, 0x86, - 0x80, 0x1c, 0xaf, 0xf1, 0x7c, 0x28, 0x47, 0x1e, 0x88, 0x72, 0x5e, 0x1c, 0x11, 0xe5, 0x74, 0x19, - 0xae, 0x20, 0xcc, 0xa9, 0x84, 0xc1, 0x9c, 0x2b, 0x43, 0x60, 0x8e, 0xaf, 0xb0, 0x1e, 0xce, 0x59, - 0x0f, 0xc7, 0x39, 0xd7, 0x86, 0xe2, 0x9c, 0xae, 0xd1, 0xe4, 0x00, 0x9d, 0xd5, 0x50, 0xa0, 0x73, - 0x75, 0x18, 0xd0, 0xe9, 0x9a, 0xf8, 0xb8, 0x73, 0xf0, 0xff, 0x47, 0x47, 0x3a, 0xaf, 0x9e, 0x1c, - 0xe9, 0xb8, 0xef, 0x8c, 0x04, 0xea, 0xdc, 0x4f, 0xa4, 0x9e, 0xcd, 0x3f, 0x57, 0xfc, 0xc5, 0x38, - 0x24, 0x2b, 0x6e, 0x8c, 0x8b, 0x57, 0x4a, 0xe1, 0x34, 0xb7, 0xd7, 0xa0, 0x15, 0x32, 0x62, 0xa9, - 0xdd, 0x1b, 0x7e, 0x51, 0x59, 0xef, 0x25, 0x5a, 0x9c, 0xf5, 0x14, 0x87, 0x40, 0xd1, 0xcb, 0x30, - 0xd9, 0xb1, 0xb0, 0x29, 0xb5, 0x4d, 0xcd, 0x30, 0x35, 0x9b, 0x85, 0xeb, 0x0b, 0xcb, 0xf9, 0x8f, - 0x8e, 0xe6, 0xb3, 0x5b, 0x16, 0x36, 0x37, 0x39, 0x5d, 0xcc, 0x76, 0x7c, 0x4f, 0xce, 0x77, 0x75, - 0xc6, 0x47, 0xff, 0xae, 0xce, 0x5b, 0x90, 0x37, 0xb1, 0xac, 0x06, 0x3c, 0x10, 0x76, 0x2d, 0x4c, - 0x78, 0x9f, 0xa1, 0x67, 0x55, 0x9c, 0x9c, 0xf4, 0x7a, 0x98, 0x29, 0x33, 0x48, 0x44, 0xb7, 0xe0, - 0x6c, 0x4b, 0x3e, 0xa0, 0x31, 0x88, 0x92, 0xe3, 0xd4, 0xd1, 0xb8, 0xc2, 0x14, 0x8d, 0x97, 0x45, - 0x2d, 0xf9, 0x80, 0x7e, 0xa4, 0x87, 0x25, 0xd1, 0xeb, 0xf9, 0xaf, 0x40, 0x4e, 0xd5, 0x2c, 0x5b, - 0xd3, 0x15, 0xe7, 0x66, 0x50, 0x76, 0xd1, 0xe6, 0xa4, 0x43, 0x65, 0x97, 0x7f, 0xde, 0x80, 0x69, - 0x1e, 0x8f, 0xed, 0x7d, 0xb6, 0x87, 0xc2, 0x97, 0x14, 0x29, 0x05, 0x49, 0xf0, 0xbe, 0xd7, 0x54, - 0x82, 0xa9, 0x86, 0x6c, 0xe3, 0x7d, 0xf9, 0x50, 0x72, 0x8e, 0xcb, 0x64, 0xe8, 0xb5, 0x7a, 0xcf, - 0x1c, 0x1f, 0xcd, 0x4f, 0xde, 0x63, 0x49, 0x3d, 0xa7, 0x66, 0x26, 0x1b, 0xbe, 0x04, 0x15, 0x2d, - 0x41, 0x96, 0x5e, 0xbb, 0x6d, 0xb0, 0xdb, 0xdd, 0x39, 0x28, 0xe9, 0xb7, 0x7d, 0xc5, 0xef, 0x80, - 0x17, 0xe9, 0x55, 0xdd, 0xce, 0x85, 0xf0, 0xd7, 0x60, 0x4a, 0xb6, 0x0e, 0x75, 0x85, 0x6a, 0x18, - 0xeb, 0x56, 0xc7, 0xa2, 0xa8, 0x24, 0x25, 0xe6, 0x28, 0xb9, 0xe4, 0x50, 0xd1, 0xab, 0x70, 0x41, - 0xc5, 0xc4, 0xcd, 0x62, 0xbe, 0x8c, 0x6d, 0x18, 0x92, 0xd1, 0x54, 0x25, 0x7a, 0x83, 0x04, 0x45, - 0x24, 0x29, 0xf1, 0x2c, 0xcd, 0x40, 0xbd, 0x98, 0xba, 0x61, 0x6c, 0x34, 0xd5, 0x32, 0x49, 0xe4, - 0xb7, 0x85, 0xfe, 0x9a, 0x00, 0xd9, 0xc0, 0x01, 0x87, 0xd7, 0xbb, 0xf6, 0x77, 0x2f, 0x84, 0x63, - 0xa9, 0x7e, 0x01, 0x62, 0x29, 0xde, 0x76, 0x4e, 0x78, 0xdc, 0x7c, 0x7f, 0x5f, 0x9c, 0xae, 0x2c, - 0x38, 0xb1, 0x05, 0x0e, 0xdb, 0x6b, 0x89, 0xdf, 0x78, 0x7f, 0x7e, 0xac, 0xf8, 0xb3, 0x38, 0x4c, - 0x06, 0x0f, 0x32, 0x54, 0xbb, 0xca, 0x15, 0x66, 0xeb, 0x02, 0x1c, 0x8b, 0x03, 0x2e, 0x4f, 0x4b, - 0x7b, 0xd7, 0x7c, 0xb3, 0x62, 0x2e, 0x0c, 0xd8, 0xc5, 0xf6, 0x97, 0xd3, 0x63, 0x9c, 0xfd, 0x7e, - 0xcc, 0xb5, 0x19, 0x8b, 0x30, 0xce, 0x14, 0x2e, 0xf4, 0x3d, 0x58, 0x4a, 0x75, 0x2e, 0xb2, 0x6c, - 0xc4, 0xc6, 0xd4, 0x4f, 0x75, 0x43, 0x96, 0x77, 0xb7, 0xc0, 0xc9, 0xbf, 0x85, 0xc5, 0xef, 0x49, - 0x1b, 0x3f, 0xd9, 0x3d, 0x69, 0x6c, 0x97, 0xba, 0xd9, 0x64, 0xf6, 0x9b, 0x8d, 0xb2, 0x64, 0xcf, - 0xe9, 0x4d, 0x2a, 0x82, 0x7f, 0x2a, 0x6d, 0x51, 0xe4, 0x9f, 0x4a, 0xf3, 0x45, 0x2c, 0xe6, 0x5c, - 0x11, 0x74, 0x48, 0xb2, 0xb8, 0x56, 0xde, 0xd4, 0xdf, 0x16, 0x20, 0x4f, 0x07, 0xe0, 0x5d, 0x8c, - 0xd5, 0x48, 0x7a, 0xa1, 0x13, 0x4c, 0x19, 0x1b, 0x3d, 0xc6, 0x3c, 0x70, 0xed, 0x7a, 0x3c, 0x78, - 0xed, 0x7a, 0xf1, 0x7d, 0x01, 0x72, 0x6e, 0x09, 0xd9, 0x87, 0x81, 0x06, 0x5c, 0x7f, 0x76, 0xba, - 0x6f, 0xe5, 0x38, 0x27, 0xb3, 0x47, 0xfa, 0x42, 0x91, 0xff, 0x64, 0x36, 0xfb, 0xae, 0xcb, 0x6f, - 0x0a, 0x30, 0xe3, 0x16, 0xb1, 0xe4, 0x9d, 0xba, 0x3d, 0x45, 0xb8, 0xbd, 0x48, 0xbf, 0x99, 0x46, - 0x10, 0x3f, 0x3d, 0x12, 0x3f, 0x52, 0xf7, 0x44, 0x3c, 0x1a, 0x03, 0xf8, 0x4a, 0x82, 0x5a, 0xaf, - 0xd1, 0xaf, 0xa9, 0xb1, 0xff, 0x56, 0xf1, 0xae, 0x4f, 0x81, 0x74, 0x24, 0x10, 0x2d, 0x8d, 0x34, - 0x64, 0x1c, 0x2d, 0xd1, 0xcc, 0xc5, 0x1f, 0xfa, 0x5b, 0xa2, 0xbc, 0x47, 0x3c, 0xc8, 0x3b, 0x10, - 0xdf, 0x93, 0x9b, 0x83, 0x82, 0x51, 0x02, 0x2d, 0x27, 0x92, 0xdc, 0xe8, 0x6e, 0xe0, 0xb0, 0x72, - 0xac, 0xbf, 0xb7, 0xd3, 0xab, 0xd2, 0xc0, 0xa1, 0xe6, 0x57, 0x9c, 0x5a, 0xc4, 0x87, 0xbf, 0xde, - 0x6f, 0x01, 0x5e, 0x4b, 0x7c, 0xf0, 0xfe, 0xbc, 0x70, 0xa3, 0x06, 0x33, 0x21, 0x73, 0x23, 0xca, - 0x01, 0xf8, 0x2e, 0x63, 0xe7, 0x9f, 0x6c, 0x5b, 0x5a, 0x91, 0xb6, 0xd6, 0x4b, 0x1b, 0x6b, 0x6b, - 0xd5, 0x7a, 0xbd, 0xbc, 0x92, 0x17, 0x50, 0x1e, 0xb2, 0x81, 0xab, 0xdc, 0xf9, 0x97, 0xda, 0x6e, - 0xfc, 0x0f, 0x00, 0xef, 0x73, 0x0e, 0x44, 0xd6, 0x6a, 0xf9, 0x91, 0xf4, 0x70, 0xe9, 0xc1, 0x56, - 0xb9, 0x96, 0x1f, 0x43, 0x08, 0x72, 0xcb, 0x4b, 0xf5, 0x52, 0x45, 0x12, 0xcb, 0xb5, 0xcd, 0x8d, - 0xf5, 0x5a, 0x39, 0x2f, 0x70, 0xbe, 0x15, 0xc8, 0xfa, 0x8f, 0x75, 0xa3, 0x19, 0x98, 0x2a, 0x55, - 0xca, 0xa5, 0x55, 0xe9, 0x61, 0x75, 0x49, 0x7a, 0x6b, 0xab, 0xbc, 0x55, 0xce, 0x8f, 0xd1, 0xa2, - 0x51, 0xe2, 0xdd, 0xad, 0x07, 0x0f, 0xf2, 0x02, 0x9a, 0x82, 0x0c, 0x7b, 0xa6, 0xd7, 0xbe, 0xe7, - 0x63, 0x37, 0xd6, 0x20, 0xe3, 0xbb, 0x05, 0x8e, 0xbc, 0x6e, 0x73, 0xab, 0x56, 0x91, 0xea, 0xd5, - 0xb5, 0x72, 0xad, 0xbe, 0xb4, 0xb6, 0xc9, 0x64, 0x50, 0xda, 0xd2, 0xf2, 0x86, 0x58, 0xcf, 0x0b, - 0xee, 0x73, 0x7d, 0x63, 0xab, 0x54, 0x71, 0x3f, 0x38, 0x97, 0x48, 0xc5, 0xf3, 0xf1, 0x1b, 0x4f, - 0xe0, 0x7c, 0x9f, 0xb3, 0xcd, 0x28, 0x03, 0x13, 0x5b, 0x3a, 0xbd, 0xf7, 0x2a, 0x3f, 0x86, 0x26, - 0x7d, 0xc7, 0x9b, 0xf3, 0x02, 0x4a, 0xb1, 0x83, 0xab, 0xf9, 0x18, 0x4a, 0x42, 0xac, 0x76, 0x27, - 0x1f, 0x27, 0x05, 0xf5, 0x9d, 0x0e, 0xce, 0x27, 0x50, 0x9a, 0x1f, 0x9d, 0xcc, 0x8f, 0xa3, 0xac, - 0x77, 0x76, 0x31, 0x9f, 0xbc, 0x71, 0x11, 0x7c, 0x07, 0xbb, 0x10, 0x40, 0xf2, 0x81, 0x6c, 0x63, - 0xcb, 0xce, 0x8f, 0xa1, 0x09, 0x88, 0x2f, 0x35, 0x9b, 0x79, 0xe1, 0xf6, 0x1f, 0x0a, 0x90, 0x72, - 0x6e, 0x30, 0x47, 0x0f, 0x60, 0x9c, 0x2d, 0x03, 0xcc, 0xf7, 0x9f, 0x91, 0xa8, 0x51, 0x9b, 0x5d, - 0x18, 0x36, 0x65, 0x15, 0xc7, 0xd0, 0xdb, 0xfc, 0xeb, 0x91, 0xa4, 0xc7, 0xa0, 0x4b, 0x83, 0xfa, - 0x93, 0x23, 0x75, 0x70, 0xa7, 0x23, 0x63, 0xa4, 0x38, 0xf6, 0x92, 0xb0, 0xfc, 0xfc, 0x07, 0x3f, - 0x99, 0x1b, 0xfb, 0xe0, 0x78, 0x4e, 0xf8, 0xf0, 0x78, 0x4e, 0xf8, 0xf1, 0xf1, 0x9c, 0xf0, 0x8f, - 0xc7, 0x73, 0xc2, 0xaf, 0xfc, 0x74, 0x6e, 0xec, 0xc3, 0x9f, 0xce, 0x8d, 0xfd, 0xf8, 0xa7, 0x73, - 0x63, 0xef, 0x4c, 0x70, 0xee, 0xed, 0x24, 0xfd, 0x90, 0xe5, 0x9d, 0x7f, 0x0f, 0x00, 0x00, 0xff, - 0xff, 0xb9, 0xf2, 0x40, 0x42, 0xcd, 0x73, 0x00, 0x00, +func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_c1701b707e02ced5) } + +var fileDescriptor_api_c1701b707e02ced5 = []byte{ + // 7312 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0xeb, 0x6f, 0x23, 0xc9, + 0x75, 0xaf, 0x9a, 0xa4, 0x28, 0xf2, 0x90, 0xa2, 0xa8, 0xd2, 0x3c, 0x38, 0xda, 0x5d, 0x49, 0xc3, + 0x79, 0xee, 0x78, 0x57, 0xb3, 0x33, 0xe3, 0xbd, 0xbb, 0xde, 0x5d, 0xaf, 0x2d, 0x51, 0x9c, 0x21, + 0x47, 0xa3, 0xc7, 0x36, 0xa9, 0x59, 0xcf, 0xfa, 0xee, 0x6d, 0xb7, 0xba, 0x4b, 0x54, 0x7b, 0xc8, + 0x6e, 0x4e, 0x77, 0x53, 0x8f, 0x01, 0x2e, 0x2e, 0x6e, 0xf2, 0xc1, 0x81, 0x63, 0x18, 0x01, 0x12, + 0x04, 0x81, 0xed, 0xc0, 0x0b, 0x38, 0x48, 0x82, 0x04, 0x36, 0x10, 0x20, 0x48, 0x90, 0x20, 0x81, + 0x3f, 0xe4, 0xcb, 0xc6, 0x70, 0x82, 0x45, 0x90, 0xc0, 0x46, 0x80, 0x08, 0xb1, 0x0c, 0x24, 0x86, + 0xff, 0x01, 0x03, 0xfb, 0x21, 0x09, 0xea, 0xd1, 0x2f, 0xb2, 0xf9, 0x90, 0xb6, 0x37, 0xd9, 0x20, + 0x9f, 0xc8, 0x3e, 0x55, 0xe7, 0x74, 0xd5, 0xa9, 0xaa, 0x53, 0xe7, 0x57, 0x75, 0xaa, 0x1a, 0xa6, + 0x4d, 0x43, 0x56, 0x76, 0xdb, 0xdb, 0x37, 0xe5, 0xb6, 0xb6, 0xd8, 0x36, 0x0d, 0xdb, 0x40, 0xd3, + 0x8a, 0xa1, 0x3c, 0xa6, 0xe4, 0x45, 0x9e, 0x38, 0x8b, 0x9c, 0x5c, 0xaa, 0x6c, 0xcb, 0x2c, 0xdb, + 0xec, 0x19, 0x87, 0x86, 0x4d, 0xd3, 0x30, 0x2d, 0x4e, 0x3d, 0xe7, 0x50, 0x5b, 0xd8, 0x96, 0x7d, + 0xb9, 0x8b, 0x96, 0x6d, 0x98, 0x72, 0x03, 0xdf, 0xc4, 0x7a, 0x43, 0xd3, 0x9d, 0x1f, 0x92, 0x6f, + 0x4f, 0x51, 0x78, 0x9e, 0x4b, 0x83, 0xf2, 0xdc, 0xe1, 0x99, 0x0a, 0x1d, 0x5b, 0x6b, 0xde, 0xdc, + 0x6d, 0x2a, 0x37, 0x6d, 0xad, 0x85, 0x2d, 0x5b, 0x6e, 0xb5, 0x79, 0xca, 0x02, 0x4d, 0xb1, 0x4d, + 0x59, 0xd1, 0xf4, 0xc6, 0x4d, 0x13, 0x2b, 0x86, 0xa9, 0x62, 0x55, 0xb2, 0xda, 0xb2, 0xee, 0x14, + 0xb9, 0x61, 0x34, 0x0c, 0xfa, 0xf7, 0x26, 0xf9, 0xc7, 0xa8, 0xc5, 0xff, 0x07, 0x69, 0x51, 0xd6, + 0x1b, 0xb8, 0xaa, 0xef, 0x18, 0xe8, 0x0d, 0x48, 0xa8, 0xd8, 0x52, 0x0a, 0xc2, 0x82, 0x70, 0x3d, + 0x73, 0xbb, 0xb8, 0xd8, 0xa3, 0x8b, 0x45, 0x9a, 0x77, 0x05, 0x5b, 0x8a, 0xa9, 0xb5, 0x6d, 0xc3, + 0x5c, 0x4e, 0xbc, 0x7f, 0x34, 0x3f, 0x26, 0x52, 0x2e, 0xf4, 0x69, 0x18, 0x6f, 0x62, 0xd9, 0xc2, + 0x85, 0x18, 0x65, 0x2f, 0x84, 0xb0, 0x3f, 0x20, 0xe9, 0x9c, 0x89, 0x65, 0x2e, 0xfe, 0x95, 0x00, + 0x93, 0x22, 0x7e, 0xd2, 0xc1, 0x96, 0x5d, 0xc1, 0xb2, 0x8a, 0x4d, 0x74, 0x01, 0xe2, 0x8f, 0xf1, + 0x61, 0x21, 0xbe, 0x20, 0x5c, 0xcf, 0x2e, 0x4f, 0x7c, 0x78, 0x34, 0x1f, 0x5f, 0xc5, 0x87, 0x22, + 0xa1, 0xa1, 0x05, 0x98, 0xc0, 0xba, 0x2a, 0x91, 0xe4, 0x44, 0x30, 0x39, 0x89, 0x75, 0x75, 0x15, + 0x1f, 0x22, 0x05, 0x52, 0x16, 0x91, 0xa6, 0x2b, 0xb8, 0x30, 0xbe, 0x20, 0x5c, 0x1f, 0x5f, 0xbe, + 0xf7, 0xe1, 0xd1, 0x7c, 0xa9, 0xa1, 0xd9, 0xbb, 0x9d, 0xed, 0x45, 0xc5, 0x68, 0xdd, 0x74, 0x4b, + 0xa5, 0x6e, 0x7b, 0xff, 0x6f, 0xb6, 0x1f, 0x37, 0x6e, 0xf6, 0x69, 0x81, 0xc5, 0xfa, 0x81, 0x5e, + 0xc3, 0x4f, 0x44, 0x57, 0xf0, 0x6b, 0x89, 0x9f, 0xbd, 0x37, 0x2f, 0xdc, 0x4f, 0xa4, 0x84, 0x7c, + 0xec, 0x7e, 0x22, 0x15, 0xcb, 0xc7, 0x8b, 0x5f, 0x8b, 0x43, 0x4e, 0xc4, 0x56, 0xdb, 0xd0, 0x2d, + 0xcc, 0xab, 0xf1, 0x12, 0xc4, 0xed, 0x03, 0x9d, 0x56, 0x23, 0x73, 0x7b, 0x2e, 0x44, 0x19, 0x75, + 0x53, 0xd6, 0x2d, 0x59, 0xb1, 0x35, 0x43, 0x17, 0x49, 0x56, 0xf4, 0x2a, 0x64, 0x4c, 0x6c, 0x75, + 0x5a, 0x98, 0x36, 0x1b, 0xad, 0x61, 0xe6, 0xf6, 0xf9, 0x10, 0xce, 0x5a, 0x5b, 0xd6, 0x45, 0x60, + 0x79, 0xc9, 0x7f, 0x74, 0x01, 0x52, 0x7a, 0xa7, 0x45, 0xf4, 0x62, 0xd1, 0x5a, 0xc7, 0xc5, 0x09, + 0xbd, 0xd3, 0x5a, 0xc5, 0x87, 0x16, 0x2a, 0x41, 0xc6, 0x24, 0x8d, 0x26, 0x69, 0xfa, 0x8e, 0x61, + 0x15, 0x92, 0x0b, 0xf1, 0xeb, 0x99, 0xdb, 0xcf, 0xf6, 0x6b, 0x5a, 0xd2, 0x0d, 0x78, 0xfb, 0x80, + 0xe9, 0x10, 0x2c, 0x54, 0x83, 0x49, 0x5e, 0x32, 0x13, 0xcb, 0x96, 0xa1, 0x17, 0x26, 0x16, 0x84, + 0xeb, 0xb9, 0xdb, 0x8b, 0x61, 0x62, 0x02, 0x5a, 0x20, 0x8f, 0x9d, 0x16, 0x16, 0x29, 0x97, 0x98, + 0x35, 0x7d, 0x4f, 0xc5, 0x47, 0x90, 0xf5, 0xa7, 0x22, 0x04, 0x39, 0xb1, 0x5c, 0xdb, 0x5a, 0x2b, + 0x4b, 0x5b, 0xeb, 0xab, 0xeb, 0x1b, 0x6f, 0xaf, 0xe7, 0xc7, 0xd0, 0x19, 0xc8, 0x73, 0xda, 0x6a, + 0xf9, 0x91, 0xf4, 0xa0, 0xba, 0x56, 0xad, 0xe7, 0x05, 0x74, 0x01, 0xce, 0x72, 0xaa, 0xb8, 0xb4, + 0x7e, 0xaf, 0x2c, 0x2d, 0x6f, 0x6c, 0xad, 0xaf, 0x2c, 0x89, 0x8f, 0xf2, 0xb1, 0xd9, 0xc4, 0xaf, + 0x7c, 0x67, 0x6e, 0xac, 0xf8, 0x10, 0xe0, 0x1e, 0xb6, 0x79, 0xb7, 0x42, 0xcb, 0x90, 0xdc, 0xa5, + 0xa5, 0xe1, 0x1d, 0x7b, 0x21, 0xb4, 0xd8, 0xbe, 0x2e, 0xb8, 0x9c, 0x22, 0x1a, 0xf8, 0xe0, 0x68, + 0x5e, 0x10, 0x39, 0x27, 0x6b, 0xf2, 0xe2, 0xf7, 0x05, 0xc8, 0x50, 0xc1, 0xac, 0x8e, 0xa8, 0xd4, + 0x25, 0xf9, 0xe2, 0x50, 0x85, 0xf4, 0x8a, 0x46, 0x8b, 0x30, 0xbe, 0x27, 0x37, 0x3b, 0x83, 0xc6, + 0xcd, 0x43, 0x92, 0x2e, 0xb2, 0x6c, 0xe8, 0x75, 0xc8, 0x6a, 0xba, 0x8d, 0x75, 0x5b, 0x62, 0x6c, + 0xf1, 0x21, 0x6c, 0x19, 0x96, 0x9b, 0x3e, 0x14, 0xff, 0x5c, 0x00, 0xd8, 0xec, 0x44, 0xa9, 0x1a, + 0x32, 0xee, 0x47, 0x2a, 0xbf, 0x33, 0xee, 0x59, 0x2d, 0xce, 0x41, 0x52, 0xd3, 0x9b, 0x9a, 0xce, + 0xca, 0x9f, 0x12, 0xf9, 0x13, 0x3a, 0x03, 0xe3, 0xdb, 0x4d, 0x4d, 0x57, 0x69, 0xf7, 0x4f, 0x89, + 0xec, 0x81, 0xab, 0x5f, 0x84, 0x0c, 0x2d, 0x7b, 0x84, 0xda, 0x2f, 0x7e, 0x23, 0x06, 0x67, 0x4b, + 0x86, 0xae, 0x6a, 0x64, 0x1c, 0xca, 0xcd, 0x4f, 0x84, 0x6e, 0x5e, 0x86, 0x34, 0x3e, 0x68, 0x8f, + 0xd8, 0xbc, 0x29, 0x7c, 0xd0, 0xa6, 0xff, 0xc2, 0x55, 0x87, 0x3e, 0x0d, 0xe7, 0xe5, 0x66, 0xd3, + 0xd8, 0x97, 0xb4, 0x1d, 0x49, 0x35, 0xb0, 0x25, 0xe9, 0x86, 0x2d, 0xe1, 0x03, 0xcd, 0xb2, 0xa9, + 0xa9, 0x48, 0x89, 0x33, 0x34, 0xb9, 0xba, 0xb3, 0x62, 0x60, 0x6b, 0xdd, 0xb0, 0xcb, 0x24, 0x89, + 0x2b, 0xfc, 0x5d, 0x38, 0xd7, 0xad, 0x9b, 0x28, 0x75, 0xff, 0x77, 0x02, 0xe4, 0xaa, 0xba, 0x66, + 0x7f, 0x22, 0x94, 0xee, 0x6a, 0x2f, 0xee, 0xd7, 0xde, 0x0d, 0xc8, 0xef, 0xc8, 0x5a, 0x73, 0x43, + 0xaf, 0x1b, 0xad, 0x6d, 0xcb, 0x36, 0x74, 0x6c, 0x71, 0xf5, 0xf6, 0xd0, 0xb9, 0xce, 0x1e, 0xc2, + 0x94, 0x5b, 0xa7, 0x28, 0x95, 0xf5, 0x14, 0xf2, 0x55, 0x5d, 0x31, 0x71, 0x0b, 0xeb, 0x91, 0x6a, + 0xeb, 0x59, 0x48, 0x6b, 0x8e, 0x5c, 0xaa, 0xb1, 0xb8, 0xe8, 0x11, 0x78, 0x9d, 0x3a, 0x30, 0xed, + 0x7b, 0x77, 0x94, 0xc6, 0xef, 0x19, 0x48, 0xeb, 0x78, 0x5f, 0xf2, 0xda, 0x2b, 0x2e, 0xa6, 0x74, + 0xbc, 0xcf, 0x8c, 0xd5, 0x23, 0x98, 0x5c, 0xc1, 0x4d, 0x6c, 0xe3, 0xe8, 0x2d, 0xf9, 0x16, 0xe4, + 0x1c, 0xd1, 0x51, 0x36, 0xd2, 0x6f, 0x0b, 0x80, 0xb8, 0x5c, 0x32, 0x7b, 0x46, 0xd9, 0x4e, 0xf3, + 0xc4, 0x3b, 0xb0, 0x3b, 0xa6, 0xce, 0xa6, 0x79, 0xd6, 0x4b, 0x81, 0x91, 0xe8, 0x4c, 0xef, 0x59, + 0xd4, 0x84, 0xdf, 0xa2, 0xba, 0xde, 0x0a, 0xf1, 0x53, 0xf6, 0x61, 0x26, 0x50, 0xbc, 0x68, 0x9b, + 0x32, 0x41, 0x4b, 0x16, 0x5b, 0x88, 0xfb, 0x3d, 0x33, 0x4a, 0x2c, 0xbe, 0x0b, 0xd3, 0xa5, 0x26, + 0x96, 0xcd, 0xa8, 0xd5, 0xc2, 0x9b, 0xf3, 0x11, 0x20, 0xbf, 0xf8, 0x28, 0x9b, 0xf4, 0x77, 0x04, + 0x40, 0x22, 0xde, 0xc3, 0xa6, 0x1d, 0x79, 0x93, 0xae, 0x40, 0xc6, 0x96, 0xcd, 0x06, 0xb6, 0x25, + 0xe2, 0xce, 0x73, 0x73, 0xf5, 0x9c, 0x4f, 0x10, 0x71, 0xea, 0x17, 0x77, 0x9b, 0xca, 0x62, 0xdd, + 0x71, 0xf7, 0x1d, 0xe7, 0x8c, 0xf1, 0x11, 0x32, 0xd7, 0xc0, 0x3b, 0x30, 0x13, 0x28, 0x65, 0x94, + 0x2a, 0xd0, 0x20, 0x53, 0x53, 0x64, 0x7d, 0xa3, 0x4d, 0xe6, 0x01, 0x0b, 0xdd, 0x81, 0x73, 0x96, + 0x6d, 0xb4, 0x25, 0xd9, 0x96, 0x98, 0x6b, 0xb9, 0x6d, 0x74, 0x74, 0x55, 0x36, 0x0f, 0xe9, 0x3b, + 0x52, 0xe2, 0x0c, 0x49, 0x5d, 0x62, 0x05, 0x59, 0xe6, 0x49, 0xa4, 0xfb, 0xb6, 0x34, 0x5d, 0x22, + 0x1e, 0x60, 0xd3, 0xb6, 0xf8, 0x50, 0x87, 0x96, 0xa6, 0x8b, 0x8c, 0xc2, 0xab, 0xf1, 0x1d, 0x81, + 0xbd, 0x2b, 0x4a, 0x35, 0xbf, 0x09, 0x19, 0x4b, 0x91, 0x75, 0x69, 0xc7, 0x30, 0x5b, 0xb2, 0x4d, + 0x47, 0x47, 0x2e, 0xa0, 0x66, 0xd7, 0xaf, 0x56, 0x64, 0xfd, 0x2e, 0xcd, 0x24, 0x82, 0xe5, 0xfe, + 0xf7, 0x0f, 0xa0, 0xfb, 0x89, 0x54, 0x3c, 0x9f, 0x28, 0xfe, 0x42, 0x80, 0x2c, 0x2b, 0x65, 0x94, + 0x03, 0xe8, 0x65, 0x48, 0x98, 0xc6, 0x3e, 0x1b, 0x40, 0x99, 0xdb, 0xcf, 0x84, 0x88, 0x58, 0xc5, + 0x87, 0xfe, 0x99, 0x8b, 0x66, 0x47, 0xcb, 0xc0, 0x3d, 0x3c, 0x89, 0x72, 0xc7, 0x47, 0xe5, 0x06, + 0xc6, 0x25, 0x12, 0x19, 0xd7, 0x60, 0x6a, 0x5b, 0xb6, 0x95, 0x5d, 0xd2, 0x3e, 0xb4, 0x90, 0x64, + 0x96, 0x8b, 0x5f, 0xcf, 0x8a, 0x39, 0x4a, 0x76, 0x8a, 0x6e, 0x15, 0xff, 0xc0, 0x19, 0x0d, 0x16, + 0xfe, 0xe4, 0x37, 0xd3, 0xbf, 0x09, 0x7c, 0x50, 0x38, 0x85, 0xfd, 0x9f, 0xd6, 0x5a, 0xdf, 0x8e, + 0xc1, 0xf9, 0xd2, 0x2e, 0x56, 0x1e, 0x97, 0x0c, 0xdd, 0xd2, 0x2c, 0x1b, 0xeb, 0xca, 0x61, 0x94, + 0x4d, 0xf6, 0x0c, 0xa4, 0xf7, 0x35, 0x7b, 0x57, 0x52, 0xb5, 0x9d, 0x1d, 0x3a, 0xa4, 0x53, 0x62, + 0x8a, 0x10, 0x56, 0xb4, 0x9d, 0x1d, 0x74, 0x07, 0x12, 0x2d, 0x43, 0x65, 0x0e, 0x6c, 0xee, 0xf6, + 0x7c, 0x88, 0x78, 0x5a, 0x34, 0xab, 0xd3, 0x5a, 0x33, 0x54, 0x2c, 0xd2, 0xcc, 0x68, 0x0e, 0x40, + 0x21, 0xd4, 0xb6, 0xa1, 0xe9, 0x36, 0x9f, 0xc8, 0x7c, 0x14, 0x54, 0x81, 0xb4, 0x8d, 0xcd, 0x96, + 0xa6, 0xcb, 0x36, 0x01, 0xf8, 0x44, 0x79, 0x97, 0x43, 0x0b, 0xde, 0x6e, 0x6a, 0x8a, 0xdc, 0xb3, + 0x52, 0xe1, 0x31, 0x73, 0x7b, 0xf3, 0xf5, 0x04, 0x14, 0x7a, 0x35, 0x14, 0x65, 0x3f, 0xd9, 0x84, + 0x24, 0x33, 0x7a, 0xbc, 0xa7, 0xdc, 0xee, 0xa7, 0x88, 0x90, 0x12, 0x2c, 0x32, 0xe3, 0xc8, 0x0b, + 0xcf, 0xe5, 0xcc, 0xfe, 0x85, 0x00, 0x49, 0x96, 0x80, 0x6e, 0x41, 0x8a, 0xa3, 0x7b, 0x95, 0x96, + 0x31, 0xbe, 0x7c, 0xee, 0xf8, 0x68, 0x7e, 0x82, 0x61, 0xf9, 0x95, 0x0f, 0xbd, 0xbf, 0xe2, 0x04, + 0x83, 0xf3, 0x2a, 0x69, 0x33, 0xcb, 0x96, 0x4d, 0x9b, 0xae, 0xa2, 0x90, 0x36, 0xcb, 0x8a, 0x29, + 0x4a, 0x58, 0xc5, 0x87, 0xe8, 0x3e, 0x24, 0x2d, 0x5b, 0xb6, 0x3b, 0x16, 0x6f, 0xb5, 0x13, 0x15, + 0xb6, 0x46, 0x39, 0x45, 0x2e, 0x81, 0xf8, 0x23, 0x2a, 0xb6, 0x65, 0xad, 0x49, 0x9b, 0x31, 0x2d, + 0xf2, 0xa7, 0xe2, 0x37, 0x05, 0x48, 0xb2, 0xac, 0xe8, 0x3c, 0xcc, 0x30, 0x04, 0x5f, 0x5d, 0x5f, + 0x29, 0xd7, 0xcb, 0xe2, 0x5a, 0x75, 0x7d, 0xa9, 0x5e, 0xce, 0x8f, 0xa1, 0x73, 0x80, 0x9c, 0x84, + 0xd2, 0xc6, 0x7a, 0xad, 0x5a, 0xab, 0x97, 0xd7, 0x09, 0xf2, 0x3f, 0x03, 0x79, 0x46, 0xf7, 0x51, + 0x63, 0xe8, 0x32, 0x2c, 0x74, 0x53, 0xa5, 0x5a, 0x7d, 0xa9, 0x5e, 0x93, 0xca, 0xb5, 0x7a, 0x75, + 0x6d, 0xa9, 0x5e, 0x5e, 0xc9, 0xc7, 0x07, 0xe4, 0x22, 0x2f, 0x11, 0xc5, 0x72, 0xa9, 0x9e, 0x4f, + 0x14, 0x9f, 0xc2, 0x59, 0x11, 0x2b, 0x46, 0xab, 0xdd, 0xb1, 0x31, 0x29, 0xa5, 0x15, 0xe5, 0x78, + 0x39, 0x0f, 0x13, 0xaa, 0x79, 0x28, 0x99, 0x1d, 0x9d, 0x8f, 0x96, 0xa4, 0x6a, 0x1e, 0x8a, 0x1d, + 0x9d, 0x77, 0xc6, 0x3f, 0x15, 0xe0, 0x5c, 0xf7, 0xcb, 0xa3, 0xec, 0x8a, 0x5f, 0x80, 0x8c, 0xac, + 0xaa, 0x58, 0x95, 0x54, 0xdc, 0xb4, 0x65, 0xee, 0x6f, 0xdc, 0xf2, 0x49, 0xe2, 0x2b, 0x60, 0x8b, + 0x6c, 0xe9, 0x6b, 0xd1, 0x5d, 0x01, 0x5b, 0x7b, 0x58, 0x2a, 0xd1, 0xf2, 0xac, 0x10, 0x46, 0xc7, + 0x22, 0x51, 0x59, 0x94, 0x52, 0xfc, 0x93, 0x04, 0x4c, 0x96, 0x75, 0xb5, 0x7e, 0x10, 0xe9, 0x8c, + 0x70, 0x0e, 0x92, 0x8a, 0xd1, 0x6a, 0x69, 0xb6, 0xa3, 0x2d, 0xf6, 0x84, 0x3e, 0x03, 0x29, 0x15, + 0xcb, 0xaa, 0xbb, 0x7a, 0x30, 0xcc, 0x69, 0x12, 0xdd, 0xec, 0xe8, 0x4b, 0x70, 0x9e, 0x18, 0x52, + 0x53, 0x97, 0x9b, 0x12, 0x93, 0x26, 0xd9, 0xa6, 0xd6, 0x68, 0x60, 0x93, 0xaf, 0xb7, 0x5d, 0x0f, + 0x29, 0x67, 0x95, 0x73, 0x94, 0x28, 0x43, 0x9d, 0xe5, 0x17, 0xcf, 0x6a, 0x61, 0x64, 0xf4, 0x79, + 0x77, 0x79, 0xc6, 0x6a, 0xcb, 0xba, 0xc5, 0x8d, 0x54, 0xbf, 0x65, 0x3c, 0xae, 0x4b, 0x3e, 0x27, + 0x10, 0x8a, 0x85, 0x6e, 0x12, 0x4f, 0xff, 0x49, 0x47, 0x33, 0xb1, 0x74, 0xab, 0xad, 0x14, 0x92, + 0xa4, 0xee, 0xcb, 0xb9, 0xe3, 0xa3, 0x79, 0x10, 0x19, 0xf9, 0xd6, 0x66, 0x89, 0x78, 0xfe, 0xec, + 0x7f, 0x5b, 0x41, 0xcb, 0x30, 0x47, 0x26, 0x4e, 0x5e, 0x1f, 0xd9, 0x96, 0x76, 0xb5, 0xc6, 0x2e, + 0x36, 0x25, 0x77, 0x91, 0xb8, 0x90, 0xa2, 0xfa, 0x9b, 0x55, 0x64, 0x9d, 0x15, 0x76, 0xc9, 0xae, + 0xd0, 0x2c, 0xae, 0x8a, 0x88, 0xae, 0xdb, 0x86, 0x66, 0x19, 0x7a, 0x21, 0xcd, 0x74, 0xcd, 0x9e, + 0xd0, 0x5b, 0x90, 0xd7, 0x74, 0x69, 0xa7, 0xa9, 0x35, 0x76, 0x6d, 0x69, 0xdf, 0xd4, 0x6c, 0x6c, + 0x15, 0xa6, 0x69, 0x95, 0xc2, 0xba, 0x60, 0x8d, 0x2f, 0x91, 0xaa, 0x6f, 0x93, 0x9c, 0xbc, 0x72, + 0x39, 0x4d, 0xbf, 0x4b, 0xf9, 0x29, 0xd1, 0x72, 0x27, 0xea, 0x89, 0x7c, 0xaa, 0xf8, 0x4f, 0x02, + 0xe4, 0x9c, 0x8e, 0x13, 0x65, 0x57, 0xbf, 0x0e, 0x79, 0x43, 0xc7, 0x52, 0x7b, 0x57, 0xb6, 0x30, + 0x57, 0x0c, 0x9f, 0x4d, 0x72, 0x86, 0x8e, 0x37, 0x09, 0x99, 0x69, 0x02, 0x6d, 0xc2, 0xb4, 0x65, + 0xcb, 0x0d, 0x4d, 0x6f, 0xf8, 0xf4, 0x35, 0x3e, 0xba, 0x2b, 0x9e, 0xe7, 0xdc, 0x2e, 0x3d, 0xe0, + 0x82, 0xfc, 0x48, 0x80, 0xe9, 0x25, 0xb5, 0xa5, 0xe9, 0xb5, 0x76, 0x53, 0x8b, 0x14, 0xb7, 0x5f, + 0x86, 0xb4, 0x45, 0x64, 0x7a, 0x76, 0xdc, 0xc3, 0x5c, 0x29, 0x9a, 0x42, 0x0c, 0xfa, 0x03, 0x98, + 0xc2, 0x07, 0x6d, 0xcd, 0x94, 0x89, 0xeb, 0xce, 0x60, 0x46, 0x62, 0xf4, 0xba, 0xe5, 0x3c, 0x5e, + 0x0f, 0x6a, 0xf0, 0x9a, 0x3d, 0x02, 0xe4, 0xaf, 0x58, 0x94, 0x78, 0x43, 0x82, 0x19, 0x2a, 0x7a, + 0x4b, 0xb7, 0x22, 0xd6, 0x1a, 0x37, 0xb4, 0x5f, 0x84, 0x33, 0xc1, 0x17, 0x44, 0x59, 0xfa, 0x77, + 0x79, 0x8b, 0xaf, 0x61, 0xf3, 0x63, 0x82, 0xba, 0x7e, 0xf1, 0x51, 0x96, 0xfc, 0xab, 0x02, 0x5c, + 0xa0, 0xb2, 0xe9, 0xd6, 0xc4, 0x0e, 0x36, 0xe9, 0x7e, 0x4d, 0x94, 0x9d, 0xf6, 0x12, 0x24, 0x19, + 0x72, 0xa5, 0x3d, 0x76, 0x7c, 0x39, 0x43, 0x5c, 0x94, 0x9a, 0x6d, 0x98, 0xc4, 0x45, 0xe1, 0x49, + 0xbc, 0x9e, 0x32, 0xcc, 0x86, 0x95, 0x25, 0x62, 0x68, 0x3f, 0xcd, 0x3d, 0x45, 0xd2, 0xc5, 0x4b, + 0xbb, 0xc4, 0x45, 0x42, 0x65, 0xc8, 0x28, 0xf4, 0x9f, 0x64, 0x1f, 0xb6, 0x31, 0x95, 0x9f, 0x1b, + 0xe4, 0x64, 0x32, 0xb6, 0xfa, 0x61, 0x1b, 0x13, 0x4f, 0xd5, 0xf9, 0x4f, 0xd4, 0xe5, 0xab, 0xea, + 0x40, 0x37, 0x95, 0x8e, 0x2f, 0x9a, 0xd7, 0xf1, 0xf4, 0x02, 0x9a, 0xf8, 0xb3, 0x38, 0x57, 0x05, + 0x7b, 0x13, 0x67, 0x8a, 0xd4, 0x31, 0x79, 0x07, 0xce, 0xa9, 0xb8, 0x6d, 0x62, 0x45, 0xb6, 0xb1, + 0x2a, 0xf9, 0xab, 0x1f, 0x3b, 0x41, 0xf5, 0xcf, 0x78, 0x32, 0x3c, 0x2a, 0x7a, 0x04, 0xc8, 0x27, + 0x9b, 0xd5, 0xcc, 0x01, 0x3e, 0x27, 0x51, 0xca, 0xb4, 0x27, 0x85, 0xd1, 0x2d, 0x54, 0x82, 0x14, + 0x3e, 0x68, 0x4b, 0x74, 0xd3, 0x32, 0x71, 0xc2, 0x4d, 0xcb, 0x09, 0x7c, 0xd0, 0x26, 0x44, 0xb4, + 0x45, 0x66, 0x38, 0xc7, 0x25, 0xa0, 0xc5, 0xb6, 0x86, 0x23, 0x0b, 0xaf, 0xbf, 0x70, 0x71, 0x53, + 0xae, 0x37, 0xc0, 0x44, 0xf0, 0xb6, 0x7b, 0x4f, 0x80, 0x67, 0x42, 0xdb, 0x2e, 0xca, 0xc9, 0xce, + 0xd9, 0xb7, 0x8d, 0x9d, 0x66, 0xdf, 0xb6, 0xf8, 0x87, 0xce, 0xa8, 0x17, 0x71, 0xd3, 0x20, 0xea, + 0xfd, 0x18, 0xd6, 0xb9, 0x26, 0x9c, 0x66, 0x8f, 0x9d, 0xb8, 0xd9, 0x1d, 0xd6, 0x2e, 0xb3, 0xd0, + 0x55, 0xd8, 0x28, 0xcd, 0xc2, 0x6f, 0x0a, 0x30, 0x53, 0xc1, 0xb2, 0x69, 0x6f, 0x63, 0xd9, 0x8e, + 0xd8, 0xa5, 0x7d, 0x19, 0xe2, 0xba, 0xb1, 0x7f, 0x92, 0xa5, 0x3e, 0x92, 0xdf, 0x9b, 0xb6, 0x82, + 0xe5, 0x8a, 0xb2, 0xd6, 0x7f, 0x1d, 0x83, 0xf4, 0xbd, 0x52, 0x94, 0x75, 0x7d, 0x83, 0x2f, 0x08, + 0xb3, 0xa1, 0x1e, 0xd6, 0x2d, 0xdd, 0xf7, 0x2d, 0xde, 0x2b, 0xad, 0xe2, 0x43, 0xa7, 0x5b, 0x12, + 0x2e, 0xb4, 0x04, 0x69, 0x7b, 0xd7, 0xc4, 0xd6, 0xae, 0xd1, 0x54, 0x4f, 0xe2, 0xb3, 0x78, 0x5c, + 0xb3, 0x8f, 0x61, 0x9c, 0xca, 0x75, 0x42, 0x0a, 0x84, 0x90, 0x90, 0x02, 0xf2, 0x1a, 0xd7, 0xed, + 0x8b, 0x9d, 0xe4, 0x35, 0x0e, 0x81, 0x35, 0x8e, 0xeb, 0x1b, 0x8d, 0xe7, 0x93, 0xc5, 0xb7, 0x00, + 0x48, 0xd5, 0xa2, 0x6c, 0x9e, 0x5f, 0x8f, 0x43, 0x6e, 0xb3, 0x63, 0xed, 0x46, 0xdc, 0x1f, 0x4b, + 0x00, 0xed, 0x8e, 0x45, 0xc1, 0xc2, 0x81, 0xce, 0xeb, 0x3f, 0x24, 0x58, 0xc1, 0x51, 0x00, 0xe3, + 0xab, 0x1f, 0xe8, 0x68, 0x83, 0x0b, 0xc1, 0x92, 0x17, 0xf1, 0x70, 0x63, 0x04, 0x58, 0x59, 0x3f, + 0xd0, 0xd7, 0xb0, 0x8b, 0x27, 0x99, 0x40, 0x4c, 0x04, 0xbe, 0x01, 0x13, 0xe4, 0x41, 0xb2, 0x8d, + 0x93, 0xb4, 0x7c, 0x92, 0xf0, 0xd4, 0x0d, 0xf4, 0x3a, 0xa4, 0x19, 0x37, 0x99, 0xbf, 0x92, 0x74, + 0xfe, 0x0a, 0xab, 0x12, 0xd7, 0x26, 0x9d, 0xb9, 0x52, 0x94, 0x95, 0xcc, 0x56, 0x67, 0x60, 0x7c, + 0xc7, 0x30, 0x15, 0x4c, 0x43, 0x1c, 0x52, 0x22, 0x7b, 0xf0, 0x37, 0xee, 0xfd, 0x44, 0x2a, 0x95, + 0x4f, 0xdf, 0x4f, 0xa4, 0xd2, 0x79, 0x28, 0x7e, 0x53, 0x80, 0x29, 0xb7, 0x55, 0xa2, 0x34, 0xe9, + 0xa5, 0x80, 0x4a, 0x4f, 0xde, 0x2e, 0x44, 0x8d, 0xc5, 0xbf, 0xa7, 0xfe, 0x8d, 0x62, 0xec, 0xd1, + 0x66, 0x8a, 0xb2, 0xdb, 0x2c, 0xb3, 0xe0, 0x96, 0xd8, 0x29, 0x9b, 0x9a, 0x86, 0xbb, 0xdc, 0x82, + 0x33, 0x5a, 0x8b, 0xd8, 0x7c, 0xcd, 0x6e, 0x1e, 0x72, 0x8c, 0x66, 0x63, 0x67, 0xff, 0x75, 0xc6, + 0x4b, 0x2b, 0x39, 0x49, 0xdc, 0x0c, 0xb2, 0x1d, 0x19, 0xaf, 0x5a, 0x51, 0xea, 0xbd, 0x0a, 0x93, + 0x26, 0x13, 0x4d, 0x7c, 0x95, 0x13, 0xaa, 0x3e, 0xeb, 0xb2, 0x12, 0xed, 0x7f, 0x2f, 0x06, 0x53, + 0x6f, 0x75, 0xb0, 0x79, 0xf8, 0x09, 0xd4, 0xfd, 0x55, 0x98, 0xda, 0x97, 0x35, 0x5b, 0xda, 0x31, + 0x4c, 0xa9, 0xd3, 0x56, 0x65, 0xdb, 0x09, 0xc3, 0x98, 0x24, 0xe4, 0xbb, 0x86, 0xb9, 0x45, 0x89, + 0x08, 0x03, 0x7a, 0xac, 0x1b, 0xfb, 0xba, 0x44, 0xc8, 0x14, 0x22, 0x1f, 0xe8, 0x7c, 0xb1, 0x79, + 0xf9, 0x95, 0x7f, 0x3c, 0x9a, 0xbf, 0x33, 0x52, 0x60, 0x15, 0x8d, 0x4d, 0xeb, 0x74, 0x34, 0x75, + 0x71, 0x6b, 0xab, 0xba, 0x22, 0xe6, 0xa9, 0xc8, 0xb7, 0x99, 0xc4, 0xfa, 0x81, 0xee, 0x4c, 0xed, + 0x1f, 0x0a, 0x90, 0xf7, 0x14, 0x16, 0x65, 0xab, 0x96, 0x21, 0xf3, 0xa4, 0x83, 0x4d, 0xed, 0x14, + 0x6d, 0x0a, 0x9c, 0x91, 0x98, 0xa5, 0x77, 0x20, 0x1b, 0xd0, 0x43, 0xfc, 0xa3, 0xe9, 0x21, 0xb3, + 0xef, 0xa9, 0xa0, 0xf8, 0x43, 0x01, 0x10, 0xad, 0x7c, 0x95, 0xad, 0xf3, 0x7f, 0xc2, 0x3a, 0xcc, + 0x75, 0xc8, 0xd3, 0x50, 0x47, 0x49, 0xdb, 0x91, 0x5a, 0x9a, 0x65, 0x69, 0x7a, 0x83, 0xf7, 0x98, + 0x1c, 0xa5, 0x57, 0x77, 0xd6, 0x18, 0x95, 0xb7, 0xe5, 0xff, 0x85, 0x99, 0x40, 0x6d, 0xa2, 0x6c, + 0xcd, 0x8b, 0x90, 0xdd, 0x31, 0x3a, 0xba, 0x2a, 0xb1, 0x45, 0x33, 0xbe, 0x38, 0x98, 0xa1, 0x34, + 0xf6, 0xbe, 0xe2, 0xbf, 0xc7, 0xe0, 0x8c, 0x88, 0x2d, 0xa3, 0xb9, 0x87, 0xa3, 0xd7, 0xe7, 0x06, + 0xf0, 0xcd, 0x18, 0xe9, 0xa3, 0xa8, 0x35, 0xcd, 0x64, 0xb0, 0xe9, 0x2e, 0xb8, 0xea, 0x7e, 0x79, + 0x70, 0xcf, 0xec, 0x5d, 0x67, 0xe7, 0x2b, 0x77, 0x89, 0xc0, 0xca, 0xdd, 0x1e, 0x4c, 0x69, 0x0d, + 0xdd, 0x20, 0x86, 0xcc, 0xc2, 0x4f, 0xf4, 0x4e, 0xcb, 0x81, 0x35, 0x2f, 0x8f, 0x50, 0xd6, 0x2a, + 0xe3, 0xac, 0xe1, 0x27, 0xeb, 0x9d, 0x16, 0xdb, 0xc9, 0x3d, 0x47, 0x8a, 0x7d, 0x7c, 0x34, 0x9f, + 0x0b, 0xa4, 0x59, 0x62, 0x4e, 0x73, 0x9f, 0xc9, 0x4b, 0x78, 0x07, 0xf8, 0xdf, 0x70, 0xb6, 0xab, + 0x01, 0xa2, 0xf4, 0x86, 0xfe, 0x36, 0x0e, 0x17, 0x82, 0xe2, 0xa3, 0xc6, 0x2c, 0xff, 0x4d, 0x1a, + 0xb9, 0x02, 0x93, 0x2d, 0x4d, 0x3f, 0xdd, 0xca, 0x65, 0xb6, 0xa5, 0xe9, 0xde, 0x02, 0x70, 0x48, + 0x77, 0x49, 0xfe, 0xe7, 0x75, 0x17, 0x19, 0x66, 0xc3, 0xda, 0x33, 0xca, 0x3e, 0xf3, 0x75, 0x01, + 0xb2, 0x51, 0xaf, 0xc9, 0x9d, 0x2e, 0xd6, 0x8c, 0xd7, 0xb9, 0x0e, 0x93, 0x1f, 0xc3, 0x22, 0xde, + 0xef, 0x09, 0x80, 0xea, 0x66, 0x47, 0x27, 0xe0, 0xf8, 0x81, 0xd1, 0x88, 0xb2, 0xb2, 0x67, 0x60, + 0x5c, 0xd3, 0x55, 0x7c, 0x40, 0x2b, 0x9b, 0x10, 0xd9, 0x43, 0x60, 0x0f, 0x32, 0x3e, 0xd2, 0x1e, + 0xa4, 0x17, 0xb2, 0x12, 0x28, 0x68, 0x94, 0x5a, 0xf8, 0x5e, 0x0c, 0x66, 0x78, 0x75, 0x22, 0x5f, + 0xc4, 0x3c, 0x55, 0xa0, 0x3b, 0xfa, 0x2c, 0x40, 0xdb, 0xc4, 0x7b, 0x12, 0x63, 0x8d, 0x8f, 0xc4, + 0x9a, 0x26, 0x1c, 0x94, 0x80, 0xbe, 0x00, 0x53, 0x64, 0xa0, 0xb7, 0x4d, 0xa3, 0x6d, 0x58, 0xc4, + 0x8f, 0xb1, 0x46, 0x83, 0x46, 0xd3, 0xc7, 0x47, 0xf3, 0x93, 0x6b, 0x9a, 0xbe, 0xc9, 0x19, 0xeb, + 0x35, 0x91, 0x58, 0x0c, 0xf7, 0xd1, 0x19, 0x80, 0xff, 0x20, 0xc0, 0x99, 0x8f, 0x6d, 0xd9, 0xf7, + 0xbf, 0x42, 0x63, 0xee, 0x3c, 0x94, 0xa7, 0x8f, 0x55, 0x7d, 0xc7, 0x88, 0x7e, 0x31, 0xfe, 0xeb, + 0x02, 0x4c, 0xfb, 0xc4, 0x47, 0xe9, 0xe5, 0x9c, 0xee, 0x38, 0xc5, 0x17, 0x89, 0xdf, 0xe3, 0xef, + 0xf6, 0x51, 0x0e, 0xaa, 0xbf, 0x8c, 0xc1, 0xb9, 0x12, 0xdb, 0x9d, 0x76, 0x42, 0x37, 0xa2, 0xec, + 0x25, 0x05, 0x98, 0xd8, 0xc3, 0xa6, 0xa5, 0x19, 0x6c, 0xbe, 0x9d, 0x14, 0x9d, 0x47, 0x34, 0x0b, + 0x29, 0x4b, 0x97, 0xdb, 0xd6, 0xae, 0xe1, 0xec, 0xe2, 0xb9, 0xcf, 0x6e, 0x98, 0xc9, 0xf8, 0xe9, + 0xc3, 0x4c, 0x92, 0x83, 0xc3, 0x4c, 0x26, 0x3e, 0x72, 0x98, 0x09, 0xdf, 0x32, 0xfb, 0x81, 0x00, + 0xe7, 0x7b, 0xf4, 0x17, 0x65, 0x9f, 0xf9, 0x32, 0x64, 0x14, 0x2e, 0x98, 0x58, 0x63, 0xb6, 0x2b, + 0x58, 0x25, 0xd9, 0x4e, 0x89, 0x51, 0x8e, 0x8f, 0xe6, 0xc1, 0x29, 0x6a, 0x75, 0x85, 0xab, 0x88, + 0xfc, 0x57, 0x8b, 0xbf, 0x9a, 0x81, 0xa9, 0xf2, 0x01, 0x5b, 0xf3, 0xae, 0x31, 0xb7, 0x00, 0xdd, + 0x85, 0x54, 0xdb, 0x34, 0xf6, 0x34, 0xa7, 0x1a, 0xb9, 0x80, 0xcb, 0xe4, 0x54, 0xa3, 0x8b, 0x6b, + 0x93, 0x73, 0x88, 0x2e, 0x2f, 0xaa, 0x43, 0xfa, 0x81, 0xa1, 0xc8, 0xcd, 0xbb, 0x5a, 0xd3, 0xe9, + 0xff, 0x2f, 0x0d, 0x17, 0xb4, 0xe8, 0xf2, 0x6c, 0xca, 0xf6, 0xae, 0xd3, 0x14, 0x2e, 0x11, 0x55, + 0x21, 0x55, 0xb1, 0xed, 0x36, 0x49, 0xe4, 0xd6, 0xe4, 0xda, 0x08, 0x42, 0x09, 0x0b, 0x97, 0xe5, + 0xb2, 0xa3, 0x3a, 0x4c, 0xdf, 0x33, 0x8c, 0x46, 0x13, 0x97, 0x9a, 0x46, 0x47, 0x2d, 0x19, 0xfa, + 0x8e, 0xd6, 0xe0, 0xf6, 0xf8, 0xea, 0x08, 0x32, 0xef, 0x95, 0x6a, 0x62, 0xaf, 0x00, 0xb4, 0x04, + 0xa9, 0xda, 0x1d, 0x2e, 0x8c, 0xf9, 0x71, 0x57, 0x46, 0x10, 0x56, 0xbb, 0x23, 0xba, 0x6c, 0xe8, + 0x3e, 0x64, 0x96, 0x9e, 0x76, 0x4c, 0xcc, 0xa5, 0x24, 0xfb, 0xc6, 0x34, 0x74, 0x4b, 0xa1, 0x5c, + 0xa2, 0x9f, 0x19, 0xd5, 0x20, 0xf7, 0xb6, 0x61, 0x3e, 0x6e, 0x1a, 0xb2, 0x53, 0xc3, 0x09, 0x2a, + 0xee, 0x53, 0x23, 0x88, 0x73, 0x18, 0xc5, 0x2e, 0x11, 0xb3, 0x5f, 0x80, 0xc9, 0x40, 0x33, 0x21, + 0x04, 0x89, 0x36, 0x69, 0x11, 0x81, 0x06, 0x09, 0xd1, 0xff, 0xe8, 0x45, 0x98, 0xd0, 0x0d, 0x15, + 0x3b, 0x7d, 0x78, 0x72, 0xf9, 0xcc, 0xf1, 0xd1, 0x7c, 0x72, 0xdd, 0x50, 0x99, 0x43, 0xc1, 0xff, + 0x89, 0x49, 0x92, 0xc9, 0x71, 0x27, 0x66, 0xaf, 0x42, 0x82, 0xb4, 0x0f, 0x31, 0x23, 0xdb, 0xb2, + 0x85, 0xb7, 0x4c, 0x8d, 0xcb, 0x74, 0x1e, 0x79, 0xbe, 0x1f, 0x0b, 0x10, 0xab, 0xdd, 0x21, 0x1e, + 0xf5, 0x76, 0x47, 0x79, 0x8c, 0x6d, 0x9e, 0x8b, 0x3f, 0x51, 0x4f, 0xdb, 0xc4, 0x3b, 0x1a, 0xf3, + 0x72, 0xd2, 0x22, 0x7f, 0x42, 0xcf, 0x01, 0xc8, 0x8a, 0x82, 0x2d, 0x4b, 0x72, 0x4e, 0xa7, 0xa5, + 0xc5, 0x34, 0xa3, 0xac, 0xe2, 0x43, 0xc2, 0x66, 0x61, 0xc5, 0xc4, 0xb6, 0x13, 0xed, 0xc4, 0x9e, + 0x08, 0x9b, 0x8d, 0x5b, 0x6d, 0xc9, 0x36, 0x1e, 0x63, 0x9d, 0xb6, 0x6a, 0x9a, 0x98, 0x87, 0x56, + 0xbb, 0x4e, 0x08, 0xc4, 0xb2, 0x61, 0x5d, 0xf5, 0xcc, 0x50, 0x5a, 0x74, 0x9f, 0x89, 0x48, 0x13, + 0x37, 0x34, 0x7e, 0xdc, 0x2a, 0x2d, 0xf2, 0x27, 0xa2, 0x31, 0xb9, 0x63, 0xef, 0xd2, 0xa0, 0x8e, + 0xb4, 0x48, 0xff, 0xf3, 0xaa, 0x7d, 0x43, 0x80, 0xf8, 0xbd, 0x52, 0xed, 0xc4, 0x75, 0x73, 0x24, + 0xc6, 0x3d, 0x89, 0x34, 0xc8, 0x50, 0x6b, 0x36, 0x35, 0xbd, 0x41, 0x9c, 0x8e, 0x2f, 0x63, 0xc5, + 0xa9, 0x59, 0x8e, 0x93, 0x37, 0x19, 0x15, 0x2d, 0x40, 0x46, 0x31, 0xb1, 0x8a, 0x75, 0x5b, 0x93, + 0x9b, 0x16, 0xaf, 0xa2, 0x9f, 0xc4, 0x0b, 0xf7, 0x15, 0x01, 0xc6, 0x69, 0xf7, 0x42, 0xcf, 0x42, + 0x5a, 0x31, 0x74, 0x5b, 0xd6, 0x74, 0x6e, 0x27, 0xd2, 0xa2, 0x47, 0xe8, 0x5b, 0xc8, 0x8b, 0x90, + 0x95, 0x15, 0xc5, 0xe8, 0xe8, 0xb6, 0xa4, 0xcb, 0x2d, 0xcc, 0x0b, 0x9b, 0xe1, 0xb4, 0x75, 0xb9, + 0x85, 0xd1, 0x3c, 0x38, 0x8f, 0xee, 0x19, 0xc1, 0xb4, 0x08, 0x9c, 0xb4, 0x8a, 0x0f, 0x79, 0x49, + 0x7e, 0x20, 0x40, 0xca, 0xe9, 0x96, 0xa4, 0x30, 0x0d, 0xac, 0x63, 0x53, 0xb6, 0x0d, 0xb7, 0x30, + 0x2e, 0xa1, 0x7b, 0x4e, 0x4a, 0x7b, 0x73, 0xd2, 0x19, 0x18, 0xb7, 0xe5, 0xed, 0xa6, 0x53, 0x0e, + 0xf6, 0x40, 0x97, 0x8f, 0x9b, 0x72, 0x83, 0xad, 0x91, 0xa5, 0x45, 0xf6, 0x40, 0xaa, 0xc4, 0xa3, + 0x5a, 0x99, 0x76, 0xf8, 0x13, 0x29, 0x2f, 0x0b, 0xe4, 0xdc, 0xc6, 0x0d, 0x4d, 0xa7, 0x1d, 0x20, + 0x2e, 0x02, 0x25, 0x2d, 0x13, 0x0a, 0x7a, 0x06, 0xd2, 0x2c, 0x03, 0xd6, 0x55, 0xda, 0x0b, 0xe2, + 0x62, 0x8a, 0x12, 0xca, 0xce, 0xa1, 0x28, 0xee, 0x88, 0x7c, 0x57, 0x80, 0x69, 0x16, 0x73, 0xc3, + 0x22, 0x40, 0xa3, 0x9b, 0x95, 0x5f, 0x83, 0xb4, 0x2a, 0xdb, 0x32, 0x3b, 0x93, 0x18, 0x1b, 0x78, + 0x26, 0xd1, 0x31, 0x93, 0x24, 0x3f, 0x3d, 0x97, 0x88, 0x20, 0x41, 0xfe, 0xb3, 0xb3, 0x9c, 0x22, + 0xfd, 0xef, 0x45, 0x31, 0xf8, 0x8b, 0x1b, 0xa5, 0x97, 0xf2, 0xc1, 0x38, 0x4c, 0x96, 0x0f, 0xda, + 0x86, 0x19, 0xf1, 0x22, 0xda, 0x04, 0x07, 0xbf, 0x03, 0xb6, 0x59, 0xbb, 0xac, 0xa0, 0xb3, 0x83, + 0xc9, 0x19, 0xd1, 0x32, 0x00, 0x0b, 0xbd, 0xa4, 0x71, 0x38, 0xf1, 0x13, 0x6c, 0x36, 0x51, 0x36, + 0x42, 0x45, 0xeb, 0x90, 0x69, 0xed, 0x29, 0x8a, 0xb4, 0xa3, 0x35, 0x6d, 0x1e, 0xb4, 0x16, 0x1e, + 0x25, 0xbd, 0xf6, 0xb0, 0x54, 0xba, 0x4b, 0x33, 0xb1, 0xd8, 0x31, 0xef, 0x59, 0x04, 0x22, 0x81, + 0xfd, 0x47, 0x2f, 0x00, 0x3f, 0x43, 0x22, 0x59, 0xce, 0x89, 0xb0, 0xe5, 0xc9, 0xe3, 0xa3, 0xf9, + 0xb4, 0x48, 0xa9, 0xb5, 0x5a, 0x5d, 0x4c, 0xb3, 0x0c, 0x35, 0xcb, 0x46, 0x97, 0x60, 0xd2, 0x68, + 0x69, 0xb6, 0xe4, 0xf8, 0x01, 0xdc, 0x75, 0xca, 0x12, 0xa2, 0xe3, 0x27, 0xa0, 0x3a, 0x5c, 0xc3, + 0x3a, 0x19, 0x0d, 0xb4, 0x9e, 0xec, 0x74, 0x80, 0xa4, 0xd9, 0x6c, 0x44, 0x49, 0x46, 0xdb, 0xd6, + 0x5a, 0xda, 0x53, 0xba, 0xd1, 0xcb, 0x37, 0x59, 0x2e, 0xb1, 0xec, 0xa4, 0x7e, 0xf4, 0xbc, 0x40, + 0x95, 0xe7, 0xdd, 0xf0, 0x65, 0x45, 0x5f, 0x11, 0xe8, 0xb1, 0x03, 0xa2, 0x48, 0x69, 0xfb, 0x50, + 0x6a, 0x92, 0x49, 0x44, 0xb3, 0x0f, 0xa5, 0xc7, 0x7b, 0x85, 0x14, 0x75, 0xd0, 0x3e, 0x13, 0xda, + 0x20, 0xbe, 0x7e, 0xb0, 0xe8, 0x34, 0xcb, 0xe1, 0x03, 0xce, 0xbc, 0xba, 0x57, 0xd6, 0x6d, 0xf3, + 0x70, 0xf9, 0xfc, 0xf1, 0xd1, 0xfc, 0x4c, 0x6f, 0xea, 0x43, 0x7a, 0x94, 0xa1, 0x9b, 0x65, 0xf6, + 0xcb, 0x50, 0xe8, 0x27, 0x09, 0xe5, 0xbd, 0x9d, 0xc6, 0x34, 0xdb, 0x60, 0x7c, 0x35, 0xb8, 0x42, + 0x30, 0x42, 0xb7, 0x71, 0x56, 0x09, 0x62, 0xaf, 0x3a, 0xa3, 0xfb, 0x6b, 0x02, 0x4c, 0x2e, 0x77, + 0x9a, 0x8f, 0x37, 0xda, 0xb5, 0x4e, 0xab, 0x25, 0x9b, 0x87, 0xc4, 0x30, 0xb0, 0x51, 0xa9, 0x3d, + 0x65, 0x21, 0x2a, 0x71, 0x3e, 0xec, 0xb4, 0xa7, 0x98, 0x0c, 0x3b, 0x1e, 0x9a, 0x4e, 0xe8, 0x2c, + 0xee, 0xfc, 0x12, 0x4c, 0x52, 0xb8, 0x2e, 0x61, 0xdd, 0x36, 0x35, 0xcc, 0x56, 0xa1, 0xe2, 0x62, + 0x96, 0x12, 0xcb, 0x8c, 0x86, 0xae, 0x40, 0xce, 0x3a, 0xb4, 0x6c, 0xdc, 0x92, 0xd8, 0x09, 0x72, + 0x86, 0x31, 0xe3, 0xe2, 0x24, 0xa3, 0x8a, 0x8c, 0x58, 0xfc, 0x49, 0x1c, 0x72, 0x8e, 0x66, 0xa3, + 0x74, 0x5f, 0x97, 0x61, 0x7c, 0x47, 0x6b, 0x62, 0x27, 0x4a, 0xe0, 0xea, 0x80, 0x06, 0xe5, 0x21, + 0xc7, 0xc4, 0x8b, 0x70, 0x00, 0x10, 0x65, 0x8d, 0x62, 0x8c, 0xcd, 0xfe, 0xff, 0x18, 0x24, 0xa8, + 0xc7, 0x78, 0x0b, 0x12, 0xd4, 0xec, 0x09, 0xa3, 0x98, 0x3d, 0x9a, 0xd5, 0x75, 0x67, 0x62, 0x3e, + 0x77, 0x86, 0xf8, 0x06, 0xbb, 0xf2, 0xcb, 0xb7, 0x6e, 0xd3, 0xf1, 0x95, 0x15, 0xf9, 0x13, 0x5a, + 0xa6, 0xe1, 0x2b, 0x86, 0x69, 0x63, 0x95, 0x7b, 0x6a, 0x61, 0x96, 0x29, 0xd0, 0xf0, 0x8e, 0x89, + 0x75, 0xf8, 0xd0, 0x05, 0x88, 0x93, 0x81, 0x3b, 0xc1, 0xb6, 0xb6, 0x8f, 0x8f, 0xe6, 0xe3, 0x64, + 0xc8, 0x12, 0x1a, 0xba, 0x09, 0x99, 0xe0, 0x28, 0x11, 0xae, 0xa7, 0x99, 0x2d, 0xf0, 0xf5, 0x70, + 0x68, 0xba, 0x3d, 0x98, 0xa1, 0x94, 0xfb, 0x89, 0x54, 0x22, 0x3f, 0x4e, 0x23, 0x7a, 0xab, 0xad, + 0xa8, 0xad, 0xe8, 0x52, 0xb0, 0x85, 0xc3, 0xdc, 0xdb, 0xc0, 0x4b, 0x43, 0x1a, 0x38, 0x30, 0x1f, + 0xc5, 0x4f, 0x36, 0x1f, 0x55, 0x89, 0x47, 0xc5, 0x4f, 0xc9, 0xc7, 0xfb, 0x78, 0xb2, 0xc1, 0xf7, + 0xd7, 0x89, 0x61, 0x12, 0x09, 0x8f, 0x17, 0x84, 0x4f, 0xc3, 0x13, 0xde, 0xa4, 0x8e, 0x1b, 0xeb, + 0x65, 0xc9, 0xd1, 0x7b, 0xd9, 0x04, 0xd6, 0x55, 0xda, 0xc7, 0x9e, 0xf2, 0x2e, 0xf6, 0x1a, 0xc4, + 0x55, 0xcd, 0x1c, 0x70, 0xe5, 0x42, 0xf8, 0x9c, 0x42, 0x98, 0x86, 0xf4, 0xb5, 0x84, 0xbf, 0xaf, + 0xf9, 0x71, 0xe8, 0xec, 0x06, 0x80, 0x57, 0x2f, 0xb4, 0x00, 0x49, 0xa3, 0xa9, 0x3a, 0x27, 0x08, + 0x26, 0x97, 0xd3, 0xc7, 0x47, 0xf3, 0xe3, 0x1b, 0x4d, 0xb5, 0xba, 0x22, 0x8e, 0x1b, 0x4d, 0xb5, + 0xaa, 0xd2, 0xeb, 0x05, 0xf0, 0xbe, 0xe4, 0xc6, 0x18, 0x65, 0xc5, 0x09, 0x1d, 0xef, 0x13, 0xd4, + 0xdb, 0x15, 0xfb, 0x40, 0x3a, 0xce, 0xb7, 0x05, 0xc8, 0x39, 0x3a, 0x8c, 0xd6, 0x38, 0xa4, 0xb4, + 0x16, 0x1f, 0x2c, 0xf1, 0x93, 0x0d, 0x16, 0x87, 0x8f, 0x1f, 0x82, 0xfc, 0xaa, 0xc0, 0xe3, 0x4b, + 0x6b, 0x8a, 0x6c, 0x93, 0xf9, 0x30, 0xc2, 0x0e, 0xfe, 0x3c, 0xe4, 0x4d, 0x59, 0x57, 0x8d, 0x96, + 0xf6, 0x14, 0xb3, 0x85, 0x2b, 0x8b, 0xef, 0x4f, 0x4d, 0xb9, 0x74, 0xba, 0x32, 0xe3, 0xac, 0xbb, + 0xfd, 0x5c, 0xe0, 0xb1, 0xa8, 0x6e, 0x61, 0xa2, 0x54, 0xda, 0x2a, 0x24, 0x4d, 0x16, 0xd1, 0xc6, + 0x06, 0xdc, 0x8b, 0x21, 0x42, 0xc2, 0xde, 0xce, 0x02, 0xc6, 0xdc, 0x2e, 0x4f, 0x45, 0xcc, 0x7e, + 0x1e, 0xc6, 0x29, 0xf9, 0x14, 0x66, 0x91, 0x6b, 0xfe, 0x5b, 0x02, 0xe4, 0xd6, 0xb4, 0x86, 0x29, + 0x47, 0x7a, 0xa4, 0x17, 0x7d, 0x1e, 0x60, 0x1d, 0xef, 0x3f, 0xf4, 0xf9, 0xe9, 0x99, 0xdb, 0xb3, + 0x61, 0x2b, 0xf1, 0x2c, 0x87, 0xb3, 0xb3, 0xeb, 0xf1, 0x78, 0x47, 0xb7, 0xdd, 0xd2, 0x45, 0xe9, + 0x91, 0xfe, 0x4b, 0x0c, 0x2e, 0x53, 0x2d, 0x3f, 0xc4, 0xa6, 0xb6, 0x73, 0xb8, 0x69, 0x1a, 0x36, + 0x56, 0x6c, 0xac, 0x7a, 0x07, 0x14, 0x22, 0x35, 0xb1, 0xe9, 0xb6, 0xf3, 0x82, 0x13, 0x05, 0x34, + 0xb9, 0x5c, 0x68, 0x15, 0xa6, 0xd8, 0xfc, 0x2f, 0xc9, 0x4d, 0x6d, 0x0f, 0x4b, 0xb2, 0x7d, 0x92, + 0x89, 0x74, 0x92, 0xf1, 0x2e, 0x11, 0xd6, 0x25, 0x1b, 0xa9, 0x90, 0xe6, 0xc2, 0x34, 0x95, 0xdf, + 0xda, 0x72, 0xef, 0xa3, 0xad, 0x48, 0xa5, 0x98, 0x1f, 0x52, 0x5d, 0x11, 0x53, 0x4c, 0xb2, 0xbb, + 0xa3, 0xf0, 0x23, 0x01, 0xae, 0x0c, 0x51, 0x74, 0x94, 0xa3, 0x6b, 0x16, 0x52, 0x7b, 0xe4, 0x45, + 0x1a, 0xd7, 0x74, 0x4a, 0x74, 0x9f, 0xd1, 0x1a, 0x4c, 0xee, 0xc8, 0x5a, 0x13, 0xab, 0x12, 0x1f, + 0x80, 0xfd, 0xa3, 0xe0, 0xc2, 0x83, 0x33, 0xb3, 0x8c, 0x9d, 0x26, 0x5a, 0xc5, 0xdf, 0x8d, 0xc1, + 0xf4, 0x92, 0xaa, 0xd6, 0x6a, 0xdc, 0x70, 0x47, 0xd7, 0x5f, 0x1c, 0x8c, 0x16, 0xf3, 0x30, 0x1a, + 0x7a, 0x11, 0x90, 0xaa, 0x59, 0xec, 0xda, 0x08, 0x6b, 0x57, 0x56, 0x8d, 0x7d, 0x6f, 0xbf, 0x7f, + 0xda, 0x49, 0xa9, 0x39, 0x09, 0xe8, 0x1d, 0xa0, 0x88, 0x42, 0xb2, 0x6c, 0xd9, 0xdd, 0x96, 0x78, + 0xe1, 0x24, 0xc7, 0x8a, 0x18, 0xe2, 0x70, 0x1f, 0xc5, 0x34, 0x11, 0x47, 0xff, 0xa2, 0xeb, 0x90, + 0xd7, 0x88, 0x06, 0x6c, 0x49, 0xb6, 0x9c, 0xf3, 0x27, 0xec, 0xde, 0x8a, 0x1c, 0xa3, 0x2f, 0x59, + 0xfe, 0x63, 0x25, 0x2c, 0x3c, 0xde, 0xd3, 0x53, 0x94, 0xc3, 0xf8, 0xf7, 0x05, 0xc8, 0x89, 0x78, + 0xc7, 0xc4, 0x56, 0xa4, 0x00, 0xfb, 0x2e, 0x64, 0x4d, 0x26, 0x55, 0xda, 0x31, 0x8d, 0xd6, 0x49, + 0x86, 0x5a, 0x86, 0x33, 0xde, 0x35, 0x8d, 0x56, 0xe0, 0x9c, 0xff, 0x43, 0x98, 0x72, 0x4b, 0x1a, + 0xa5, 0x0a, 0xbe, 0x4b, 0x4f, 0xd4, 0x32, 0xc1, 0x51, 0xef, 0xb8, 0x7f, 0x1c, 0x7a, 0xa0, 0xdb, + 0x21, 0xfe, 0xe2, 0x46, 0xa9, 0x8c, 0x9f, 0x0b, 0x90, 0xab, 0x75, 0xb6, 0xd9, 0x15, 0x46, 0xd1, + 0xe9, 0xa1, 0x0c, 0xe9, 0x26, 0xde, 0xb1, 0xa5, 0x53, 0x85, 0x74, 0xa7, 0x08, 0x2b, 0x0d, 0x6b, + 0xbf, 0x07, 0x60, 0xd2, 0x43, 0x5b, 0x54, 0x4e, 0xfc, 0x84, 0x72, 0xd2, 0x94, 0xd7, 0x73, 0xf1, + 0x8a, 0x7f, 0x1c, 0x83, 0x29, 0xb7, 0xb2, 0x51, 0x1a, 0xd1, 0xff, 0x13, 0x30, 0x1e, 0xf1, 0x53, + 0x18, 0x8f, 0x69, 0x1e, 0x69, 0x10, 0x6e, 0x40, 0x16, 0x61, 0x86, 0xfa, 0x61, 0x92, 0xdc, 0x6e, + 0x37, 0x35, 0xac, 0x4a, 0x6c, 0x0b, 0x3b, 0x41, 0xb7, 0xb0, 0xa7, 0x69, 0xd2, 0x12, 0x4b, 0xa9, + 0xd2, 0xed, 0xec, 0xbb, 0x90, 0xdd, 0x31, 0x31, 0x7e, 0x8a, 0x25, 0x0a, 0x08, 0x4f, 0x12, 0x50, + 0x91, 0x61, 0x8c, 0x35, 0xc2, 0xc7, 0x3b, 0xe0, 0xbb, 0x30, 0x4d, 0x15, 0x1c, 0xf5, 0x51, 0x52, + 0xde, 0x2a, 0xff, 0x2a, 0x00, 0xf2, 0xcb, 0xff, 0xf8, 0x1a, 0x26, 0x16, 0x79, 0xc3, 0xbc, 0x00, + 0x88, 0xc5, 0xd6, 0x59, 0x52, 0x1b, 0x9b, 0x92, 0x85, 0x15, 0x83, 0xdf, 0xbe, 0x23, 0x88, 0x79, + 0x9e, 0xb2, 0x89, 0xcd, 0x1a, 0xa5, 0x17, 0xff, 0x66, 0x16, 0xb2, 0x5c, 0x27, 0x5b, 0xba, 0x66, + 0xe8, 0xe8, 0x16, 0xc4, 0x1b, 0x7c, 0x81, 0x3b, 0x13, 0xba, 0x00, 0xe6, 0xdd, 0x00, 0x56, 0x19, + 0x13, 0x49, 0x5e, 0xc2, 0xd2, 0xee, 0xd8, 0x21, 0x4e, 0x91, 0x17, 0x12, 0xec, 0x67, 0x69, 0x77, + 0x6c, 0x54, 0x83, 0x29, 0xc5, 0xbb, 0x01, 0x49, 0x22, 0xec, 0xf1, 0xbe, 0x7b, 0x2a, 0xa1, 0xf7, + 0x48, 0x55, 0xc6, 0xc4, 0x9c, 0x12, 0x48, 0x40, 0x25, 0xff, 0x95, 0x3b, 0x6c, 0xba, 0xbc, 0x14, + 0x7a, 0xec, 0x34, 0x78, 0xdd, 0x4f, 0x65, 0xcc, 0x77, 0x33, 0x0f, 0x7a, 0x0d, 0x92, 0x2a, 0xbd, + 0xca, 0x85, 0xf7, 0xd0, 0xb0, 0x4e, 0x14, 0xb8, 0x3d, 0xa7, 0x32, 0x26, 0x72, 0x0e, 0x74, 0x1f, + 0xb2, 0xec, 0x1f, 0x73, 0x4e, 0x38, 0x80, 0xbd, 0xd2, 0x5f, 0x82, 0xcf, 0xd6, 0x57, 0xc6, 0xc4, + 0x8c, 0xea, 0x51, 0xd1, 0xa7, 0x21, 0x61, 0x29, 0xb2, 0xce, 0xf7, 0x86, 0xe6, 0xfa, 0xdc, 0xd7, + 0xe0, 0x31, 0xd3, 0xdc, 0xe8, 0x75, 0x76, 0x93, 0x9f, 0x7d, 0xc0, 0xce, 0x9b, 0x86, 0x17, 0x3f, + 0x70, 0xa2, 0x98, 0x14, 0x1f, 0x53, 0x02, 0xba, 0x07, 0x19, 0x99, 0x78, 0x79, 0x12, 0x3d, 0xbd, + 0x57, 0x80, 0xbe, 0xe7, 0xab, 0x7a, 0x4e, 0x5e, 0x56, 0xe8, 0xb1, 0x65, 0x87, 0xe8, 0x09, 0x6a, + 0x61, 0xb3, 0x81, 0x0b, 0x99, 0xc1, 0x82, 0xfc, 0xc1, 0x43, 0xae, 0x20, 0x4a, 0x24, 0xde, 0xde, + 0xae, 0x73, 0x32, 0x83, 0x56, 0x2a, 0xdb, 0x77, 0x2f, 0x30, 0xe4, 0x64, 0x49, 0x65, 0x4c, 0xcc, + 0xee, 0xfa, 0xc8, 0x68, 0x11, 0x62, 0x0d, 0xa5, 0x30, 0x49, 0x65, 0x3c, 0x3b, 0xe8, 0xdc, 0x44, + 0x65, 0x4c, 0x8c, 0x35, 0x14, 0xf4, 0x26, 0xa4, 0x58, 0xc4, 0xfb, 0x81, 0x5e, 0xc8, 0xf5, 0x1d, + 0xf1, 0xc1, 0xe3, 0x03, 0x95, 0x31, 0x91, 0x06, 0xd9, 0x93, 0xf7, 0x6d, 0x42, 0xce, 0x64, 0xd1, + 0x57, 0x4e, 0x4c, 0x65, 0xbe, 0xef, 0xfe, 0x68, 0x58, 0x58, 0x65, 0x85, 0x7a, 0xfd, 0x3e, 0x3a, + 0xfa, 0x12, 0x9c, 0x09, 0x4a, 0xe4, 0x3d, 0x6d, 0xba, 0xc7, 0x8c, 0x84, 0xcb, 0x0d, 0x76, 0x38, + 0x64, 0xf6, 0x24, 0xa2, 0x57, 0x60, 0x9c, 0xb5, 0x1a, 0xa2, 0x22, 0xc3, 0x36, 0xfe, 0xbb, 0x1a, + 0x8c, 0xe5, 0x27, 0x9d, 0xdf, 0xe6, 0x61, 0x47, 0x52, 0xd3, 0x68, 0x14, 0x66, 0xfa, 0x76, 0xfe, + 0xde, 0x30, 0x2a, 0xd2, 0xf9, 0x6d, 0x8f, 0x4a, 0xda, 0xdd, 0x64, 0x29, 0x3c, 0x4a, 0xe5, 0x4c, + 0xdf, 0x76, 0x0f, 0x89, 0x46, 0xaa, 0xd0, 0x90, 0x71, 0x8f, 0x4c, 0x8a, 0x66, 0xb2, 0xfb, 0x4a, + 0x24, 0x3a, 0xa6, 0xce, 0xf6, 0x2d, 0x5a, 0xef, 0x1d, 0x2c, 0x15, 0xea, 0x06, 0xb9, 0x54, 0xf4, + 0x10, 0xf2, 0xfc, 0x26, 0x01, 0x6f, 0xb5, 0xfe, 0x1c, 0x95, 0xf7, 0x7c, 0xa8, 0xe9, 0x0a, 0x0b, + 0xeb, 0xa8, 0x8c, 0x89, 0x53, 0x4a, 0x30, 0x05, 0x3d, 0x82, 0x69, 0x2a, 0x4f, 0x52, 0xbc, 0x2b, + 0x20, 0x0a, 0x85, 0x9e, 0xf8, 0xc8, 0xfe, 0xb7, 0x45, 0x38, 0x92, 0xf3, 0x4a, 0x57, 0x12, 0xe9, + 0xc6, 0x9a, 0xae, 0xd9, 0xd4, 0xca, 0xce, 0xf6, 0xed, 0xc6, 0xc1, 0x1b, 0xe3, 0x48, 0x37, 0xd6, + 0x18, 0x85, 0x74, 0x63, 0x9b, 0x87, 0x30, 0xf1, 0xe6, 0x78, 0xb6, 0x6f, 0x37, 0x0e, 0x8b, 0x75, + 0x22, 0xdd, 0xd8, 0xf6, 0xd3, 0x49, 0x37, 0x66, 0x06, 0xa2, 0x4b, 0xee, 0x73, 0x7d, 0xbb, 0x71, + 0xdf, 0xf3, 0xb3, 0xa4, 0x1b, 0xcb, 0x3d, 0x89, 0x68, 0x05, 0x80, 0xb9, 0x27, 0x9a, 0xbe, 0x63, + 0x14, 0xe6, 0xfa, 0x4e, 0x06, 0xdd, 0x41, 0x4c, 0x64, 0x32, 0x68, 0x3a, 0x34, 0x62, 0xc8, 0x28, + 0x36, 0x92, 0xe8, 0xe6, 0x60, 0x61, 0xbe, 0xaf, 0x21, 0xeb, 0xd9, 0x23, 0x24, 0x86, 0x6c, 0xdf, + 0x25, 0x92, 0x59, 0x85, 0x2d, 0x2d, 0x17, 0x16, 0xfa, 0x9b, 0x65, 0xff, 0xa6, 0x0a, 0x35, 0xcb, + 0x94, 0x80, 0x96, 0x20, 0x4d, 0xa6, 0xed, 0x43, 0x6a, 0x86, 0x2e, 0xf6, 0x75, 0x38, 0xbb, 0xce, + 0x44, 0x54, 0xc6, 0xc4, 0xd4, 0x13, 0x4e, 0x22, 0xaf, 0x67, 0x8b, 0x75, 0x85, 0x62, 0xdf, 0xd7, + 0x07, 0x16, 0x68, 0xc9, 0xeb, 0x19, 0x07, 0x52, 0xe0, 0x2c, 0x6b, 0x2b, 0x7e, 0x7c, 0xd5, 0xe4, + 0x67, 0x2d, 0x0b, 0x97, 0xa8, 0xa8, 0xbe, 0x4b, 0x5f, 0xa1, 0xa7, 0x6a, 0x2b, 0x63, 0xe2, 0x8c, + 0xdc, 0x9b, 0x4a, 0x06, 0x3c, 0x9f, 0x7a, 0xd8, 0x82, 0x59, 0xe1, 0x72, 0xdf, 0x01, 0x1f, 0xb2, + 0xc4, 0x48, 0x06, 0xbc, 0xec, 0x23, 0xb3, 0x09, 0x48, 0x95, 0x2c, 0x8b, 0x6d, 0x25, 0x5f, 0x19, + 0x30, 0x01, 0x75, 0x61, 0x7f, 0x36, 0x01, 0xa9, 0x35, 0xc6, 0x49, 0x04, 0x29, 0x4d, 0x2c, 0x9b, + 0xdc, 0xcc, 0x5e, 0xed, 0x2b, 0xa8, 0xe7, 0x16, 0x36, 0x22, 0x48, 0x71, 0x89, 0xc4, 0xe1, 0x31, + 0x9d, 0x2b, 0x48, 0xb8, 0xeb, 0x77, 0xad, 0xaf, 0xc3, 0x13, 0x7a, 0x53, 0x0a, 0x71, 0x78, 0xcc, + 0x40, 0x02, 0xfa, 0x2c, 0x4c, 0x70, 0x84, 0x56, 0xb8, 0x3e, 0xc0, 0x21, 0xf5, 0x43, 0x6b, 0x32, + 0xae, 0x39, 0x0f, 0xb3, 0xb2, 0x0c, 0x19, 0xb2, 0xea, 0x3d, 0x3f, 0xc0, 0xca, 0xf6, 0x80, 0x53, + 0x66, 0x65, 0x3d, 0x32, 0xb1, 0xb2, 0xac, 0x9f, 0xf2, 0xb9, 0xee, 0x46, 0x5f, 0x2b, 0xdb, 0x7b, + 0x20, 0x83, 0x58, 0xd9, 0x27, 0x1e, 0x95, 0xd4, 0xcc, 0x62, 0xa8, 0xa8, 0xf0, 0xa9, 0xbe, 0x35, + 0x0b, 0x82, 0x44, 0x52, 0x33, 0xce, 0x43, 0x9a, 0x8d, 0xc5, 0xce, 0x32, 0x4d, 0xbf, 0xd0, 0xff, + 0xa4, 0x78, 0x37, 0x88, 0xa8, 0x38, 0x37, 0xf4, 0x32, 0x0d, 0xbb, 0x86, 0xca, 0xe4, 0xe7, 0x62, + 0xb9, 0xa6, 0x5e, 0x1c, 0x6c, 0xa8, 0xc2, 0x8e, 0xfc, 0xba, 0x86, 0x2a, 0x90, 0x48, 0x8b, 0xca, + 0x8e, 0x37, 0xd1, 0xf1, 0xbd, 0x38, 0xe0, 0x50, 0x7b, 0xd7, 0x89, 0x33, 0x5a, 0x54, 0x97, 0xe8, + 0x0d, 0xa1, 0x0e, 0xbb, 0x7d, 0xa1, 0x70, 0x73, 0xf0, 0x10, 0x0a, 0xde, 0x02, 0xe1, 0x0e, 0x21, + 0x4e, 0x76, 0xe7, 0x4c, 0xc7, 0xc3, 0x78, 0x69, 0xf0, 0x9c, 0xd9, 0xed, 0x5a, 0xb0, 0x39, 0x93, + 0xfb, 0x14, 0xbf, 0x24, 0xc0, 0x02, 0x2b, 0x1b, 0x5d, 0xc7, 0x3b, 0x94, 0xdc, 0x35, 0x51, 0x5f, + 0x84, 0xfd, 0x2d, 0xfa, 0x82, 0x57, 0xfa, 0x15, 0x77, 0xc8, 0x1a, 0x6f, 0x65, 0x4c, 0x7c, 0x4e, + 0x1e, 0x94, 0x8f, 0x74, 0xa9, 0x16, 0x5b, 0x85, 0x2e, 0xdc, 0xee, 0xdb, 0xa5, 0x82, 0xab, 0xe8, + 0xa4, 0x4b, 0x71, 0x9e, 0xe5, 0x09, 0xbe, 0xdf, 0xec, 0x9e, 0x53, 0x9c, 0xca, 0xe7, 0xef, 0x27, + 0x52, 0xe7, 0xf3, 0x85, 0xfb, 0x89, 0xd4, 0x85, 0xfc, 0xec, 0xfd, 0x44, 0xea, 0x99, 0xfc, 0xb3, + 0xc5, 0xef, 0xcd, 0xc2, 0xa4, 0x03, 0x01, 0x19, 0xa0, 0xba, 0xed, 0x07, 0x54, 0x73, 0xfd, 0x00, + 0x15, 0x07, 0x8d, 0x1c, 0x51, 0xdd, 0xf6, 0x23, 0xaa, 0xb9, 0x7e, 0x88, 0xca, 0xe3, 0x21, 0x90, + 0xaa, 0xde, 0x0f, 0x52, 0x3d, 0x3f, 0x02, 0xa4, 0x72, 0x45, 0x75, 0x63, 0xaa, 0x95, 0x5e, 0x4c, + 0x75, 0x79, 0x30, 0xa6, 0x72, 0x45, 0xf9, 0x40, 0xd5, 0xeb, 0x5d, 0xa0, 0xea, 0xe2, 0x00, 0x50, + 0xe5, 0xf2, 0x3b, 0xa8, 0x6a, 0x35, 0x14, 0x55, 0x5d, 0x1d, 0x86, 0xaa, 0x5c, 0x39, 0x01, 0x58, + 0xf5, 0x72, 0x00, 0x56, 0xcd, 0xf7, 0x85, 0x55, 0x2e, 0x37, 0xc3, 0x55, 0x6f, 0x74, 0xe3, 0xaa, + 0x8b, 0x03, 0x70, 0x95, 0x57, 0x03, 0x0e, 0xac, 0x2a, 0x61, 0xc0, 0xea, 0xca, 0x10, 0x60, 0xe5, + 0x4a, 0xf1, 0x23, 0xab, 0x4a, 0x18, 0xb2, 0xba, 0x32, 0x04, 0x59, 0x75, 0x49, 0x62, 0xd0, 0x6a, + 0x3d, 0x1c, 0x5a, 0x5d, 0x1b, 0x0a, 0xad, 0x5c, 0x69, 0x41, 0x6c, 0x75, 0xd3, 0x87, 0xad, 0x9e, + 0xeb, 0x83, 0xad, 0x5c, 0x56, 0x02, 0xae, 0x3e, 0xd7, 0x03, 0xae, 0x8a, 0x83, 0xc0, 0x95, 0xcb, + 0xeb, 0xa2, 0xab, 0xb7, 0xfa, 0xa0, 0xab, 0xeb, 0xc3, 0xd1, 0x95, 0x2b, 0xac, 0x0b, 0x5e, 0xc9, + 0x03, 0xe1, 0xd5, 0x8b, 0x23, 0xc2, 0x2b, 0x57, 0x7a, 0x18, 0xbe, 0x7a, 0x35, 0x88, 0xaf, 0x16, + 0xfa, 0xe3, 0x2b, 0x57, 0x0c, 0x07, 0x58, 0xab, 0xa1, 0x00, 0xeb, 0xea, 0x30, 0x80, 0xe5, 0x8d, + 0x03, 0x3f, 0xc2, 0x5a, 0x0f, 0x47, 0x58, 0xd7, 0x86, 0x22, 0x2c, 0xaf, 0xf9, 0x03, 0x10, 0x6b, + 0x35, 0x14, 0x62, 0x5d, 0x1d, 0x06, 0xb1, 0xbc, 0xc2, 0xf9, 0x31, 0xd6, 0xdb, 0x7d, 0x31, 0xd6, + 0x8d, 0x51, 0x30, 0x96, 0x2b, 0xb4, 0x07, 0x64, 0xbd, 0xd3, 0x1f, 0x64, 0x7d, 0xea, 0x04, 0x57, + 0xf2, 0x85, 0xa2, 0xac, 0xcf, 0xf5, 0xa0, 0xac, 0xe2, 0x20, 0x94, 0xe5, 0xf5, 0x67, 0x07, 0x66, + 0xc9, 0x03, 0x41, 0xd1, 0x8b, 0x23, 0x82, 0x22, 0xaf, 0xf3, 0x85, 0xa0, 0xa2, 0x72, 0x08, 0x2a, + 0xba, 0x3c, 0x18, 0x15, 0x79, 0xe6, 0xdc, 0x83, 0x45, 0x95, 0x30, 0x58, 0x74, 0x65, 0x08, 0x2c, + 0xf2, 0xac, 0x90, 0x0f, 0x17, 0xbd, 0xde, 0x85, 0x8b, 0x2e, 0x0e, 0x8d, 0x4d, 0xf2, 0x01, 0xa3, + 0xe5, 0x5e, 0x60, 0x74, 0x69, 0x20, 0x30, 0x72, 0x25, 0x78, 0xc8, 0xe8, 0xf5, 0x2e, 0x64, 0x74, + 0x71, 0x00, 0x32, 0xf2, 0x0a, 0xc0, 0xa1, 0x91, 0x3a, 0x18, 0x1a, 0x2d, 0x8e, 0x0a, 0x8d, 0x5c, + 0xc1, 0xa1, 0xd8, 0x68, 0x3d, 0x1c, 0x1b, 0x5d, 0x1b, 0x31, 0xe6, 0xa0, 0x07, 0x1c, 0x55, 0xc2, + 0xc0, 0xd1, 0x95, 0x21, 0xe0, 0xc8, 0x3f, 0x87, 0xb8, 0xe8, 0xa8, 0x12, 0x86, 0x8e, 0xae, 0x0c, + 0x41, 0x47, 0x9e, 0x24, 0x1f, 0x3c, 0xaa, 0xf7, 0x83, 0x47, 0xcf, 0x8f, 0x00, 0x8f, 0x3c, 0xe7, + 0xa5, 0x0b, 0x1f, 0xbd, 0xd9, 0x8d, 0x8f, 0x8a, 0x83, 0xf0, 0x91, 0x37, 0x22, 0x1d, 0x80, 0xb4, + 0x1e, 0x0e, 0x90, 0xae, 0x0d, 0x05, 0x48, 0x7e, 0x23, 0xe9, 0x43, 0x48, 0xab, 0xa1, 0x08, 0xe9, + 0xea, 0x30, 0x84, 0xe4, 0x19, 0x49, 0x3f, 0x44, 0x7a, 0xb3, 0x1b, 0x22, 0x15, 0x07, 0x41, 0x24, + 0xaf, 0x72, 0x0e, 0x46, 0xaa, 0x84, 0x61, 0xa4, 0x2b, 0x43, 0x30, 0x92, 0xd7, 0x78, 0x3e, 0x90, + 0x24, 0x0f, 0x04, 0x49, 0x2f, 0x8e, 0x08, 0x92, 0xba, 0x0c, 0x57, 0x10, 0x25, 0x55, 0xc2, 0x50, + 0xd2, 0x95, 0x21, 0x28, 0xc9, 0x57, 0x58, 0x0f, 0x26, 0xad, 0x87, 0xc3, 0xa4, 0x6b, 0x43, 0x61, + 0x52, 0xd7, 0x68, 0x72, 0x70, 0xd2, 0x6a, 0x28, 0x4e, 0xba, 0x3a, 0x0c, 0x27, 0x75, 0x4d, 0x7c, + 0xdc, 0x39, 0xf8, 0xe5, 0xd1, 0x81, 0xd2, 0xab, 0x27, 0x07, 0x4a, 0xee, 0x3b, 0x87, 0x20, 0xa5, + 0x37, 0xbb, 0x91, 0x52, 0x71, 0x10, 0x52, 0xf2, 0x7a, 0xd6, 0xc9, 0xa0, 0xd2, 0xfd, 0x44, 0xea, + 0xd9, 0xfc, 0x73, 0xc5, 0x5f, 0x8c, 0x43, 0xb2, 0xe2, 0x86, 0xd8, 0x78, 0xb5, 0x14, 0x4e, 0x73, + 0x67, 0x10, 0x5a, 0x21, 0x23, 0x9e, 0xda, 0xcd, 0xe1, 0xd7, 0xc3, 0xf5, 0x5e, 0x5d, 0xc6, 0x59, + 0x4f, 0x71, 0xf4, 0x16, 0xbd, 0x0c, 0x93, 0x1d, 0x0b, 0x9b, 0x52, 0xdb, 0xd4, 0x0c, 0x53, 0xb3, + 0xd9, 0x21, 0x09, 0x61, 0x39, 0xff, 0xe1, 0xd1, 0x7c, 0x76, 0xcb, 0xc2, 0xe6, 0x26, 0xa7, 0x8b, + 0xd9, 0x8e, 0xef, 0xc9, 0xf9, 0x9a, 0xd1, 0xf8, 0xe8, 0x5f, 0x33, 0x7a, 0x0b, 0xf2, 0x26, 0x96, + 0xd5, 0x80, 0x07, 0xc3, 0x2e, 0xe3, 0x09, 0xef, 0x73, 0xf4, 0x84, 0x90, 0x93, 0x93, 0x5e, 0xca, + 0x33, 0x65, 0x06, 0x89, 0xe8, 0x16, 0x9c, 0x6d, 0xc9, 0x07, 0x34, 0xf2, 0x53, 0x72, 0x9c, 0x42, + 0x1a, 0xcd, 0x99, 0xa2, 0x51, 0xca, 0xa8, 0x25, 0x1f, 0xd0, 0x4f, 0x23, 0xb1, 0x24, 0xfa, 0x51, + 0x84, 0x2b, 0x90, 0x53, 0x35, 0xcb, 0xd6, 0x74, 0xc5, 0xb9, 0x8f, 0x95, 0x5d, 0x6f, 0x3a, 0xe9, + 0x50, 0xd9, 0x95, 0xab, 0x37, 0x60, 0x9a, 0x47, 0xc1, 0x7b, 0x1f, 0x4b, 0xa2, 0xf0, 0x27, 0x45, + 0x4a, 0x41, 0x12, 0xbc, 0xaf, 0x64, 0x95, 0x60, 0xaa, 0x21, 0xdb, 0x78, 0x5f, 0x3e, 0x94, 0x9c, + 0x43, 0x4a, 0x19, 0x7a, 0x99, 0xe1, 0x33, 0xc7, 0x47, 0xf3, 0x93, 0xf7, 0x58, 0x52, 0xcf, 0x59, + 0xa5, 0xc9, 0x86, 0x2f, 0x41, 0x45, 0x4b, 0x90, 0xa5, 0x97, 0x9d, 0x1b, 0xec, 0x4e, 0x7d, 0x0e, + 0x6a, 0xfa, 0xed, 0x9e, 0xf1, 0x9b, 0xf7, 0x45, 0x7a, 0x41, 0xba, 0x73, 0x0d, 0xff, 0x35, 0x98, + 0x92, 0xad, 0x43, 0x5d, 0xa1, 0x1a, 0xc6, 0xba, 0xd5, 0xb1, 0x28, 0xaa, 0x49, 0x89, 0x39, 0x4a, + 0x2e, 0x39, 0x54, 0xf4, 0x2a, 0x5c, 0x50, 0x31, 0x71, 0xd3, 0x98, 0x2f, 0x64, 0x1b, 0x86, 0x64, + 0x34, 0x55, 0x89, 0xde, 0xdb, 0x41, 0x11, 0x4d, 0x4a, 0x3c, 0x4b, 0x33, 0x50, 0x2f, 0xa8, 0x6e, + 0x18, 0x1b, 0x4d, 0xb5, 0x4c, 0x12, 0xf9, 0x1d, 0xad, 0xbf, 0x21, 0x40, 0x36, 0x70, 0xac, 0xe4, + 0xf5, 0xae, 0xed, 0xe5, 0x0b, 0xe1, 0x58, 0xac, 0x5f, 0x7c, 0x5a, 0x8a, 0xb7, 0x9d, 0x13, 0x94, + 0x38, 0xdf, 0xdf, 0x97, 0xa7, 0x2b, 0x13, 0x4e, 0x68, 0x83, 0xc3, 0xf6, 0x5a, 0xe2, 0xb7, 0xde, + 0x9b, 0x1f, 0x2b, 0xfe, 0x2c, 0x0e, 0x93, 0xc1, 0xe3, 0x23, 0xd5, 0xae, 0x72, 0x85, 0xd9, 0xca, + 0x00, 0xc7, 0xe2, 0x80, 0x2b, 0xeb, 0xd2, 0xde, 0xe5, 0xea, 0xac, 0x98, 0x0b, 0x03, 0x36, 0xd1, + 0xfd, 0xe5, 0xf4, 0x18, 0x67, 0xbf, 0x1f, 0x73, 0x6d, 0xc6, 0x22, 0x8c, 0x33, 0x85, 0x0b, 0x7d, + 0x8f, 0xf3, 0x52, 0x9d, 0x8b, 0x2c, 0x1b, 0xb1, 0x31, 0xf5, 0x53, 0xdd, 0x4b, 0xe6, 0x99, 0xc7, + 0x93, 0x7f, 0x81, 0x8c, 0xdf, 0x4e, 0x37, 0x7e, 0xb2, 0xdb, 0xe9, 0xd8, 0x26, 0x79, 0xb3, 0xc9, + 0xec, 0x3f, 0x1b, 0x65, 0xc9, 0x9e, 0x33, 0xb3, 0x54, 0x04, 0xff, 0x40, 0xdd, 0xa2, 0xc8, 0x3f, + 0x50, 0xe7, 0x8b, 0x13, 0xcd, 0xb9, 0x22, 0xe8, 0x90, 0x64, 0xd1, 0xc4, 0xbc, 0xa9, 0xbf, 0x2d, + 0x40, 0x9e, 0x0e, 0xc0, 0xbb, 0x18, 0xab, 0x91, 0xf4, 0x42, 0x27, 0x84, 0x35, 0x36, 0x7a, 0x64, + 0x7f, 0xe0, 0xb2, 0xfb, 0x78, 0xf0, 0xb2, 0xfb, 0xe2, 0x7b, 0x02, 0xe4, 0xdc, 0x12, 0xb2, 0xcf, + 0x31, 0x0d, 0xb8, 0x74, 0xee, 0x74, 0x5f, 0x28, 0x72, 0xce, 0xc3, 0x8f, 0xf4, 0x5d, 0x28, 0xff, + 0x79, 0x78, 0xf6, 0x35, 0x9d, 0x6f, 0x09, 0x30, 0xe3, 0x16, 0xb1, 0xe4, 0x9d, 0x75, 0x3e, 0xc5, + 0x21, 0x07, 0x91, 0x7e, 0xa9, 0xce, 0x68, 0xee, 0xb1, 0x8b, 0x08, 0x46, 0xea, 0x9e, 0x88, 0x07, + 0x83, 0x00, 0x5f, 0x89, 0x50, 0xeb, 0x35, 0xfa, 0x0d, 0x3b, 0xf6, 0xdf, 0x2a, 0xde, 0xf5, 0x29, + 0x90, 0x8e, 0x04, 0xa2, 0xa5, 0x91, 0x86, 0x8c, 0xa3, 0x25, 0x9a, 0xb9, 0xf8, 0x43, 0x7f, 0x4b, + 0x94, 0xf7, 0x88, 0x07, 0x7a, 0x07, 0xe2, 0x7b, 0x72, 0x73, 0x50, 0x2c, 0x4c, 0xa0, 0xe5, 0x44, + 0x92, 0x1b, 0xdd, 0x0d, 0x1c, 0x11, 0x8f, 0xf5, 0xf7, 0x96, 0x7a, 0x55, 0x1a, 0x38, 0x4a, 0xfe, + 0x8a, 0x53, 0x8b, 0xf8, 0xf0, 0xd7, 0xfb, 0x2d, 0xc0, 0x6b, 0x89, 0xf7, 0xdf, 0x9b, 0x17, 0x6e, + 0xd4, 0x60, 0x26, 0x64, 0x6e, 0x44, 0x39, 0x00, 0xdf, 0x15, 0xf8, 0xfc, 0x43, 0x79, 0x4b, 0x2b, + 0xd2, 0xd6, 0x7a, 0x69, 0x63, 0x6d, 0xad, 0x5a, 0xaf, 0x97, 0x57, 0xf2, 0x02, 0xca, 0x43, 0x36, + 0x70, 0x81, 0x3e, 0xff, 0x3e, 0xde, 0x8d, 0xff, 0x05, 0xe0, 0x7d, 0x44, 0x83, 0xc8, 0x5a, 0x2d, + 0x3f, 0x92, 0x1e, 0x2e, 0x3d, 0xd8, 0x2a, 0xd7, 0xf2, 0x63, 0x08, 0x41, 0x6e, 0x79, 0xa9, 0x5e, + 0xaa, 0x48, 0x62, 0xb9, 0xb6, 0xb9, 0xb1, 0x5e, 0x2b, 0xe7, 0x05, 0xce, 0xb7, 0x02, 0x59, 0xff, + 0x61, 0x7a, 0x34, 0x03, 0x53, 0xa5, 0x4a, 0xb9, 0xb4, 0x2a, 0x3d, 0xac, 0x2e, 0x49, 0x6f, 0x6d, + 0x95, 0xb7, 0xca, 0xf9, 0x31, 0x5a, 0x34, 0x4a, 0xbc, 0xbb, 0xf5, 0xe0, 0x41, 0x5e, 0x40, 0x53, + 0x90, 0x61, 0xcf, 0xf4, 0xb2, 0xfd, 0x7c, 0xec, 0xc6, 0x1a, 0x64, 0x7c, 0x77, 0xef, 0x91, 0xd7, + 0x6d, 0x6e, 0xd5, 0x2a, 0x52, 0xbd, 0xba, 0x56, 0xae, 0xd5, 0x97, 0xd6, 0x36, 0x99, 0x0c, 0x4a, + 0x5b, 0x5a, 0xde, 0x10, 0xeb, 0x79, 0xc1, 0x7d, 0xae, 0x6f, 0x6c, 0x95, 0x2a, 0xee, 0x67, 0xfe, + 0x12, 0xa9, 0x78, 0x3e, 0x7e, 0xe3, 0x09, 0x9c, 0xef, 0x73, 0xa2, 0x1c, 0x65, 0x60, 0x62, 0x4b, + 0xa7, 0xb7, 0x8d, 0xe5, 0xc7, 0xd0, 0xa4, 0xef, 0x50, 0x79, 0x5e, 0x40, 0x29, 0x76, 0x5c, 0x38, + 0x1f, 0x43, 0x49, 0x88, 0xd5, 0xee, 0xe4, 0xe3, 0xa4, 0xa0, 0xbe, 0x33, 0xd9, 0xf9, 0x04, 0x4a, + 0xf3, 0x03, 0xab, 0xf9, 0x71, 0x94, 0xf5, 0x4e, 0x8c, 0xe6, 0x93, 0x37, 0x2e, 0x82, 0xef, 0x38, + 0x1d, 0x02, 0x48, 0x3e, 0x90, 0x6d, 0x6c, 0xd9, 0xf9, 0x31, 0x34, 0x01, 0xf1, 0xa5, 0x66, 0x33, + 0x2f, 0xdc, 0xfe, 0x23, 0x01, 0x52, 0xce, 0xbd, 0xf1, 0xe8, 0x01, 0x8c, 0xb3, 0x65, 0x84, 0xf9, + 0xfe, 0x33, 0x12, 0x35, 0x6a, 0xb3, 0x0b, 0xc3, 0xa6, 0xac, 0xe2, 0x18, 0x7a, 0x9b, 0x7f, 0xb3, + 0x93, 0xf4, 0x18, 0x74, 0x69, 0x50, 0x7f, 0x72, 0xa4, 0x0e, 0xee, 0x74, 0x64, 0x8c, 0x14, 0xc7, + 0x5e, 0x12, 0x96, 0x9f, 0x7f, 0xff, 0x27, 0x73, 0x63, 0xef, 0x1f, 0xcf, 0x09, 0x1f, 0x1c, 0xcf, + 0x09, 0x3f, 0x3e, 0x9e, 0x13, 0xfe, 0xf9, 0x78, 0x4e, 0xf8, 0xb5, 0x9f, 0xce, 0x8d, 0x7d, 0xf0, + 0xd3, 0xb9, 0xb1, 0x1f, 0xff, 0x74, 0x6e, 0xec, 0x9d, 0x09, 0xce, 0xbd, 0x9d, 0xa4, 0x9f, 0x0f, + 0xbd, 0xf3, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x28, 0xf8, 0x25, 0x53, 0x43, 0x75, 0x00, 0x00, } diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index 3ae61de65065..9d341681084e 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -1467,6 +1467,23 @@ message AdminScatterResponse { repeated Range ranges = 2 [(gogoproto.nullable) = false]; } +// MigrateRequest forces all ranges overlapping it to proactively move out of +// any legacy modes that they are currently in. When this command returns, the +// ranges are ready to run with the most up to date cluster version supported +// by this binary. +message MigrateRequest { + option (gogoproto.equal) = true; + + RequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + // The new version that will become active next. + Version NewVersion = 2 [(gogoproto.nullable) = false]; +} + +// MigrateResponse is the response to an Migrate operation. +message MigrateResponse { + ResponseHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; +} + // AdminVerifyProtectedTimestampRequest is the argument to the // AdminVerifyProtectedTimestamp method which ensures that the specified record // will be seen before data can be garbage collected at the timestamp. @@ -1704,6 +1721,7 @@ message RequestUnion { SubsumeRequest subsume = 43; RangeStatsRequest range_stats = 44; AdminVerifyProtectedTimestampRequest admin_verify_protected_timestamp = 49; + MigrateRequest migrate = 50; } reserved 8, 15, 23, 25, 27; } @@ -1755,6 +1773,7 @@ message ResponseUnion { SubsumeResponse subsume = 43; RangeStatsResponse range_stats = 44; AdminVerifyProtectedTimestampResponse admin_verify_protected_timestamp = 49; + MigrateResponse migrate = 50; } reserved 8, 15, 23, 25, 27, 28; } diff --git a/pkg/roachpb/batch_generated.go b/pkg/roachpb/batch_generated.go index ed4c3f0d8a04..cca35fd67fb6 100644 --- a/pkg/roachpb/batch_generated.go +++ b/pkg/roachpb/batch_generated.go @@ -166,6 +166,8 @@ func (ru RequestUnion) GetInner() Request { return t.RangeStats case *RequestUnion_AdminVerifyProtectedTimestamp: return t.AdminVerifyProtectedTimestamp + case *RequestUnion_Migrate: + return t.Migrate default: return nil } @@ -260,6 +262,8 @@ func (ru ResponseUnion) GetInner() Response { return t.RangeStats case *ResponseUnion_AdminVerifyProtectedTimestamp: return t.AdminVerifyProtectedTimestamp + case *ResponseUnion_Migrate: + return t.Migrate default: return nil } @@ -426,6 +430,8 @@ func (ru *RequestUnion) SetInner(r Request) bool { union = &RequestUnion_RangeStats{t} case *AdminVerifyProtectedTimestampRequest: union = &RequestUnion_AdminVerifyProtectedTimestamp{t} + case *MigrateRequest: + union = &RequestUnion_Migrate{t} default: return false } @@ -523,6 +529,8 @@ func (ru *ResponseUnion) SetInner(r Response) bool { union = &ResponseUnion_RangeStats{t} case *AdminVerifyProtectedTimestampResponse: union = &ResponseUnion_AdminVerifyProtectedTimestamp{t} + case *MigrateResponse: + union = &ResponseUnion_Migrate{t} default: return false } @@ -530,7 +538,7 @@ func (ru *ResponseUnion) SetInner(r Response) bool { return true } -type reqCounts [44]int32 +type reqCounts [45]int32 // getReqCounts returns the number of times each // request type appears in the batch. @@ -626,6 +634,8 @@ func (ba *BatchRequest) getReqCounts() reqCounts { counts[42]++ case *RequestUnion_AdminVerifyProtectedTimestamp: counts[43]++ + case *RequestUnion_Migrate: + counts[44]++ default: panic(fmt.Sprintf("unsupported request: %+v", ru)) } @@ -678,6 +688,7 @@ var requestNames = []string{ "Subsume", "RngStats", "AdmVerifyProtectedTimestamp", + "Migrate", } // Summary prints a short summary of the requests in a batch. @@ -885,6 +896,10 @@ type adminVerifyProtectedTimestampResponseAlloc struct { union ResponseUnion_AdminVerifyProtectedTimestamp resp AdminVerifyProtectedTimestampResponse } +type migrateResponseAlloc struct { + union ResponseUnion_Migrate + resp MigrateResponse +} // CreateReply creates replies for each of the contained requests, wrapped in a // BatchResponse. The response objects are batch allocated to minimize @@ -939,6 +954,7 @@ func (ba *BatchRequest) CreateReply() *BatchResponse { var buf41 []subsumeResponseAlloc var buf42 []rangeStatsResponseAlloc var buf43 []adminVerifyProtectedTimestampResponseAlloc + var buf44 []migrateResponseAlloc for i, r := range ba.Requests { switch r.GetValue().(type) { @@ -1250,6 +1266,13 @@ func (ba *BatchRequest) CreateReply() *BatchResponse { buf43[0].union.AdminVerifyProtectedTimestamp = &buf43[0].resp br.Responses[i].Value = &buf43[0].union buf43 = buf43[1:] + case *RequestUnion_Migrate: + if buf44 == nil { + buf44 = make([]migrateResponseAlloc, counts[44]) + } + buf44[0].union.Migrate = &buf44[0].resp + br.Responses[i].Value = &buf44[0].union + buf44 = buf44[1:] default: panic(fmt.Sprintf("unsupported request: %+v", r)) } diff --git a/pkg/roachpb/metadata.pb.go b/pkg/roachpb/metadata.pb.go index 7fa93f24d7c4..240fcc0608fb 100644 --- a/pkg/roachpb/metadata.pb.go +++ b/pkg/roachpb/metadata.pb.go @@ -112,7 +112,7 @@ func (x *ReplicaType) UnmarshalJSON(data []byte) error { return nil } func (ReplicaType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{0} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{0} } // Attributes specifies a list of arbitrary strings describing @@ -124,7 +124,7 @@ type Attributes struct { func (m *Attributes) Reset() { *m = Attributes{} } func (*Attributes) ProtoMessage() {} func (*Attributes) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{0} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{0} } func (m *Attributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -158,7 +158,7 @@ type ReplicationTarget struct { func (m *ReplicationTarget) Reset() { *m = ReplicationTarget{} } func (*ReplicationTarget) ProtoMessage() {} func (*ReplicationTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{1} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{1} } func (m *ReplicationTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -203,7 +203,7 @@ type ReplicaDescriptor struct { func (m *ReplicaDescriptor) Reset() { *m = ReplicaDescriptor{} } func (*ReplicaDescriptor) ProtoMessage() {} func (*ReplicaDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{2} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{2} } func (m *ReplicaDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -238,7 +238,7 @@ func (m *ReplicaIdent) Reset() { *m = ReplicaIdent{} } func (m *ReplicaIdent) String() string { return proto.CompactTextString(m) } func (*ReplicaIdent) ProtoMessage() {} func (*ReplicaIdent) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{3} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{3} } func (m *ReplicaIdent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -395,7 +395,7 @@ type RangeDescriptor struct { func (m *RangeDescriptor) Reset() { *m = RangeDescriptor{} } func (*RangeDescriptor) ProtoMessage() {} func (*RangeDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{4} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{4} } func (m *RangeDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -434,7 +434,7 @@ type Percentiles struct { func (m *Percentiles) Reset() { *m = Percentiles{} } func (*Percentiles) ProtoMessage() {} func (*Percentiles) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{5} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{5} } func (m *Percentiles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -496,7 +496,7 @@ type StoreCapacity struct { func (m *StoreCapacity) Reset() { *m = StoreCapacity{} } func (*StoreCapacity) ProtoMessage() {} func (*StoreCapacity) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{6} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{6} } func (m *StoreCapacity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -541,7 +541,7 @@ func (m *NodeDescriptor) Reset() { *m = NodeDescriptor{} } func (m *NodeDescriptor) String() string { return proto.CompactTextString(m) } func (*NodeDescriptor) ProtoMessage() {} func (*NodeDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{7} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{7} } func (m *NodeDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -577,7 +577,7 @@ func (m *LocalityAddress) Reset() { *m = LocalityAddress{} } func (m *LocalityAddress) String() string { return proto.CompactTextString(m) } func (*LocalityAddress) ProtoMessage() {} func (*LocalityAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{8} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{8} } func (m *LocalityAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -615,7 +615,7 @@ func (m *StoreDescriptor) Reset() { *m = StoreDescriptor{} } func (m *StoreDescriptor) String() string { return proto.CompactTextString(m) } func (*StoreDescriptor) ProtoMessage() {} func (*StoreDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{9} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{9} } func (m *StoreDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -652,7 +652,7 @@ func (m *StoreDeadReplicas) Reset() { *m = StoreDeadReplicas{} } func (m *StoreDeadReplicas) String() string { return proto.CompactTextString(m) } func (*StoreDeadReplicas) ProtoMessage() {} func (*StoreDeadReplicas) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{10} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{10} } func (m *StoreDeadReplicas) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -686,7 +686,7 @@ type Locality struct { func (m *Locality) Reset() { *m = Locality{} } func (*Locality) ProtoMessage() {} func (*Locality) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{11} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{11} } func (m *Locality) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -722,7 +722,7 @@ type Tier struct { func (m *Tier) Reset() { *m = Tier{} } func (*Tier) ProtoMessage() {} func (*Tier) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{12} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{12} } func (m *Tier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -763,7 +763,7 @@ type Version struct { func (m *Version) Reset() { *m = Version{} } func (*Version) ProtoMessage() {} func (*Version) Descriptor() ([]byte, []int) { - return fileDescriptor_metadata_b748a5b1ea06cfce, []int{13} + return fileDescriptor_metadata_06abde393e1dc9f6, []int{13} } func (m *Version) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -933,6 +933,39 @@ func (this *RangeDescriptor) Equal(that interface{}) bool { } return true } +func (this *Version) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Version) + if !ok { + that2, ok := that.(Version) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Major != that1.Major { + return false + } + if this.Minor != that1.Minor { + return false + } + if this.Patch != that1.Patch { + return false + } + if this.Unstable != that1.Unstable { + return false + } + return true +} func (m *Attributes) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4043,96 +4076,96 @@ var ( ErrIntOverflowMetadata = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("roachpb/metadata.proto", fileDescriptor_metadata_b748a5b1ea06cfce) } +func init() { proto.RegisterFile("roachpb/metadata.proto", fileDescriptor_metadata_06abde393e1dc9f6) } -var fileDescriptor_metadata_b748a5b1ea06cfce = []byte{ - // 1400 bytes of a gzipped FileDescriptorProto +var fileDescriptor_metadata_06abde393e1dc9f6 = []byte{ + // 1402 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcd, 0x6f, 0x1b, 0x45, 0x14, 0xf7, 0xda, 0xeb, 0xd8, 0x7e, 0xce, 0x87, 0x3d, 0x6a, 0x8b, 0x65, 0x84, 0xed, 0x1a, 0x2a, 0xd2, 0x82, 0x92, 0x34, 0x55, 0x54, 0x35, 0x50, 0x20, 0x4e, 0xd2, 0xca, 0x34, 0x5f, 0x6c, 0xdc, 0x22, 0x71, 0x59, 0x4d, 0x76, 0x07, 0x67, 0xe9, 0x7a, 0x77, 0x3b, 0x3b, 0x4e, 0xeb, 0x3b, 0x12, - 0x48, 0x08, 0x89, 0x0b, 0x12, 0xc7, 0x4a, 0xa8, 0xff, 0x03, 0x7f, 0x42, 0x8f, 0x3d, 0xf6, 0x14, - 0x95, 0xf4, 0xc2, 0x99, 0x63, 0x0f, 0x08, 0xcd, 0xec, 0xcc, 0xee, 0x3a, 0x4d, 0xa1, 0x0d, 0x12, - 0xb7, 0xf5, 0xef, 0xfd, 0x7e, 0xcf, 0x6f, 0xde, 0xbc, 0x8f, 0x81, 0x73, 0xd4, 0xc7, 0xd6, 0x7e, - 0xb0, 0x37, 0x3f, 0x20, 0x0c, 0xdb, 0x98, 0xe1, 0xb9, 0x80, 0xfa, 0xcc, 0x47, 0x55, 0xcb, 0xb7, - 0xee, 0x0a, 0xdb, 0x9c, 0x64, 0xd4, 0xeb, 0x43, 0xe6, 0xb8, 0xf3, 0x43, 0x8f, 0x92, 0xd0, 0x77, - 0x0f, 0x88, 0x6d, 0x62, 0xdb, 0xa6, 0x11, 0xbd, 0x5e, 0x13, 0xb6, 0x7d, 0xd7, 0x9a, 0x67, 0xce, - 0x80, 0x84, 0x0c, 0x0f, 0x02, 0x69, 0x39, 0xd3, 0xf7, 0xfb, 0xbe, 0xf8, 0x9c, 0xe7, 0x5f, 0x11, - 0xda, 0xfe, 0x14, 0x60, 0x85, 0x31, 0xea, 0xec, 0x0d, 0x19, 0x09, 0xd1, 0x07, 0x90, 0xc7, 0x8c, - 0xd1, 0xb0, 0xa6, 0xb5, 0x72, 0xb3, 0xa5, 0xce, 0xd9, 0x3f, 0x0f, 0x9b, 0xd5, 0x11, 0x1e, 0xb8, - 0xcb, 0x6d, 0x01, 0x7f, 0xf8, 0xb5, 0xeb, 0xdf, 0x6f, 0x1b, 0x11, 0x67, 0x59, 0xff, 0xe5, 0x61, - 0x33, 0xd3, 0xfe, 0x4e, 0x83, 0xaa, 0x41, 0x02, 0xd7, 0xb1, 0x30, 0x73, 0x7c, 0xaf, 0x87, 0x69, - 0x9f, 0x30, 0x74, 0x19, 0x0a, 0x9e, 0x6f, 0x13, 0xd3, 0xb1, 0x6b, 0x5a, 0x4b, 0x9b, 0xcd, 0x77, - 0x6a, 0x8f, 0x0f, 0x9b, 0x99, 0xa3, 0xc3, 0xe6, 0xc4, 0x96, 0x6f, 0x93, 0xee, 0xda, 0x8b, 0xf8, - 0xcb, 0x98, 0xe0, 0xc4, 0xae, 0x8d, 0x96, 0xa0, 0x18, 0x32, 0x9f, 0x0a, 0x4d, 0x56, 0x68, 0xea, - 0x52, 0x53, 0xd8, 0xe5, 0xb8, 0x10, 0xa9, 0x4f, 0xa3, 0x20, 0xb8, 0x5d, 0x7b, 0xb9, 0xc8, 0xa3, - 0xf8, 0xe3, 0x61, 0x53, 0x6b, 0xff, 0x95, 0x44, 0xb2, 0x46, 0x42, 0x8b, 0x3a, 0x01, 0xf3, 0xe9, - 0xff, 0x17, 0x09, 0xba, 0x0e, 0x40, 0xa3, 0xbf, 0xe7, 0xc2, 0x9c, 0x10, 0x36, 0xa4, 0xb0, 0x24, - 0x03, 0x13, 0xd2, 0xe4, 0x87, 0x51, 0x92, 0x8a, 0xae, 0x8d, 0x16, 0x41, 0x67, 0xa3, 0x80, 0xd4, - 0xf4, 0x96, 0x36, 0x3b, 0xbd, 0xd8, 0x98, 0x7b, 0xe9, 0xde, 0xe7, 0xa4, 0xac, 0x37, 0x0a, 0x88, - 0x21, 0xb8, 0xcb, 0x93, 0xfc, 0xf0, 0xbf, 0x3d, 0x6c, 0x6a, 0x22, 0x01, 0x3f, 0x68, 0x30, 0xa9, - 0x5c, 0xdb, 0xc4, 0x63, 0xfc, 0x20, 0x14, 0x7b, 0xfd, 0xf8, 0xf0, 0xb9, 0xe4, 0x20, 0x06, 0xc7, - 0xa3, 0x83, 0xc8, 0x4f, 0xa3, 0x20, 0xb8, 0x5d, 0x1b, 0xad, 0x41, 0x41, 0x86, 0x25, 0x8e, 0x5f, - 0x5e, 0x7c, 0xef, 0xd5, 0xc1, 0x24, 0x99, 0xee, 0xe8, 0xdc, 0xb7, 0xa1, 0xa4, 0xed, 0xa7, 0x39, - 0x98, 0x11, 0xae, 0x53, 0x97, 0x71, 0xca, 0x80, 0x2e, 0x40, 0x29, 0x64, 0x98, 0x32, 0xf3, 0x2e, - 0x19, 0x89, 0x90, 0x26, 0x3b, 0xc5, 0x17, 0x87, 0x4d, 0xdd, 0xb8, 0x45, 0x46, 0x46, 0x51, 0x98, - 0x6e, 0x91, 0x11, 0x3a, 0x0f, 0x05, 0xe2, 0xd9, 0x82, 0x94, 0x3b, 0x46, 0x9a, 0x20, 0x9e, 0xcd, - 0x29, 0x5f, 0x42, 0xd5, 0xf1, 0x18, 0xa1, 0x1e, 0x76, 0x4d, 0x19, 0x68, 0x58, 0xd3, 0x5b, 0xb9, - 0x37, 0x3c, 0x64, 0x45, 0x39, 0x91, 0x84, 0x10, 0x7d, 0x0e, 0x33, 0x1e, 0x79, 0xc0, 0xcc, 0x54, - 0x05, 0xe4, 0x45, 0x05, 0xb4, 0xe5, 0x01, 0xa7, 0xb6, 0xc8, 0x03, 0xf6, 0x8a, 0x2a, 0x98, 0xf2, - 0x52, 0x36, 0x1b, 0x35, 0x00, 0xfa, 0xc4, 0x23, 0x54, 0x34, 0x54, 0x6d, 0x82, 0xe7, 0xc9, 0x48, - 0x21, 0xe8, 0x63, 0x80, 0x90, 0x39, 0xd6, 0xdd, 0x91, 0xb9, 0xe7, 0xb0, 0x5a, 0x41, 0x5c, 0xd1, - 0x3b, 0xa9, 0xe8, 0xf9, 0x08, 0x98, 0xdb, 0x77, 0xad, 0xb9, 0x9e, 0x1a, 0x01, 0x46, 0x29, 0x12, - 0x74, 0x1c, 0x86, 0xae, 0xc0, 0xd9, 0xc4, 0x97, 0x69, 0xf9, 0x83, 0x00, 0x53, 0xbc, 0xe7, 0x92, - 0x5a, 0xb1, 0xa5, 0xcd, 0x16, 0x8d, 0x33, 0x89, 0x71, 0x35, 0xb6, 0x1d, 0x2b, 0xb4, 0x47, 0x1a, - 0x94, 0x77, 0x08, 0xb5, 0x88, 0xc7, 0x1c, 0x97, 0x84, 0xe8, 0x1c, 0xe4, 0x82, 0xcb, 0x0b, 0xe2, - 0x46, 0x35, 0x99, 0x21, 0x0e, 0x08, 0x7c, 0x71, 0x49, 0xdc, 0x58, 0x82, 0x2f, 0x2e, 0x09, 0x7c, - 0x69, 0x41, 0x5c, 0x52, 0x82, 0x2f, 0x45, 0xfc, 0xab, 0x4b, 0xa2, 0x03, 0x12, 0xfc, 0x6a, 0xc4, - 0xbf, 0xb6, 0x20, 0x12, 0x9a, 0xe0, 0xd7, 0x16, 0x50, 0x0d, 0xf4, 0x60, 0x13, 0x3f, 0x10, 0x29, - 0x52, 0x06, 0x81, 0xc8, 0xd9, 0xf4, 0x22, 0x07, 0x53, 0xa2, 0x4d, 0x57, 0x71, 0x80, 0x2d, 0x87, - 0x8d, 0x50, 0x0b, 0x8a, 0x96, 0xfc, 0x96, 0x05, 0x18, 0xa9, 0x62, 0x14, 0xb5, 0xa1, 0x84, 0x0f, - 0xb0, 0xe3, 0x8a, 0x94, 0x64, 0x53, 0x94, 0x04, 0x46, 0x17, 0xa0, 0x1c, 0x95, 0xb1, 0xe5, 0x0f, - 0x3d, 0x26, 0x5b, 0x3d, 0x62, 0x81, 0x30, 0xac, 0x72, 0x9c, 0xd3, 0x5c, 0x82, 0x43, 0x45, 0xd3, - 0xd3, 0x34, 0x61, 0x88, 0x68, 0x0b, 0x50, 0xbd, 0x4f, 0x1d, 0x46, 0x42, 0x33, 0x20, 0xd4, 0x0c, - 0x89, 0xe5, 0x7b, 0xf6, 0xd8, 0x59, 0x67, 0x22, 0xf3, 0x0e, 0xa1, 0xbb, 0xc2, 0x88, 0x76, 0xa0, - 0xba, 0x37, 0x52, 0x02, 0xd5, 0xaa, 0x13, 0xa2, 0x0e, 0x4e, 0x9a, 0x1b, 0xa9, 0xab, 0x52, 0x1e, - 0x85, 0x7c, 0x87, 0x50, 0x59, 0x74, 0xc8, 0x00, 0x94, 0x8a, 0x41, 0xb9, 0x2c, 0xbc, 0x81, 0xcb, - 0x4a, 0x1c, 0xa4, 0xf2, 0x59, 0x03, 0x7d, 0x18, 0x12, 0x5b, 0xd4, 0x95, 0x4a, 0xa2, 0x40, 0xd0, - 0x45, 0x98, 0x72, 0xfd, 0xbe, 0x63, 0x61, 0xd7, 0x14, 0x81, 0xd4, 0x4a, 0x29, 0xca, 0xa4, 0x34, - 0x75, 0xb8, 0x05, 0x2d, 0x02, 0xba, 0x37, 0x24, 0xd4, 0x19, 0xcf, 0x0e, 0xa4, 0xb2, 0x53, 0x91, - 0xf6, 0x38, 0x3d, 0xf2, 0xf2, 0x9f, 0xe9, 0x30, 0xcd, 0x07, 0xfb, 0x7f, 0xdb, 0x05, 0x9f, 0x40, - 0x81, 0x6f, 0x57, 0x12, 0x86, 0x72, 0x16, 0x36, 0x8e, 0x37, 0xda, 0xed, 0x78, 0x0f, 0xaf, 0xd8, - 0x76, 0x3c, 0x05, 0xa5, 0x08, 0x5d, 0x53, 0x1b, 0x35, 0xf7, 0x52, 0x9b, 0xaa, 0x5c, 0x26, 0xfb, - 0x57, 0x8a, 0x23, 0x05, 0xba, 0x0e, 0x45, 0xd7, 0xb7, 0xb0, 0xcb, 0x6b, 0x55, 0x17, 0xea, 0xb7, - 0x4f, 0x50, 0x6f, 0x48, 0x8a, 0x2a, 0x64, 0x25, 0x41, 0x37, 0x60, 0x6a, 0x97, 0xd0, 0x03, 0x42, - 0xef, 0x10, 0x1a, 0xf2, 0x41, 0x92, 0x17, 0x3e, 0xea, 0x27, 0xf8, 0x90, 0x0c, 0xe9, 0x62, 0x5c, - 0x86, 0xce, 0x43, 0x69, 0x6f, 0xe8, 0xb8, 0xb6, 0xc9, 0x70, 0x5f, 0x14, 0x59, 0x49, 0xfd, 0x95, - 0x80, 0x7b, 0xb8, 0x8f, 0xde, 0xe5, 0x03, 0x09, 0x53, 0xc6, 0x9f, 0x22, 0xd1, 0x40, 0x8a, 0x9b, - 0x46, 0xe2, 0x2b, 0x0c, 0xed, 0x42, 0x45, 0xc5, 0x66, 0xaa, 0x94, 0x16, 0xc5, 0xe4, 0x6d, 0xff, - 0xc3, 0xb1, 0x56, 0x22, 0xa6, 0xaa, 0x5b, 0x77, 0x1c, 0x46, 0xef, 0xc3, 0xa4, 0xe5, 0x0e, 0x43, - 0x46, 0xa8, 0xe9, 0xe1, 0x01, 0x11, 0x85, 0xa4, 0xe2, 0x2b, 0x4b, 0xcb, 0x16, 0x1e, 0x10, 0xb4, - 0x0b, 0xe5, 0xf0, 0x9e, 0x1b, 0xff, 0x31, 0xbc, 0xd6, 0x5d, 0x22, 0x59, 0x1e, 0xb0, 0xfb, 0xc5, - 0x86, 0xfc, 0x47, 0x03, 0xc2, 0x7b, 0xae, 0xfc, 0x6e, 0xff, 0xac, 0xc1, 0xcc, 0xb1, 0x40, 0xd3, - 0x05, 0xa3, 0x9d, 0xa6, 0x60, 0x3a, 0xbc, 0x37, 0x64, 0x9a, 0x98, 0x43, 0xa8, 0x2c, 0xbb, 0xb7, - 0x4e, 0xc8, 0x51, 0xcf, 0x21, 0x34, 0x69, 0x9a, 0x48, 0xc3, 0xb1, 0xf6, 0xb7, 0x59, 0x98, 0x11, - 0x73, 0x6f, 0x7c, 0xf5, 0xc6, 0x8f, 0x1a, 0xed, 0xf5, 0x1f, 0x35, 0x71, 0xfd, 0x66, 0xdf, 0xb8, - 0x7e, 0x3f, 0x02, 0x9d, 0x37, 0x91, 0xac, 0xfc, 0xf3, 0x27, 0x28, 0xc7, 0xdb, 0x53, 0x8d, 0x08, - 0x2e, 0x42, 0x9d, 0xd4, 0xa0, 0x8e, 0x8a, 0xbf, 0x75, 0x82, 0x83, 0xb1, 0xe1, 0x7e, 0x7c, 0x94, - 0xb7, 0x7f, 0xd4, 0xa0, 0x2a, 0xd3, 0x80, 0xed, 0x78, 0x53, 0x9f, 0x32, 0x11, 0x2b, 0x50, 0x8c, - 0x1f, 0x0c, 0x59, 0x51, 0xb6, 0xcd, 0x57, 0x3f, 0x18, 0xc4, 0xf3, 0x4b, 0xc5, 0xa3, 0x64, 0xed, - 0x75, 0x28, 0xaa, 0x6a, 0x41, 0x57, 0x20, 0xcf, 0x6f, 0x37, 0x7a, 0x69, 0xff, 0xeb, 0xf5, 0x46, - 0x5c, 0x39, 0xd8, 0x3e, 0x03, 0x9d, 0x9b, 0xf8, 0x56, 0xe4, 0x4f, 0x1d, 0x2d, 0x55, 0xf2, 0x1c, - 0x40, 0x75, 0xc8, 0x1f, 0x60, 0x77, 0x18, 0x6d, 0x2f, 0x65, 0x89, 0x20, 0xe9, 0xe1, 0x91, 0x06, - 0x05, 0xd5, 0xde, 0x97, 0xa0, 0x34, 0xc0, 0xdf, 0xf8, 0xd4, 0x3c, 0xc0, 0xae, 0xcc, 0xc7, 0x94, - 0xcc, 0x47, 0x7e, 0x93, 0x1b, 0x8c, 0xa2, 0xb0, 0xdf, 0xc1, 0xae, 0xe0, 0x3a, 0x9e, 0xe4, 0x66, - 0x8f, 0x71, 0xb9, 0xc1, 0x28, 0x0a, 0x3b, 0xe7, 0xd6, 0x21, 0x1f, 0x60, 0x66, 0xed, 0x8f, 0x6d, - 0xc7, 0x08, 0xe2, 0x5b, 0x78, 0xe8, 0x85, 0x4c, 0xac, 0xd8, 0xf4, 0x56, 0x8c, 0xd1, 0x28, 0xce, - 0x4b, 0x2e, 0x94, 0x53, 0x6f, 0x5e, 0x34, 0x0d, 0x70, 0x67, 0xbb, 0xb7, 0x6e, 0x98, 0x37, 0x6e, - 0x6f, 0x6c, 0x54, 0x32, 0x08, 0xc1, 0x74, 0xf4, 0xbb, 0xbb, 0xb5, 0xba, 0xbd, 0xd9, 0xdd, 0xba, - 0x59, 0xc9, 0x26, 0xd8, 0xf6, 0xed, 0xde, 0xcd, 0x6d, 0x8e, 0xe5, 0x12, 0x6c, 0x6d, 0x7d, 0x73, - 0xbb, 0xc7, 0x31, 0x1d, 0x95, 0xa1, 0xb0, 0xb1, 0xbe, 0x62, 0x6c, 0xad, 0x1b, 0x15, 0xad, 0xae, - 0x7f, 0xff, 0x6b, 0x23, 0xd3, 0xb9, 0xf8, 0xf8, 0xf7, 0x46, 0xe6, 0xf1, 0x51, 0x43, 0x7b, 0x72, - 0xd4, 0xd0, 0x9e, 0x1e, 0x35, 0xb4, 0x67, 0x47, 0x0d, 0xed, 0xa7, 0xe7, 0x8d, 0xcc, 0x93, 0xe7, - 0x8d, 0xcc, 0xd3, 0xe7, 0x8d, 0xcc, 0x57, 0x05, 0x79, 0x35, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0x26, 0xb3, 0x44, 0x54, 0xad, 0x0d, 0x00, 0x00, + 0x48, 0x08, 0x89, 0x0b, 0x12, 0xc7, 0x4a, 0x88, 0x03, 0xff, 0x01, 0x7f, 0x42, 0x8f, 0x3d, 0xf6, + 0x14, 0x95, 0xf4, 0xc2, 0x99, 0x63, 0x0f, 0x08, 0xcd, 0xec, 0xcc, 0xee, 0x3a, 0x4d, 0xa1, 0x0d, + 0x12, 0xb7, 0xf5, 0xef, 0xfd, 0x7e, 0xcf, 0x6f, 0xde, 0xbc, 0x8f, 0x81, 0x73, 0xd4, 0xc7, 0xd6, + 0x7e, 0xb0, 0x37, 0x3f, 0x20, 0x0c, 0xdb, 0x98, 0xe1, 0xb9, 0x80, 0xfa, 0xcc, 0x47, 0x55, 0xcb, + 0xb7, 0xee, 0x0a, 0xdb, 0x9c, 0x64, 0xd4, 0xeb, 0x43, 0xe6, 0xb8, 0xf3, 0x43, 0x8f, 0x92, 0xd0, + 0x77, 0x0f, 0x88, 0x6d, 0x62, 0xdb, 0xa6, 0x11, 0xbd, 0x5e, 0x13, 0xb6, 0x7d, 0xd7, 0x9a, 0x67, + 0xce, 0x80, 0x84, 0x0c, 0x0f, 0x02, 0x69, 0x39, 0xd3, 0xf7, 0xfb, 0xbe, 0xf8, 0x9c, 0xe7, 0x5f, + 0x11, 0xda, 0xfe, 0x18, 0x60, 0x85, 0x31, 0xea, 0xec, 0x0d, 0x19, 0x09, 0xd1, 0x7b, 0x90, 0xc7, + 0x8c, 0xd1, 0xb0, 0xa6, 0xb5, 0x72, 0xb3, 0xa5, 0xce, 0xd9, 0x3f, 0x0f, 0x9b, 0xd5, 0x11, 0x1e, + 0xb8, 0xcb, 0x6d, 0x01, 0xbf, 0xff, 0xa5, 0xeb, 0xdf, 0x6f, 0x1b, 0x11, 0x67, 0x59, 0xff, 0xe9, + 0x61, 0x33, 0xd3, 0xfe, 0x46, 0x83, 0xaa, 0x41, 0x02, 0xd7, 0xb1, 0x30, 0x73, 0x7c, 0xaf, 0x87, + 0x69, 0x9f, 0x30, 0x74, 0x19, 0x0a, 0x9e, 0x6f, 0x13, 0xd3, 0xb1, 0x6b, 0x5a, 0x4b, 0x9b, 0xcd, + 0x77, 0x6a, 0x8f, 0x0e, 0x9b, 0x99, 0xa3, 0xc3, 0xe6, 0xc4, 0x96, 0x6f, 0x93, 0xee, 0xda, 0xf3, + 0xf8, 0xcb, 0x98, 0xe0, 0xc4, 0xae, 0x8d, 0x96, 0xa0, 0x18, 0x32, 0x9f, 0x0a, 0x4d, 0x56, 0x68, + 0xea, 0x52, 0x53, 0xd8, 0xe5, 0xb8, 0x10, 0xa9, 0x4f, 0xa3, 0x20, 0xb8, 0x5d, 0x7b, 0xb9, 0xc8, + 0xa3, 0xf8, 0xe3, 0x61, 0x53, 0x6b, 0xff, 0x95, 0x44, 0xb2, 0x46, 0x42, 0x8b, 0x3a, 0x01, 0xf3, + 0xe9, 0xff, 0x17, 0x09, 0xba, 0x0e, 0x40, 0xa3, 0xbf, 0xe7, 0xc2, 0x9c, 0x10, 0x36, 0xa4, 0xb0, + 0x24, 0x03, 0x13, 0xd2, 0xe4, 0x87, 0x51, 0x92, 0x8a, 0xae, 0x8d, 0x16, 0x41, 0x67, 0xa3, 0x80, + 0xd4, 0xf4, 0x96, 0x36, 0x3b, 0xbd, 0xd8, 0x98, 0x7b, 0xe1, 0xde, 0xe7, 0xa4, 0xac, 0x37, 0x0a, + 0x88, 0x21, 0xb8, 0xcb, 0x93, 0xfc, 0xf0, 0xbf, 0x3d, 0x6c, 0x6a, 0x22, 0x01, 0xdf, 0x69, 0x30, + 0xa9, 0x5c, 0xdb, 0xc4, 0x63, 0xfc, 0x20, 0x14, 0x7b, 0xfd, 0xf8, 0xf0, 0xb9, 0xe4, 0x20, 0x06, + 0xc7, 0xa3, 0x83, 0xc8, 0x4f, 0xa3, 0x20, 0xb8, 0x5d, 0x1b, 0xad, 0x41, 0x41, 0x86, 0x25, 0x8e, + 0x5f, 0x5e, 0x7c, 0xe7, 0xe5, 0xc1, 0x24, 0x99, 0xee, 0xe8, 0xdc, 0xb7, 0xa1, 0xa4, 0xed, 0x27, + 0x39, 0x98, 0x11, 0xae, 0x53, 0x97, 0x71, 0xca, 0x80, 0x2e, 0x40, 0x29, 0x64, 0x98, 0x32, 0xf3, + 0x2e, 0x19, 0x89, 0x90, 0x26, 0x3b, 0xc5, 0xe7, 0x87, 0x4d, 0xdd, 0xb8, 0x45, 0x46, 0x46, 0x51, + 0x98, 0x6e, 0x91, 0x11, 0x3a, 0x0f, 0x05, 0xe2, 0xd9, 0x82, 0x94, 0x3b, 0x46, 0x9a, 0x20, 0x9e, + 0xcd, 0x29, 0x9f, 0x43, 0xd5, 0xf1, 0x18, 0xa1, 0x1e, 0x76, 0x4d, 0x19, 0x68, 0x58, 0xd3, 0x5b, + 0xb9, 0xd7, 0x3c, 0x64, 0x45, 0x39, 0x91, 0x84, 0x10, 0x7d, 0x0a, 0x33, 0x1e, 0x79, 0xc0, 0xcc, + 0x54, 0x05, 0xe4, 0x45, 0x05, 0xb4, 0xe5, 0x01, 0xa7, 0xb6, 0xc8, 0x03, 0xf6, 0x92, 0x2a, 0x98, + 0xf2, 0x52, 0x36, 0x1b, 0x35, 0x00, 0xfa, 0xc4, 0x23, 0x54, 0x34, 0x54, 0x6d, 0x82, 0xe7, 0xc9, + 0x48, 0x21, 0xe8, 0x43, 0x80, 0x90, 0x39, 0xd6, 0xdd, 0x91, 0xb9, 0xe7, 0xb0, 0x5a, 0x41, 0x5c, + 0xd1, 0x5b, 0xa9, 0xe8, 0xf9, 0x08, 0x98, 0xdb, 0x77, 0xad, 0xb9, 0x9e, 0x1a, 0x01, 0x46, 0x29, + 0x12, 0x74, 0x1c, 0x86, 0xae, 0xc0, 0xd9, 0xc4, 0x97, 0x69, 0xf9, 0x83, 0x00, 0x53, 0xbc, 0xe7, + 0x92, 0x5a, 0xb1, 0xa5, 0xcd, 0x16, 0x8d, 0x33, 0x89, 0x71, 0x35, 0xb6, 0x1d, 0x2b, 0xb4, 0x5f, + 0x34, 0x28, 0xef, 0x10, 0x6a, 0x11, 0x8f, 0x39, 0x2e, 0x09, 0xd1, 0x39, 0xc8, 0x05, 0x97, 0x17, + 0xc4, 0x8d, 0x6a, 0x32, 0x43, 0x1c, 0x10, 0xf8, 0xe2, 0x92, 0xb8, 0xb1, 0x04, 0x5f, 0x5c, 0x12, + 0xf8, 0xd2, 0x82, 0xb8, 0xa4, 0x04, 0x5f, 0x8a, 0xf8, 0x57, 0x97, 0x44, 0x07, 0x24, 0xf8, 0xd5, + 0x88, 0x7f, 0x6d, 0x41, 0x24, 0x34, 0xc1, 0xaf, 0x2d, 0xa0, 0x1a, 0xe8, 0xc1, 0x26, 0x7e, 0x20, + 0x52, 0xa4, 0x0c, 0x02, 0x91, 0xb3, 0xe9, 0x79, 0x0e, 0xa6, 0x44, 0x9b, 0xae, 0xe2, 0x00, 0x5b, + 0x0e, 0x1b, 0xa1, 0x16, 0x14, 0x2d, 0xf9, 0x2d, 0x0b, 0x30, 0x52, 0xc5, 0x28, 0x6a, 0x43, 0x09, + 0x1f, 0x60, 0xc7, 0x15, 0x29, 0xc9, 0xa6, 0x28, 0x09, 0x8c, 0x2e, 0x40, 0x39, 0x2a, 0x63, 0xcb, + 0x1f, 0x7a, 0x4c, 0xb6, 0x7a, 0xc4, 0x02, 0x61, 0x58, 0xe5, 0x38, 0xa7, 0xb9, 0x04, 0x87, 0x8a, + 0xa6, 0xa7, 0x69, 0xc2, 0x10, 0xd1, 0x16, 0xa0, 0x7a, 0x9f, 0x3a, 0x8c, 0x84, 0x66, 0x40, 0xa8, + 0x19, 0x12, 0xcb, 0xf7, 0xec, 0xb1, 0xb3, 0xce, 0x44, 0xe6, 0x1d, 0x42, 0x77, 0x85, 0x11, 0xed, + 0x40, 0x75, 0x6f, 0xa4, 0x04, 0xaa, 0x55, 0x27, 0x44, 0x1d, 0x9c, 0x34, 0x37, 0x52, 0x57, 0xa5, + 0x3c, 0x0a, 0xf9, 0x0e, 0xa1, 0xb2, 0xe8, 0x90, 0x01, 0x28, 0x15, 0x83, 0x72, 0x59, 0x78, 0x0d, + 0x97, 0x95, 0x38, 0x48, 0xe5, 0xb3, 0x06, 0xfa, 0x30, 0x24, 0xb6, 0xa8, 0x2b, 0x95, 0x44, 0x81, + 0xa0, 0x8b, 0x30, 0xe5, 0xfa, 0x7d, 0xc7, 0xc2, 0xae, 0x29, 0x02, 0xa9, 0x95, 0x52, 0x94, 0x49, + 0x69, 0xea, 0x70, 0x0b, 0x5a, 0x04, 0x74, 0x6f, 0x48, 0xa8, 0x33, 0x9e, 0x1d, 0x48, 0x65, 0xa7, + 0x22, 0xed, 0x71, 0x7a, 0xe4, 0xe5, 0x3f, 0xd5, 0x61, 0x9a, 0x0f, 0xf6, 0xff, 0xb6, 0x0b, 0x3e, + 0x82, 0x02, 0xdf, 0xae, 0x24, 0x0c, 0xe5, 0x2c, 0x6c, 0x1c, 0x6f, 0xb4, 0xdb, 0xf1, 0x1e, 0x5e, + 0xb1, 0xed, 0x78, 0x0a, 0x4a, 0x11, 0xba, 0xa6, 0x36, 0x6a, 0xee, 0x85, 0x36, 0x55, 0xb9, 0x4c, + 0xf6, 0xaf, 0x14, 0x47, 0x0a, 0x74, 0x1d, 0x8a, 0xae, 0x6f, 0x61, 0x97, 0xd7, 0xaa, 0x2e, 0xd4, + 0x6f, 0x9e, 0xa0, 0xde, 0x90, 0x14, 0x55, 0xc8, 0x4a, 0x82, 0x6e, 0xc0, 0xd4, 0x2e, 0xa1, 0x07, + 0x84, 0xde, 0x21, 0x34, 0xe4, 0x83, 0x24, 0x2f, 0x7c, 0xd4, 0x4f, 0xf0, 0x21, 0x19, 0xd2, 0xc5, + 0xb8, 0x0c, 0x9d, 0x87, 0xd2, 0xde, 0xd0, 0x71, 0x6d, 0x93, 0xe1, 0xbe, 0x28, 0xb2, 0x92, 0xfa, + 0x2b, 0x01, 0xf7, 0x70, 0x1f, 0xbd, 0xcd, 0x07, 0x12, 0xa6, 0x8c, 0x3f, 0x45, 0xa2, 0x81, 0x14, + 0x37, 0x8d, 0xc4, 0x57, 0x18, 0xda, 0x85, 0x8a, 0x8a, 0xcd, 0x54, 0x29, 0x2d, 0x8a, 0xc9, 0xdb, + 0xfe, 0x87, 0x63, 0xad, 0x44, 0x4c, 0x55, 0xb7, 0xee, 0x38, 0x8c, 0xde, 0x85, 0x49, 0xcb, 0x1d, + 0x86, 0x8c, 0x50, 0xd3, 0xc3, 0x03, 0x22, 0x0a, 0x49, 0xc5, 0x57, 0x96, 0x96, 0x2d, 0x3c, 0x20, + 0x68, 0x17, 0xca, 0xe1, 0x3d, 0x37, 0xfe, 0x63, 0x78, 0xa5, 0xbb, 0x44, 0xb2, 0x3c, 0x60, 0xf7, + 0xb3, 0x0d, 0xf9, 0x8f, 0x06, 0x84, 0xf7, 0x5c, 0xf9, 0xdd, 0xfe, 0x51, 0x83, 0x99, 0x63, 0x81, + 0xa6, 0x0b, 0x46, 0x3b, 0x4d, 0xc1, 0x74, 0x78, 0x6f, 0xc8, 0x34, 0x31, 0x87, 0x50, 0x59, 0x76, + 0x6f, 0x9c, 0x90, 0xa3, 0x9e, 0x43, 0x68, 0xd2, 0x34, 0x91, 0x86, 0x63, 0xed, 0xaf, 0xb3, 0x30, + 0x23, 0xe6, 0xde, 0xf8, 0xea, 0x8d, 0x1f, 0x35, 0xda, 0xab, 0x3f, 0x6a, 0xe2, 0xfa, 0xcd, 0xbe, + 0x76, 0xfd, 0x7e, 0x00, 0x3a, 0x6f, 0x22, 0x59, 0xf9, 0xe7, 0x4f, 0x50, 0x8e, 0xb7, 0xa7, 0x1a, + 0x11, 0x5c, 0x84, 0x3a, 0xa9, 0x41, 0x1d, 0x15, 0x7f, 0xeb, 0x04, 0x07, 0x63, 0xc3, 0xfd, 0xf8, + 0x28, 0x6f, 0x7f, 0xaf, 0x41, 0x55, 0xa6, 0x01, 0xdb, 0xf1, 0xa6, 0x3e, 0x65, 0x22, 0x56, 0xa0, + 0x18, 0x3f, 0x18, 0xb2, 0xa2, 0x6c, 0x9b, 0x2f, 0x7f, 0x30, 0x88, 0xe7, 0x97, 0x8a, 0x47, 0xc9, + 0xda, 0xeb, 0x50, 0x54, 0xd5, 0x82, 0xae, 0x40, 0x9e, 0xdf, 0x6e, 0xf4, 0xd2, 0xfe, 0xd7, 0xeb, + 0x8d, 0xb8, 0x72, 0xb0, 0x7d, 0x02, 0x3a, 0x37, 0xf1, 0xad, 0xc8, 0x9f, 0x3a, 0x5a, 0xaa, 0xe4, + 0x39, 0x80, 0xea, 0x90, 0x3f, 0xc0, 0xee, 0x30, 0xda, 0x5e, 0xca, 0x12, 0x41, 0xd2, 0xc3, 0xaf, + 0x1a, 0x14, 0x54, 0x7b, 0x5f, 0x82, 0xd2, 0x00, 0x7f, 0xe5, 0x53, 0xf3, 0x00, 0xbb, 0x32, 0x1f, + 0x53, 0x32, 0x1f, 0xf9, 0x4d, 0x6e, 0x30, 0x8a, 0xc2, 0x7e, 0x07, 0xbb, 0x82, 0xeb, 0x78, 0x92, + 0x9b, 0x3d, 0xc6, 0xe5, 0x06, 0xa3, 0x28, 0xec, 0x9c, 0x5b, 0x87, 0x7c, 0x80, 0x99, 0xb5, 0x3f, + 0xb6, 0x1d, 0x23, 0x88, 0x6f, 0xe1, 0xa1, 0x17, 0x32, 0xb1, 0x62, 0xd3, 0x5b, 0x31, 0x46, 0x93, + 0x57, 0xfd, 0x25, 0x17, 0xca, 0xa9, 0x77, 0x2f, 0x9a, 0x06, 0xb8, 0xb3, 0xdd, 0x5b, 0x37, 0xcc, + 0x1b, 0xb7, 0x37, 0x36, 0x2a, 0x19, 0x84, 0x60, 0x3a, 0xfa, 0xdd, 0xdd, 0x5a, 0xdd, 0xde, 0xec, + 0x6e, 0xdd, 0xac, 0x64, 0x13, 0x6c, 0xfb, 0x76, 0xef, 0xe6, 0x36, 0xc7, 0x72, 0x09, 0xb6, 0xb6, + 0xbe, 0xb9, 0xdd, 0xe3, 0x98, 0x8e, 0xca, 0x50, 0xd8, 0x58, 0x5f, 0x31, 0xb6, 0xd6, 0x8d, 0x8a, + 0x56, 0xd7, 0xbf, 0xfd, 0xb9, 0x91, 0xe9, 0x5c, 0x7c, 0xf4, 0x7b, 0x23, 0xf3, 0xe8, 0xa8, 0xa1, + 0x3d, 0x3e, 0x6a, 0x68, 0x4f, 0x8e, 0x1a, 0xda, 0xd3, 0xa3, 0x86, 0xf6, 0xc3, 0xb3, 0x46, 0xe6, + 0xf1, 0xb3, 0x46, 0xe6, 0xc9, 0xb3, 0x46, 0xe6, 0x8b, 0x82, 0xbc, 0x9e, 0xbf, 0x03, 0x00, 0x00, + 0xff, 0xff, 0x78, 0xaa, 0x89, 0xaf, 0xb1, 0x0d, 0x00, 0x00, } diff --git a/pkg/roachpb/metadata.proto b/pkg/roachpb/metadata.proto index 50aa7c079aca..97aef04dd4bd 100644 --- a/pkg/roachpb/metadata.proto +++ b/pkg/roachpb/metadata.proto @@ -372,6 +372,7 @@ message Tier { message Version { option (gogoproto.goproto_stringer) = false; + option (gogoproto.equal) = true; // The names "major" and "minor" are reserved in C in // some platforms (e.g. FreeBSD). diff --git a/pkg/roachpb/method.go b/pkg/roachpb/method.go index 7b6677891797..5115d9953048 100644 --- a/pkg/roachpb/method.go +++ b/pkg/roachpb/method.go @@ -155,4 +155,7 @@ const ( // VerifyProtectedTimestamp determines whether the specified protection record // will be respected by this Range. AdminVerifyProtectedTimestamp + // Migrate proactively forces a range to transition out of any legacy + // modes of operation. + Migrate ) diff --git a/pkg/roachpb/method_string.go b/pkg/roachpb/method_string.go index b97c3b77255c..b773f58b3681 100644 --- a/pkg/roachpb/method_string.go +++ b/pkg/roachpb/method_string.go @@ -52,11 +52,12 @@ func _() { _ = x[Subsume-41] _ = x[RangeStats-42] _ = x[AdminVerifyProtectedTimestamp-43] + _ = x[Migrate-44] } -const _Method_name = "GetPutConditionalPutIncrementDeleteDeleteRangeClearRangeRevertRangeScanReverseScanEndTxnAdminSplitAdminUnsplitAdminMergeAdminTransferLeaseAdminChangeReplicasAdminRelocateRangeHeartbeatTxnGCPushTxnRecoverTxnQueryTxnQueryIntentResolveIntentResolveIntentRangeMergeTruncateLogRequestLeaseTransferLeaseLeaseInfoComputeChecksumCheckConsistencyInitPutWriteBatchExportImportAdminScatterAddSSTableRecomputeStatsRefreshRefreshRangeSubsumeRangeStatsAdminVerifyProtectedTimestamp" +const _Method_name = "GetPutConditionalPutIncrementDeleteDeleteRangeClearRangeRevertRangeScanReverseScanEndTxnAdminSplitAdminUnsplitAdminMergeAdminTransferLeaseAdminChangeReplicasAdminRelocateRangeHeartbeatTxnGCPushTxnRecoverTxnQueryTxnQueryIntentResolveIntentResolveIntentRangeMergeTruncateLogRequestLeaseTransferLeaseLeaseInfoComputeChecksumCheckConsistencyInitPutWriteBatchExportImportAdminScatterAddSSTableRecomputeStatsRefreshRefreshRangeSubsumeRangeStatsAdminVerifyProtectedTimestampMigrate" -var _Method_index = [...]uint16{0, 3, 6, 20, 29, 35, 46, 56, 67, 71, 82, 88, 98, 110, 120, 138, 157, 175, 187, 189, 196, 206, 214, 225, 238, 256, 261, 272, 284, 297, 306, 321, 337, 344, 354, 360, 366, 378, 388, 402, 409, 421, 428, 438, 467} +var _Method_index = [...]uint16{0, 3, 6, 20, 29, 35, 46, 56, 67, 71, 82, 88, 98, 110, 120, 138, 157, 175, 187, 189, 196, 206, 214, 225, 238, 256, 261, 272, 284, 297, 306, 321, 337, 344, 354, 360, 366, 378, 388, 402, 409, 421, 428, 438, 467, 474} func (i Method) String() string { if i < 0 || i >= Method(len(_Method_index)-1) { diff --git a/pkg/server/node.go b/pkg/server/node.go index 1730fd8b2b59..ddcb1e50c56a 100644 --- a/pkg/server/node.go +++ b/pkg/server/node.go @@ -217,6 +217,7 @@ func bootstrapCluster( bootstrapVersion cluster.ClusterVersion, defaultZoneConfig *zonepb.ZoneConfig, defaultSystemZoneConfig *zonepb.ZoneConfig, + knobs base.TestingKnobs, ) (uuid.UUID, error) { clusterID := uuid.MakeV4() // TODO(andrei): It'd be cool if this method wouldn't do anything to engines @@ -245,10 +246,14 @@ func bootstrapCluster( return splits[i].Less(splits[j]) }) + var storeKnobs storage.StoreTestingKnobs + if kn, ok := knobs.Store.(*storage.StoreTestingKnobs); ok { + storeKnobs = *kn + } if err := storage.WriteInitialClusterData( ctx, eng, initialValues, bootstrapVersion.Version, len(engines), splits, - hlc.UnixNano(), + hlc.UnixNano(), storeKnobs, ); err != nil { return uuid.UUID{}, err } @@ -320,12 +325,13 @@ func (n *Node) bootstrapCluster( bootstrapVersion cluster.ClusterVersion, defaultZoneConfig *zonepb.ZoneConfig, defaultSystemZoneConfig *zonepb.ZoneConfig, + knobs base.TestingKnobs, ) error { if n.initialBoot || n.clusterID.Get() != uuid.Nil { return fmt.Errorf("cluster has already been initialized with ID %s", n.clusterID.Get()) } n.initialBoot = true - clusterID, err := bootstrapCluster(ctx, engines, bootstrapVersion, defaultZoneConfig, defaultSystemZoneConfig) + clusterID, err := bootstrapCluster(ctx, engines, bootstrapVersion, defaultZoneConfig, defaultSystemZoneConfig, knobs) if err != nil { return err } diff --git a/pkg/server/node_test.go b/pkg/server/node_test.go index dc660ff8d6f1..97f65387f143 100644 --- a/pkg/server/node_test.go +++ b/pkg/server/node_test.go @@ -210,7 +210,7 @@ func TestBootstrapCluster(t *testing.T) { e := engine.NewDefaultInMem() defer e.Close() if _, err := bootstrapCluster( - ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), + ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), base.TestingKnobs{}, ); err != nil { t.Fatal(err) } @@ -265,7 +265,7 @@ func TestBootstrapNewStore(t *testing.T) { ctx := context.Background() e := engine.NewDefaultInMem() if _, err := bootstrapCluster( - ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), + ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), base.TestingKnobs{}, ); err != nil { t.Fatal(err) } @@ -320,7 +320,7 @@ func TestNodeJoin(t *testing.T) { engineStopper.AddCloser(e) if _, err := bootstrapCluster( - ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), + ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), base.TestingKnobs{}, ); err != nil { t.Fatal(err) } @@ -391,7 +391,7 @@ func TestCorruptedClusterID(t *testing.T) { defer e.Close() if _, err := bootstrapCluster( - ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), + ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), base.TestingKnobs{}, ); err != nil { t.Fatal(err) } @@ -737,7 +737,7 @@ func TestStartNodeWithLocality(t *testing.T) { e := engine.NewDefaultInMem() defer e.Close() if _, err := bootstrapCluster( - ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), + ctx, []engine.Engine{e}, cluster.TestingClusterVersion, zonepb.DefaultZoneConfigRef(), zonepb.DefaultSystemZoneConfigRef(), base.TestingKnobs{}, ); err != nil { t.Fatal(err) } diff --git a/pkg/server/server.go b/pkg/server/server.go index 21f0961b1511..aa6fd565e723 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -705,6 +705,19 @@ func NewServer(cfg Config, stopper *stop.Stopper) (*Server, error) { LeaseHolderCache: s.distSender.LeaseHolderCache(), RoleMemberCache: &sql.MembershipCache{}, TestingKnobs: sqlExecutorTestingKnobs, + VersionUpgradeHook: func(ctx context.Context, newV roachpb.Version) error { + if !cluster.Version.ActiveVersionOrEmpty(ctx, s.st).Less(newV) { + return nil + } + var b client.Batch + req := roachpb.MigrateRequest{NewVersion: newV} + req.Key = keys.LocalMax + req.EndKey = keys.MaxKey + b.AddRawRequest(&req) + // TODO(tbg): make sure all stores have synced once to persist any + // raft command applications. + return errors.Wrap(s.db.Run(ctx, &b), "while preparing version upgrade") + }, DistSQLPlanner: sql.NewDistSQLPlanner( ctx, @@ -1965,7 +1978,7 @@ func (s *Server) bootstrapVersion() roachpb.Version { func (s *Server) bootstrapCluster(ctx context.Context, bootstrapVersion roachpb.Version) error { if err := s.node.bootstrapCluster( ctx, s.engines, cluster.ClusterVersion{Version: bootstrapVersion}, - &s.cfg.DefaultZoneConfig, &s.cfg.DefaultSystemZoneConfig, + &s.cfg.DefaultZoneConfig, &s.cfg.DefaultSystemZoneConfig, s.cfg.TestingKnobs, ); err != nil { return err } diff --git a/pkg/settings/cluster/cluster_version.pb.go b/pkg/settings/cluster/cluster_version.pb.go index 1cdb2658d2fe..b495d11590c0 100644 --- a/pkg/settings/cluster/cluster_version.pb.go +++ b/pkg/settings/cluster/cluster_version.pb.go @@ -33,7 +33,7 @@ type ClusterVersion struct { func (m *ClusterVersion) Reset() { *m = ClusterVersion{} } func (*ClusterVersion) ProtoMessage() {} func (*ClusterVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_version_6bb8528e3c56dcd8, []int{0} + return fileDescriptor_cluster_version_1a87f7a250e99286, []int{0} } func (m *ClusterVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -61,6 +61,30 @@ var xxx_messageInfo_ClusterVersion proto.InternalMessageInfo func init() { proto.RegisterType((*ClusterVersion)(nil), "cockroach.base.ClusterVersion") } +func (this *ClusterVersion) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ClusterVersion) + if !ok { + that2, ok := that.(ClusterVersion) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Version.Equal(&that1.Version) { + return false + } + return true +} func (m *ClusterVersion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -306,23 +330,23 @@ var ( ) func init() { - proto.RegisterFile("settings/cluster/cluster_version.proto", fileDescriptor_cluster_version_6bb8528e3c56dcd8) + proto.RegisterFile("settings/cluster/cluster_version.proto", fileDescriptor_cluster_version_1a87f7a250e99286) } -var fileDescriptor_cluster_version_6bb8528e3c56dcd8 = []byte{ - // 216 bytes of a gzipped FileDescriptorProto +var fileDescriptor_cluster_version_1a87f7a250e99286 = []byte{ + // 220 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2b, 0x4e, 0x2d, 0x29, 0xc9, 0xcc, 0x4b, 0x2f, 0xd6, 0x4f, 0xce, 0x29, 0x2d, 0x2e, 0x49, 0x2d, 0x82, 0xd1, 0xf1, 0x65, 0xa9, 0x45, 0xc5, 0x99, 0xf9, 0x79, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x7c, 0xc9, 0xf9, 0xc9, 0xd9, 0x45, 0xf9, 0x89, 0xc9, 0x19, 0x7a, 0x49, 0x89, 0xc5, 0xa9, 0x52, 0x62, 0x60, 0x76, 0x41, 0x92, 0x7e, 0x6e, 0x6a, 0x49, 0x62, 0x4a, 0x62, 0x49, 0x22, 0x44, 0x9d, 0x94, 0x48, 0x7a, - 0x7e, 0x7a, 0x3e, 0x98, 0xa9, 0x0f, 0x62, 0x41, 0x44, 0x95, 0x32, 0xb9, 0xf8, 0x9c, 0x21, 0xc6, + 0x7e, 0x7a, 0x3e, 0x98, 0xa9, 0x0f, 0x62, 0x41, 0x44, 0x95, 0x72, 0xb9, 0xf8, 0x9c, 0x21, 0xc6, 0x86, 0x41, 0x4c, 0x15, 0xf2, 0xe6, 0xe2, 0x4b, 0x4c, 0x2e, 0xc9, 0x2c, 0x4b, 0x85, 0xd9, 0x23, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xa5, 0x87, 0xb0, 0x08, 0x6a, 0x85, 0x1e, 0x54, 0x8f, 0x13, 0xc7, 0x89, 0x7b, 0xf2, 0x0c, 0x17, 0xee, 0xc9, 0x33, 0x06, 0xf1, 0x42, 0xf4, 0x42, 0x25, - 0xac, 0x58, 0x66, 0x2c, 0x90, 0x67, 0xf0, 0x62, 0xe1, 0x60, 0x14, 0x60, 0x72, 0xd2, 0x3c, 0xf1, - 0x50, 0x8e, 0xe1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x6f, 0x3c, 0x92, 0x63, 0x7c, - 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, - 0x88, 0x62, 0x87, 0xfa, 0x30, 0x89, 0x0d, 0xec, 0x38, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x45, 0xdc, 0x17, 0x61, 0x04, 0x01, 0x00, 0x00, + 0xac, 0x38, 0x66, 0x2c, 0x90, 0x67, 0x78, 0xb1, 0x40, 0x9e, 0xd1, 0x8b, 0x85, 0x83, 0x51, 0x80, + 0xc9, 0x49, 0xf3, 0xc4, 0x43, 0x39, 0x86, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0xbc, + 0xf1, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, + 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x8a, 0x1d, 0xea, 0xcb, 0x24, 0x36, 0xb0, 0x03, 0x8d, 0x01, 0x01, + 0x00, 0x00, 0xff, 0xff, 0xbe, 0x03, 0x0b, 0x04, 0x08, 0x01, 0x00, 0x00, } diff --git a/pkg/settings/cluster/cluster_version.proto b/pkg/settings/cluster/cluster_version.proto index 9353a01cd8aa..e68a285d1bc6 100644 --- a/pkg/settings/cluster/cluster_version.proto +++ b/pkg/settings/cluster/cluster_version.proto @@ -20,6 +20,7 @@ import "gogoproto/gogo.proto"; // particular migration is to be considered enabled or disabled. message ClusterVersion { option (gogoproto.goproto_stringer) = false; + option (gogoproto.equal) = true; reserved 1; // The version of functionality in use in the cluster. This value must diff --git a/pkg/settings/cluster/cockroach_versions.go b/pkg/settings/cluster/cockroach_versions.go index f2a085318479..a9c6340f4fe4 100644 --- a/pkg/settings/cluster/cockroach_versions.go +++ b/pkg/settings/cluster/cockroach_versions.go @@ -54,8 +54,10 @@ const ( VersionPrimaryKeyChanges VersionAuthLocalAndTrustRejectMethods VersionPrimaryKeyColumnsOutOfFamilyZero + VersionNoLegacyTruncatedAndAppliedState // Add new versions here (step one of two). + ) // versionsSingleton lists all historical versions here in chronological order, @@ -377,6 +379,16 @@ var versionsSingleton = keyedVersions([]keyedVersion{ Version: roachpb.Version{Major: 19, Minor: 2, Unstable: 9}, }, + { + // VersionNoLegacyTruncatedAndAppliedState does not enable any new + // functionality, but we know that once it is active, the truncated + // state of all ranges in the cluster is unreplicated, and we are using + // the RangeAppliedState for all ranges as well. This means that in the + // 20.2 cycle we are free to remove any holdover code handling their + // predecessors. + Key: VersionNoLegacyTruncatedAndAppliedState, + Version: roachpb.Version{Major: 19, Minor: 2, Unstable: 10}, + }, // Add new versions here (step two of two). }) diff --git a/pkg/sql/exec_util.go b/pkg/sql/exec_util.go index d195e6bc870d..1b9b6b133de5 100644 --- a/pkg/sql/exec_util.go +++ b/pkg/sql/exec_util.go @@ -552,6 +552,12 @@ type ExecutorConfig struct { // Role membership cache. RoleMemberCache *MembershipCache + + // VersionUpgradeHook is called after validating a `SET CLUSTER SETTING + // version` but before executing it. It can carry out certain kinds of + // short-running migrations that allow us to eventually remove legacy + // code. + VersionUpgradeHook func(ctx context.Context, newV roachpb.Version) error } // Organization returns the value of cluster.organization. diff --git a/pkg/sql/set_cluster_setting.go b/pkg/sql/set_cluster_setting.go index c9c711e1e258..f0969adda18b 100644 --- a/pkg/sql/set_cluster_setting.go +++ b/pkg/sql/set_cluster_setting.go @@ -17,6 +17,7 @@ import ( "time" "github.com/cockroachdb/cockroach/pkg/internal/client" + "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/server/telemetry" "github.com/cockroachdb/cockroach/pkg/settings" "github.com/cockroachdb/cockroach/pkg/settings/cluster" @@ -37,6 +38,8 @@ type setClusterSettingNode struct { setting settings.WritableSetting // If value is nil, the setting should be reset. value tree.TypedExpr + + upgradeHook func(ctx context.Context, newV roachpb.Version) error } // SetClusterSetting sets session variables. @@ -98,7 +101,7 @@ func (p *planner) SetClusterSetting( } } - return &setClusterSettingNode{name: name, st: st, setting: setting, value: value}, nil + return &setClusterSettingNode{name: name, st: st, setting: setting, value: value, upgradeHook: p.execCfg.VersionUpgradeHook}, nil } func (n *setClusterSettingNode) startExec(params runParams) error { @@ -126,7 +129,9 @@ func (n *setClusterSettingNode) startExec(params runParams) error { } reportedValue = tree.AsStringWithFlags(value, tree.FmtBareStrings) var prev tree.Datum - if _, ok := n.setting.(*settings.StateMachineSetting); ok { + + _, isSetVersion := n.setting.(*settings.StateMachineSetting) + if isSetVersion { datums, err := execCfg.InternalExecutor.QueryRow( ctx, "retrieve-prev-setting", txn, "SELECT value FROM system.settings WHERE name = $1", n.name, ) @@ -147,6 +152,17 @@ func (n *setClusterSettingNode) startExec(params runParams) error { if err != nil { return err } + + if isSetVersion { + // toSettingString already validated the input and that we are + // allowed to transition. + s := string(*value.(*tree.DString)) + newV := roachpb.MustParseVersion(s) + if err := n.upgradeHook(ctx, newV); err != nil { + return err + } + } + if _, err = execCfg.InternalExecutor.Exec( ctx, "update-setting", txn, `UPSERT INTO system.settings (name, value, "lastUpdated", "valueType") VALUES ($1, $2, now(), $3)`, diff --git a/pkg/storage/batcheval/cmd_migrate.go b/pkg/storage/batcheval/cmd_migrate.go new file mode 100644 index 000000000000..49c92a3ff2b6 --- /dev/null +++ b/pkg/storage/batcheval/cmd_migrate.go @@ -0,0 +1,78 @@ +// Copyright 2014 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package batcheval + +import ( + "context" + + "github.com/cockroachdb/cockroach/pkg/keys" + "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/settings/cluster" + "github.com/cockroachdb/cockroach/pkg/storage/batcheval/result" + "github.com/cockroachdb/cockroach/pkg/storage/engine" + "github.com/cockroachdb/cockroach/pkg/storage/spanset" + "github.com/cockroachdb/cockroach/pkg/storage/storagepb" + "github.com/cockroachdb/cockroach/pkg/util/hlc" +) + +func init() { + RegisterReadWriteCommand(roachpb.Migrate, declareKeysMigrate, Migrate) +} + +func declareKeysMigrate( + _ *roachpb.RangeDescriptor, header roachpb.Header, req roachpb.Request, spans *spanset.SpanSet, +) { + spans.AddNonMVCC(spanset.SpanReadWrite, roachpb.Span{Key: keys.RaftTruncatedStateLegacyKey(header.RangeID)}) +} + +// Migrate ensures that the range proactively carries out any outstanding +// below-Raft migrations. When this command returns, all of the below-Raft +// features known to be available are enabled. +func Migrate( + ctx context.Context, batch engine.ReadWriter, cArgs CommandArgs, resp roachpb.Response, +) (result.Result, error) { + newV := cArgs.Args.(*roachpb.MigrateRequest).NewVersion + if newV.Less(cluster.VersionByKey(cluster.VersionNoLegacyTruncatedAndAppliedState)) { + // This is only hit during testing or when upgrading an alpha to an unstable below + // the above version. In production, newV will be a major release and more precisely, + // it will equal the BinaryServerVersion of any binary in the cluster (they are all + // equal when the cluster version is bumped, mod pathological races due to user error). + return result.Result{}, nil + } + + var legacyTruncatedState roachpb.RaftTruncatedState + legacyKeyFound, err := engine.MVCCGetProto( + ctx, batch, keys.RaftTruncatedStateLegacyKey(cArgs.EvalCtx.GetRangeID()), + hlc.Timestamp{}, &legacyTruncatedState, engine.MVCCGetOptions{}, + ) + if err != nil { + return result.Result{}, err + } + + var pd result.Result + if legacyKeyFound { + // Time to migrate by deleting the legacy key. The downstream-of-Raft + // code will atomically rewrite the truncated state (supplied via the + // side effect) into the new unreplicated key. + if err := engine.MVCCDelete( + ctx, batch, cArgs.Stats, keys.RaftTruncatedStateLegacyKey(cArgs.EvalCtx.GetRangeID()), + hlc.Timestamp{}, nil, /* txn */ + ); err != nil { + return result.Result{}, err + } + pd.Replicated.State = &storagepb.ReplicaState{ + // We need to pass in a truncated state to enable the migration. + // Passing the same one is the easiest thing to do. + TruncatedState: &legacyTruncatedState, + } + } + return pd, nil +} diff --git a/pkg/storage/below_raft_protos_test.go b/pkg/storage/below_raft_protos_test.go index d9936094b95d..f7b8da48d5ec 100644 --- a/pkg/storage/below_raft_protos_test.go +++ b/pkg/storage/below_raft_protos_test.go @@ -62,6 +62,13 @@ var belowRaftGoldenProtos = map[reflect.Type]fixture{ emptySum: 7551962144604783939, populatedSum: 12720006657210437557, }, + reflect.TypeOf(&enginepb.MVCCStats{}): { + populatedConstructor: func(r *rand.Rand) protoutil.Message { + return enginepb.NewPopulatedMVCCStats(r, false) + }, + emptySum: 18064891702890239528, + populatedSum: 4476106263917291130, + }, reflect.TypeOf(&enginepb.RangeAppliedState{}): { populatedConstructor: func(r *rand.Rand) protoutil.Message { return enginepb.NewPopulatedRangeAppliedState(r, false) diff --git a/pkg/storage/client_replica_test.go b/pkg/storage/client_replica_test.go index 4d7689272b73..fc6f2adade40 100644 --- a/pkg/storage/client_replica_test.go +++ b/pkg/storage/client_replica_test.go @@ -28,9 +28,11 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/server" + "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/storage" "github.com/cockroachdb/cockroach/pkg/storage/batcheval" "github.com/cockroachdb/cockroach/pkg/storage/engine" + "github.com/cockroachdb/cockroach/pkg/storage/stateloader" "github.com/cockroachdb/cockroach/pkg/storage/storagebase" "github.com/cockroachdb/cockroach/pkg/storage/storagepb" "github.com/cockroachdb/cockroach/pkg/testutils" @@ -2943,3 +2945,86 @@ func makeReplicationTargets(ids ...int) (targets []roachpb.ReplicationTarget) { } return targets } + +func TestMigrate(t *testing.T) { + defer leaktest.AfterTest(t) + ctx := context.Background() + + for _, testCase := range []struct { + name string + typ stateloader.TruncatedStateType + }{ + {"ts=new,as=new", stateloader.TruncatedStateUnreplicated}, + {"ts=legacy,as=new", stateloader.TruncatedStateLegacyReplicated}, + {"ts=legacy,as=legacy", stateloader.TruncatedStateLegacyReplicatedAndNoAppliedKey}, + } { + t.Run(testCase.name, func(t *testing.T) { + args := base.TestClusterArgs{} + args.ServerArgs.Knobs.Store = &storage.StoreTestingKnobs{TruncatedStateTypeOverride: &testCase.typ} + args.ServerArgs.Knobs.Server = &server.TestingKnobs{ + DisableAutomaticVersionUpgrade: 1, + // VersionNoLegacyTruncatedAndAppliedState is special: it + // enables assertions against legacy truncated and applied state + // when it is active. Additionally, SET CLUSTER SETTING will + // call Migrate only when activating this version (so we're + // making sure it does not do it in this test). + BootstrapVersionOverride: cluster.VersionByKey(cluster.VersionNoLegacyTruncatedAndAppliedState - 1), + } + tc := testcluster.StartTestCluster(t, 3, args) + defer tc.Stopper().Stop(ctx) + + visitAllRepls := func(f func(*storage.Replica) error) error { + for i := 0; i < tc.NumServers(); i++ { + return tc.Server(i).GetStores().(*storage.Stores).VisitStores(func(s *storage.Store) error { + var err error + s.VisitReplicas(func(repl *storage.Replica) bool { + err = f(repl) + return err == nil + }) + return err + }) + } + return nil + } + + getLegacy := func() []string { + t.Helper() + var out []string + require.NoError(t, visitAllRepls(func(repl *storage.Replica) error { + sl := stateloader.Make(repl.RangeID) + _, legacy, err := sl.LoadRaftTruncatedState(ctx, repl.Engine()) + if err != nil { + return err + } + if legacy { + // Legacy truncated state. + out = append(out, fmt.Sprintf("ts(r%d)", repl.RangeID)) + } + as, err := sl.LoadRangeAppliedState(ctx, repl.Engine()) + if err != nil { + return err + } + if as == nil { + // Not using AppliedState yet. + out = append(out, fmt.Sprintf("as(r%d)", repl.RangeID)) + } + return nil + })) + return out + } + + if out := getLegacy(); (len(out) == 0) != (testCase.typ == stateloader.TruncatedStateUnreplicated) { + t.Fatalf("expected no legacy keys iff bootstrapped with unreplicated truncated state, got legacy keys: %v", out) + } else { + // NB: we'll never spot a legacy applied state here. This is + // because that migration is so aggressive that it has already + // happened as part of the initial up-replication. + t.Logf("legacy keys before migration: %v", out) + } + + _, err := tc.Conns[0].ExecContext(ctx, `SET CLUSTER SETTING version = $1`, cluster.BinaryServerVersion.String()) + require.NoError(t, err) + require.Zero(t, getLegacy()) + }) + } +} diff --git a/pkg/storage/client_test.go b/pkg/storage/client_test.go index 421bb24c292c..77ab60fd19e5 100644 --- a/pkg/storage/client_test.go +++ b/pkg/storage/client_test.go @@ -201,7 +201,9 @@ func createTestStoreWithOpts( eng, kvs, /* initialValues */ cluster.BinaryServerVersion, - 1 /* numStores */, splits, storeCfg.Clock.PhysicalNow()) + 1 /* numStores */, splits, storeCfg.Clock.PhysicalNow(), + storeCfg.TestingKnobs, + ) if err != nil { t.Fatal(err) } @@ -884,7 +886,8 @@ func (m *multiTestContext) addStore(idx int) { eng, kvs, /* initialValues */ cluster.BinaryServerVersion, - len(m.engines), splits, cfg.Clock.PhysicalNow()) + len(m.engines), splits, cfg.Clock.PhysicalNow(), + cfg.TestingKnobs) if err != nil { m.t.Fatal(err) } diff --git a/pkg/storage/replica_application_state_machine.go b/pkg/storage/replica_application_state_machine.go index b2f51965b1d3..338fe6454a7c 100644 --- a/pkg/storage/replica_application_state_machine.go +++ b/pkg/storage/replica_application_state_machine.go @@ -649,6 +649,7 @@ func (b *replicaAppBatch) runPreApplyTriggersAfterStagingWriteBatch( if res.State != nil && res.State.TruncatedState != nil { if apply, err := handleTruncatedStateBelowRaft( ctx, b.state.TruncatedState, res.State.TruncatedState, b.r.raftMu.stateLoader, b.batch, + cluster.Version.IsActive(ctx, b.r.ClusterSettings(), cluster.VersionNoLegacyTruncatedAndAppliedState), ); err != nil { return wrapWithNonDeterministicFailure(err, "unable to handle truncated state") } else if !apply { diff --git a/pkg/storage/replica_proposal.go b/pkg/storage/replica_proposal.go index 2b5bdc16be67..ec3b0f1bf166 100644 --- a/pkg/storage/replica_proposal.go +++ b/pkg/storage/replica_proposal.go @@ -794,12 +794,14 @@ func (r *Replica) evaluateProposal( usingAppliedStateKey := r.mu.state.UsingAppliedStateKey r.mu.RUnlock() if !usingAppliedStateKey { - // The range applied state was introduced in v2.1. It's possible to - // still find ranges that haven't activated it. If so, activate it. - // We can remove this code if we introduce a boot-time check that - // fails the startup process when any legacy replicas are found. The - // operator can then run the old binary for a while to upgrade the - // stragglers. + // The range applied state was introduced in v2.1. The cluster version + // transition into v20.1 ought to have migrated any holdover ranges + // still using the legacy keys, which is what we assert below. If + // we're not running 20.1 yet, migrate over as we've done since the + // introduction of the applied state key. + if cluster.Version.IsActive(ctx, r.store.ClusterSettings(), cluster.VersionNoLegacyTruncatedAndAppliedState) { + log.Fatalf(ctx, "not using applied state key in v20.1") + } if res.Replicated.State == nil { res.Replicated.State = &storagepb.ReplicaState{} } diff --git a/pkg/storage/replica_raft.go b/pkg/storage/replica_raft.go index 0260737f493a..10766b051ab8 100644 --- a/pkg/storage/replica_raft.go +++ b/pkg/storage/replica_raft.go @@ -1621,6 +1621,7 @@ func handleTruncatedStateBelowRaft( oldTruncatedState, newTruncatedState *roachpb.RaftTruncatedState, loader stateloader.StateLoader, readWriter engine.ReadWriter, + assertNoLegacy bool, ) (_apply bool, _ error) { // If this is a log truncation, load the resulting unreplicated or legacy // replicated truncated state (in that order). If the migration is happening @@ -1635,6 +1636,10 @@ func handleTruncatedStateBelowRaft( return false, errors.Wrap(err, "loading truncated state") } + if assertNoLegacy && truncStateIsLegacy { + log.Fatalf(ctx, "found legacy truncated state which should no longer exist") + } + // Truncate the Raft log from the entry after the previous // truncation index to the new truncation index. This is performed // atomically with the raft command application so that the diff --git a/pkg/storage/replica_raft_truncation_test.go b/pkg/storage/replica_raft_truncation_test.go index cb5286d6d815..fad452562d2d 100644 --- a/pkg/storage/replica_raft_truncation_test.go +++ b/pkg/storage/replica_raft_truncation_test.go @@ -85,7 +85,7 @@ func TestHandleTruncatedStateBelowRaft(t *testing.T) { Term: term, } - apply, err := handleTruncatedStateBelowRaft(ctx, &prevTruncatedState, newTruncatedState, loader, eng) + apply, err := handleTruncatedStateBelowRaft(ctx, &prevTruncatedState, newTruncatedState, loader, eng, false /* assert */) if err != nil { return err.Error() } diff --git a/pkg/storage/replica_test.go b/pkg/storage/replica_test.go index 94bbd8010baf..a76c46ea57c7 100644 --- a/pkg/storage/replica_test.go +++ b/pkg/storage/replica_test.go @@ -251,6 +251,7 @@ func (tc *testContext) StartWithStoreConfigAndVersion( nil, /* initialValues */ bootstrapVersion, 1 /* numStores */, nil /* splits */, cfg.Clock.PhysicalNow(), + cfg.TestingKnobs, ); err != nil { t.Fatal(err) } diff --git a/pkg/storage/replica_write.go b/pkg/storage/replica_write.go index 389d594091f1..20151a39604f 100644 --- a/pkg/storage/replica_write.go +++ b/pkg/storage/replica_write.go @@ -202,6 +202,26 @@ func (r *Replica) executeWriteBatch( log.Warning(ctx, err) } } + if ba.Requests[0].GetMigrate() != nil && propResult.Err == nil { + // Migrate is special since it wants commands to be durably + // applied on all peers, which we achieve via waitForApplication. + // + // TODO(tbg): could a snapshot below maxLeaseIndex be in-flight + // to a follower that's not in `desc` (but will be in it soon)? + // This seems to be in the realm of what's possible in theory: + // we'll only ever proactively send a snap when the peer is a + // learner, but an old snapshot that precedes maxLeaseIndex may + // be in flight for no good reason and once that peer is added + // to desc (after this code has done its work) and receives said + // zombie snap, it'll be initialized without having caught up + // past the migration. + desc := r.Desc() + // NB: waitForApplication already has a timeout. + propResult.Err = roachpb.NewError(waitForApplication( + ctx, r.store.cfg.NodeDialer, desc.RangeID, desc.Replicas().All(), + uint64(maxLeaseIndex)), + ) + } return propResult.Reply, propResult.Err case <-slowTimer.C: slowTimer.Read = true diff --git a/pkg/storage/stateloader/initial.go b/pkg/storage/stateloader/initial.go index d8e0957d4206..71113e8c26b1 100644 --- a/pkg/storage/stateloader/initial.go +++ b/pkg/storage/stateloader/initial.go @@ -60,7 +60,9 @@ func WriteInitialReplicaState( s.Stats = &ms s.Lease = &lease s.GCThreshold = &gcThreshold - s.UsingAppliedStateKey = true + if truncStateType != TruncatedStateLegacyReplicatedAndNoAppliedKey { + s.UsingAppliedStateKey = true + } if existingLease, err := rsl.LoadLease(ctx, readWriter); err != nil { return enginepb.MVCCStats{}, errors.Wrap(err, "error reading lease") diff --git a/pkg/storage/stateloader/stateloader.go b/pkg/storage/stateloader/stateloader.go index de9c8adab71c..9fa9d47db74b 100644 --- a/pkg/storage/stateloader/stateloader.go +++ b/pkg/storage/stateloader/stateloader.go @@ -113,6 +113,9 @@ type TruncatedStateType int const ( // TruncatedStateLegacyReplicated means use the legacy (replicated) key. TruncatedStateLegacyReplicated TruncatedStateType = iota + // TruncatedStateLegacyReplicatedAndNoAppliedKey means use the legacy key + // and also don't use the RangeAppliedKey. This is for testing use only. + TruncatedStateLegacyReplicatedAndNoAppliedKey // TruncatedStateUnreplicated means use the new (unreplicated) key. TruncatedStateUnreplicated ) @@ -141,7 +144,7 @@ func (rsl StateLoader) Save( if err := rsl.SetGCThreshold(ctx, readWriter, ms, state.GCThreshold); err != nil { return enginepb.MVCCStats{}, err } - if truncStateType == TruncatedStateLegacyReplicated { + if truncStateType != TruncatedStateUnreplicated { if err := rsl.SetLegacyRaftTruncatedState(ctx, readWriter, ms, state.TruncatedState); err != nil { return enginepb.MVCCStats{}, err } diff --git a/pkg/storage/store_bootstrap.go b/pkg/storage/store_bootstrap.go index bdcbf00919f2..833b0088d9ac 100644 --- a/pkg/storage/store_bootstrap.go +++ b/pkg/storage/store_bootstrap.go @@ -90,6 +90,7 @@ func WriteInitialClusterData( numStores int, splits []roachpb.RKey, nowNanos int64, + knobs StoreTestingKnobs, ) error { // Bootstrap version information. We'll add the "bootstrap version" to the // list of initialValues, so that we don't have to handle it specially @@ -225,6 +226,9 @@ func WriteInitialClusterData( } truncStateType := stateloader.TruncatedStateUnreplicated + if tt := knobs.TruncatedStateTypeOverride; tt != nil { + truncStateType = *tt + } lease := roachpb.BootstrapLease() _, err := stateloader.WriteInitialState( ctx, batch, diff --git a/pkg/storage/store_test.go b/pkg/storage/store_test.go index befb364656a2..94d616850578 100644 --- a/pkg/storage/store_test.go +++ b/pkg/storage/store_test.go @@ -251,6 +251,7 @@ func createTestStoreWithoutStart( context.TODO(), eng, kvs, /* initialValues */ cluster.BinaryServerVersion, 1 /* numStores */, splits, cfg.Clock.PhysicalNow(), + cfg.TestingKnobs, ); err != nil { t.Fatal(err) } @@ -466,6 +467,7 @@ func TestStoreInitAndBootstrap(t *testing.T) { if err := WriteInitialClusterData( ctx, eng, kvs /* initialValues */, cluster.BinaryServerVersion, 1 /* numStores */, splits, cfg.Clock.PhysicalNow(), + cfg.TestingKnobs, ); err != nil { t.Errorf("failure to create first range: %+v", err) } diff --git a/pkg/storage/testing_knobs.go b/pkg/storage/testing_knobs.go index ce55496a7a74..691a987a6815 100644 --- a/pkg/storage/testing_knobs.go +++ b/pkg/storage/testing_knobs.go @@ -14,6 +14,7 @@ import ( "time" "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/storage/stateloader" "github.com/cockroachdb/cockroach/pkg/storage/storagebase" "github.com/cockroachdb/cockroach/pkg/storage/txnwait" "github.com/cockroachdb/cockroach/pkg/util/hlc" @@ -235,6 +236,10 @@ type StoreTestingKnobs struct { // RangeFeedPushTxnsAge overrides the default value for // rangefeed.Config.PushTxnsAge. RangeFeedPushTxnsAge time.Duration + + // If set, use the following truncated state type when bootstrapping ranges. + // This is used for testing the Migrate command. + TruncatedStateTypeOverride *stateloader.TruncatedStateType } // ModuleTestingKnobs is part of the base.ModuleTestingKnobs interface. diff --git a/pkg/testutils/localtestcluster/local_test_cluster.go b/pkg/testutils/localtestcluster/local_test_cluster.go index 8b5c91dc331d..9f5cf1acd71c 100644 --- a/pkg/testutils/localtestcluster/local_test_cluster.go +++ b/pkg/testutils/localtestcluster/local_test_cluster.go @@ -199,6 +199,7 @@ func (ltc *LocalTestCluster) Start(t testing.TB, baseCtx *base.Config, initFacto 1, /* numStores */ splits, ltc.Clock.PhysicalNow(), + cfg.TestingKnobs, ); err != nil { t.Fatalf("unable to start local test cluster: %s", err) }