From 716811ceba789b3bbf8a8c0cfd408779e6406b9f Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Mon, 15 May 2023 17:39:12 +0800 Subject: [PATCH] add GetMinTimestamp interface Signed-off-by: Ryan Leung --- pkg/kvrpcpb/kvrpcpb.pb.go | 8 +- pkg/pdpb/pdpb.pb.go | 1182 ++++++++++++++++------- pkg/tracepb/tracepb.pb.go | 1 + proto/pdpb.proto | 15 + src/protos/autoid_grpc.rs | 2 +- src/protos/brpb_grpc.rs | 4 +- src/protos/cdcpb_grpc.rs | 2 +- src/protos/configpb_grpc.rs | 2 +- src/protos/deadlock_grpc.rs | 2 +- src/protos/debugpb_grpc.rs | 2 +- src/protos/diagnosticspb_grpc.rs | 2 +- src/protos/enginepb_grpc.rs | 2 +- src/protos/gcpb_grpc.rs | 2 +- src/protos/import_kvpb_grpc.rs | 2 +- src/protos/import_sstpb_grpc.rs | 2 +- src/protos/keyspacepb_grpc.rs | 2 +- src/protos/logbackuppb_grpc.rs | 2 +- src/protos/mod.desc | Bin 477917 -> 478743 bytes src/protos/mod.rs | 94 +- src/protos/mpp.rs | 4 +- src/protos/pdpb.rs | 408 ++++++++ src/protos/pdpb_grpc.rs | 34 +- src/protos/recoverdatapb_grpc.rs | 2 +- src/protos/resource_manager_grpc.rs | 2 +- src/protos/resource_usage_agent_grpc.rs | 4 +- src/protos/tikvpb_grpc.rs | 2 +- src/protos/tracepb_grpc.rs | 2 +- 27 files changed, 1363 insertions(+), 423 deletions(-) diff --git a/pkg/kvrpcpb/kvrpcpb.pb.go b/pkg/kvrpcpb/kvrpcpb.pb.go index da16698b..8e76d666 100644 --- a/pkg/kvrpcpb/kvrpcpb.pb.go +++ b/pkg/kvrpcpb/kvrpcpb.pb.go @@ -1888,9 +1888,10 @@ type CheckTxnStatusResponse struct { RegionError *errorpb.Error `protobuf:"bytes,1,opt,name=region_error,json=regionError,proto3" json:"region_error,omitempty"` Error *KeyError `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // Three kinds of transaction status: - // locked: lock_ttl > 0 - // committed: commit_version > 0 - // rollbacked: lock_ttl = 0 && commit_version = 0 + // + // locked: lock_ttl > 0 + // committed: commit_version > 0 + // rollbacked: lock_ttl = 0 && commit_version = 0 LockTtl uint64 `protobuf:"varint,3,opt,name=lock_ttl,json=lockTtl,proto3" json:"lock_ttl,omitempty"` CommitVersion uint64 `protobuf:"varint,4,opt,name=commit_version,json=commitVersion,proto3" json:"commit_version,omitempty"` // The action performed by TiKV (and why if the action is to rollback). @@ -9364,6 +9365,7 @@ func (m *RawChecksumResponse) GetTotalBytes() uint64 { type CompactError struct { // Types that are valid to be assigned to Error: + // // *CompactError_ErrInvalidStartKey // *CompactError_ErrPhysicalTableNotExist // *CompactError_ErrCompactInProgress diff --git a/pkg/pdpb/pdpb.pb.go b/pkg/pdpb/pdpb.pb.go index 628f010d..e08c1adb 100644 --- a/pkg/pdpb/pdpb.pb.go +++ b/pkg/pdpb/pdpb.pb.go @@ -7123,6 +7123,108 @@ func (m *GetExternalTimestampResponse) GetTimestamp() uint64 { return 0 } +type GetMinTimestampRequest struct { + Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetMinTimestampRequest) Reset() { *m = GetMinTimestampRequest{} } +func (m *GetMinTimestampRequest) String() string { return proto.CompactTextString(m) } +func (*GetMinTimestampRequest) ProtoMessage() {} +func (*GetMinTimestampRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_78b27e6f04f44c6e, []int{105} +} +func (m *GetMinTimestampRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetMinTimestampRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetMinTimestampRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetMinTimestampRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMinTimestampRequest.Merge(m, src) +} +func (m *GetMinTimestampRequest) XXX_Size() int { + return m.Size() +} +func (m *GetMinTimestampRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetMinTimestampRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMinTimestampRequest proto.InternalMessageInfo + +func (m *GetMinTimestampRequest) GetHeader() *RequestHeader { + if m != nil { + return m.Header + } + return nil +} + +type GetMinTimestampResponse struct { + Header *ResponseHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + Timestamp *Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetMinTimestampResponse) Reset() { *m = GetMinTimestampResponse{} } +func (m *GetMinTimestampResponse) String() string { return proto.CompactTextString(m) } +func (*GetMinTimestampResponse) ProtoMessage() {} +func (*GetMinTimestampResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_78b27e6f04f44c6e, []int{106} +} +func (m *GetMinTimestampResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetMinTimestampResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetMinTimestampResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetMinTimestampResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMinTimestampResponse.Merge(m, src) +} +func (m *GetMinTimestampResponse) XXX_Size() int { + return m.Size() +} +func (m *GetMinTimestampResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetMinTimestampResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMinTimestampResponse proto.InternalMessageInfo + +func (m *GetMinTimestampResponse) GetHeader() *ResponseHeader { + if m != nil { + return m.Header + } + return nil +} + +func (m *GetMinTimestampResponse) GetTimestamp() *Timestamp { + if m != nil { + return m.Timestamp + } + return nil +} + func init() { proto.RegisterEnum("pdpb.EventType", EventType_name, EventType_value) proto.RegisterEnum("pdpb.ErrorType", ErrorType_name, ErrorType_value) @@ -7235,360 +7337,364 @@ func init() { proto.RegisterType((*SetExternalTimestampResponse)(nil), "pdpb.SetExternalTimestampResponse") proto.RegisterType((*GetExternalTimestampRequest)(nil), "pdpb.GetExternalTimestampRequest") proto.RegisterType((*GetExternalTimestampResponse)(nil), "pdpb.GetExternalTimestampResponse") + proto.RegisterType((*GetMinTimestampRequest)(nil), "pdpb.GetMinTimestampRequest") + proto.RegisterType((*GetMinTimestampResponse)(nil), "pdpb.GetMinTimestampResponse") } func init() { proto.RegisterFile("pdpb.proto", fileDescriptor_78b27e6f04f44c6e) } var fileDescriptor_78b27e6f04f44c6e = []byte{ - // 5556 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x4d, 0x73, 0xe3, 0x46, - 0x76, 0x02, 0x45, 0x52, 0xe4, 0xe3, 0x87, 0xa0, 0x1e, 0xcd, 0x88, 0xc3, 0xf9, 0x34, 0xc6, 0x76, - 0xc6, 0xb3, 0xde, 0xb1, 0x3d, 0x76, 0x6d, 0x1c, 0x27, 0xeb, 0x0a, 0x25, 0x72, 0x68, 0x7a, 0x34, - 0x12, 0x03, 0x52, 0xe3, 0x75, 0x6a, 0x2b, 0x28, 0x08, 0x68, 0x49, 0x58, 0x91, 0x00, 0x8d, 0x06, - 0xa5, 0xe1, 0x56, 0x0e, 0xf9, 0xd8, 0x24, 0x9b, 0xca, 0x6e, 0x25, 0x55, 0xf9, 0x3c, 0xa4, 0xf6, - 0x90, 0xa4, 0x92, 0x5c, 0x52, 0xb9, 0xa5, 0x92, 0x3f, 0x90, 0xca, 0x31, 0xc7, 0x9c, 0x52, 0x5b, - 0x9b, 0x53, 0xfe, 0xc0, 0x5e, 0x92, 0x43, 0xaa, 0xbf, 0x40, 0x00, 0x04, 0x25, 0x19, 0xb6, 0x53, - 0x7b, 0x22, 0xfa, 0xbd, 0xd7, 0xaf, 0x5f, 0xbf, 0x7e, 0xdd, 0xfd, 0xde, 0xeb, 0x6e, 0x02, 0x4c, - 0xec, 0xc9, 0xe1, 0xe3, 0x89, 0xef, 0x05, 0x1e, 0xca, 0xd3, 0xef, 0x66, 0x75, 0x8c, 0x03, 0x53, - 0xc2, 0x9a, 0x35, 0xec, 0x9b, 0x47, 0x41, 0x58, 0xbc, 0x46, 0x4b, 0x06, 0xc1, 0xfe, 0x19, 0xf6, - 0x43, 0x60, 0xc3, 0xc7, 0x93, 0x91, 0x63, 0x99, 0x81, 0xe3, 0xb9, 0xc6, 0xd8, 0xb3, 0x71, 0x88, - 0xd9, 0x3c, 0xf6, 0x8e, 0x3d, 0xf6, 0xf9, 0x16, 0xfd, 0x12, 0xd0, 0x75, 0x7f, 0x4a, 0x02, 0xf6, - 0xc9, 0x01, 0xda, 0x27, 0xd0, 0xf8, 0xc4, 0x0c, 0xac, 0x93, 0xee, 0xc8, 0x3b, 0x34, 0x47, 0x3b, - 0x9e, 0x7b, 0xe4, 0x1c, 0xeb, 0xf8, 0xb3, 0x29, 0x26, 0x01, 0xba, 0x07, 0x15, 0x8b, 0x01, 0x8c, - 0x89, 0x19, 0x9c, 0x34, 0x94, 0xfb, 0xca, 0xc3, 0xb2, 0x0e, 0x1c, 0xd4, 0x37, 0x83, 0x13, 0xd4, - 0x84, 0x92, 0x8f, 0xcf, 0x1c, 0xe2, 0x78, 0x6e, 0x23, 0x77, 0x5f, 0x79, 0xb8, 0xaa, 0x87, 0x65, - 0xed, 0xcf, 0x15, 0xb8, 0x99, 0xc2, 0x99, 0x4c, 0x3c, 0x97, 0x60, 0xf4, 0x36, 0xac, 0x59, 0x27, - 0xa6, 0x7b, 0x8c, 0x49, 0x43, 0xb9, 0xbf, 0xfa, 0xb0, 0xf2, 0xe4, 0xc6, 0x63, 0xa6, 0x8d, 0x28, - 0x71, 0x2f, 0xc0, 0x63, 0x5d, 0x92, 0x5d, 0xd4, 0x16, 0x7a, 0x13, 0x8a, 0x27, 0xd8, 0xb4, 0xb1, - 0xdf, 0x58, 0xbd, 0xaf, 0x3c, 0xac, 0x3c, 0xd9, 0xe4, 0xcc, 0x64, 0x6b, 0x1f, 0x31, 0x9c, 0x2e, - 0x68, 0xb4, 0x31, 0x34, 0x06, 0x81, 0xe7, 0xe3, 0xb4, 0x2e, 0x7f, 0x7e, 0xb9, 0x12, 0x4a, 0xca, - 0x25, 0x95, 0xa4, 0x7d, 0x08, 0x37, 0x53, 0x9a, 0x13, 0x7a, 0x78, 0x05, 0x0a, 0xd8, 0xf7, 0x3d, - 0x9f, 0x29, 0xb7, 0xf2, 0xa4, 0xc2, 0x5b, 0xeb, 0x50, 0x90, 0xce, 0x31, 0x5a, 0x1f, 0xb6, 0x76, - 0x3d, 0xd3, 0x4e, 0x93, 0x76, 0x13, 0x0a, 0xae, 0x39, 0x16, 0xb2, 0x96, 0x75, 0x5e, 0xb8, 0x5c, - 0x22, 0x1b, 0x1a, 0x8b, 0x1c, 0x85, 0x40, 0x6f, 0x42, 0xc1, 0x09, 0xf0, 0xf8, 0xb2, 0xee, 0x73, - 0xa2, 0x0b, 0x0d, 0xe0, 0x47, 0x0a, 0xa8, 0xc9, 0x7a, 0x08, 0x41, 0x9e, 0x0a, 0x29, 0x6c, 0x89, - 0x7d, 0xd3, 0x5e, 0x9c, 0x99, 0xa3, 0x29, 0x16, 0x92, 0xf2, 0xc2, 0x5c, 0x33, 0xab, 0xcb, 0x34, - 0x83, 0x1e, 0x40, 0xfe, 0xd4, 0x71, 0xed, 0x46, 0xfe, 0xbe, 0xf2, 0xb0, 0xfe, 0x64, 0x5d, 0x50, - 0x9c, 0x61, 0x37, 0x18, 0xce, 0x26, 0x58, 0x67, 0x48, 0xd4, 0x80, 0xb5, 0x89, 0x39, 0x1b, 0x79, - 0xa6, 0xdd, 0x28, 0xdc, 0x57, 0x1e, 0x56, 0x75, 0x59, 0xd4, 0x9e, 0x41, 0x4d, 0x28, 0x92, 0x1b, - 0x08, 0xba, 0x03, 0x60, 0x8d, 0xa6, 0x24, 0xc0, 0xbe, 0xe1, 0xd8, 0x4c, 0xc4, 0xbc, 0x5e, 0x16, - 0x90, 0x9e, 0x8d, 0x6e, 0x41, 0x99, 0x60, 0xd7, 0xe6, 0xd8, 0x1c, 0xc3, 0x96, 0x38, 0xa0, 0x67, - 0x6b, 0x3a, 0xd4, 0xe3, 0xe6, 0x76, 0x19, 0xb7, 0xb0, 0x7f, 0xb9, 0xa5, 0x23, 0xff, 0x14, 0x0a, - 0x1d, 0xd9, 0xd1, 0x60, 0x36, 0xe1, 0x5a, 0x9b, 0x77, 0x94, 0xa2, 0x78, 0x47, 0x29, 0x92, 0x76, - 0x74, 0x8c, 0x09, 0x31, 0x8f, 0xa5, 0x22, 0x65, 0x51, 0x9b, 0x00, 0x0c, 0x89, 0x27, 0x8d, 0xe6, - 0x6b, 0xe1, 0x64, 0xe1, 0x36, 0x77, 0x4d, 0x4e, 0x96, 0x88, 0x2a, 0xe4, 0x5c, 0xa1, 0x63, 0x63, - 0x79, 0x53, 0x37, 0x60, 0x2c, 0x6b, 0x3a, 0x2f, 0x50, 0x0b, 0xb3, 0x2d, 0x63, 0xe4, 0xf1, 0x75, - 0x87, 0x8d, 0x50, 0x59, 0x07, 0xdb, 0xda, 0x15, 0x10, 0xed, 0x10, 0xca, 0x43, 0x67, 0x8c, 0x49, - 0x60, 0x8e, 0x27, 0xd4, 0x48, 0x26, 0x27, 0x33, 0xe2, 0x58, 0xe6, 0x88, 0x35, 0xb9, 0xaa, 0x87, - 0x65, 0x2a, 0xf4, 0xc8, 0x3b, 0x66, 0x28, 0x6e, 0x3f, 0xb2, 0x48, 0xdb, 0x20, 0xd3, 0xa3, 0x23, - 0xe7, 0xa5, 0x71, 0xe8, 0x04, 0x84, 0xb5, 0x51, 0xd3, 0x81, 0x83, 0xb6, 0x9d, 0x80, 0x68, 0xbf, - 0xa1, 0x40, 0x85, 0x75, 0x2b, 0xb4, 0xdc, 0x78, 0xbf, 0x2e, 0x5c, 0x04, 0x96, 0x74, 0xec, 0xeb, - 0x50, 0x0e, 0xa4, 0xdc, 0xc2, 0xf0, 0x84, 0xb6, 0xc3, 0xee, 0xe8, 0x73, 0x0a, 0xed, 0x07, 0x0a, - 0xa8, 0xdb, 0x9e, 0x17, 0x90, 0xc0, 0x37, 0x27, 0x99, 0xf4, 0xfb, 0x00, 0x0a, 0x84, 0x2e, 0x0e, - 0xc2, 0x0a, 0x6a, 0x8f, 0xc5, 0x0e, 0xc0, 0x56, 0x0c, 0x9d, 0xe3, 0xd0, 0xeb, 0x50, 0xf4, 0xf1, - 0xb1, 0xd4, 0x74, 0xe5, 0x49, 0x5d, 0x52, 0xe9, 0x0c, 0xaa, 0x0b, 0x2c, 0x5d, 0x72, 0x37, 0x22, - 0xe2, 0x64, 0xd2, 0xcb, 0x10, 0x50, 0x74, 0x4b, 0x21, 0x81, 0x19, 0x4c, 0x89, 0x90, 0xee, 0xb5, - 0xc7, 0x29, 0xbb, 0x8d, 0x3e, 0x07, 0x0d, 0x18, 0xb1, 0xbe, 0xe1, 0x27, 0x41, 0x5a, 0x1b, 0xae, - 0xf7, 0x48, 0x28, 0xda, 0x04, 0xdb, 0x59, 0x94, 0xa5, 0x7d, 0x07, 0x6e, 0x24, 0xb9, 0x64, 0xea, - 0xa3, 0x06, 0xd5, 0xc3, 0x08, 0x17, 0xd6, 0xbb, 0x92, 0x1e, 0x83, 0x69, 0xdf, 0x84, 0x7a, 0x6b, - 0x34, 0xf2, 0xac, 0x5e, 0x3b, 0x93, 0xa8, 0xfb, 0xb0, 0x1e, 0x56, 0xcf, 0x24, 0x63, 0x1d, 0x72, - 0xe1, 0x2a, 0x93, 0x73, 0x6c, 0xed, 0x63, 0xb8, 0xd5, 0x23, 0x03, 0xd7, 0x9c, 0x90, 0x13, 0x2f, - 0xd0, 0xb1, 0xe5, 0x9d, 0x61, 0xdf, 0x71, 0x8f, 0x33, 0x09, 0x67, 0xc3, 0xed, 0x74, 0x5e, 0x99, - 0x24, 0xbd, 0x01, 0xc5, 0xb1, 0xe9, 0x9f, 0x86, 0x7a, 0x14, 0x25, 0xed, 0x53, 0x58, 0xef, 0xe2, - 0x80, 0x1b, 0x72, 0x96, 0xa9, 0x71, 0x13, 0x4a, 0xcc, 0xfc, 0xe7, 0xab, 0xed, 0x1a, 0x2b, 0xf7, - 0x6c, 0xed, 0x87, 0x74, 0x6b, 0x09, 0x79, 0x67, 0x92, 0xfa, 0x8a, 0x13, 0xaf, 0x40, 0x27, 0x00, - 0x11, 0xf3, 0x4e, 0xe5, 0x1c, 0x19, 0x09, 0x35, 0x6c, 0xa2, 0x73, 0xb4, 0x66, 0xc1, 0x7a, 0x7f, - 0xfa, 0x05, 0xba, 0x7a, 0x15, 0x61, 0xb4, 0x3f, 0x53, 0x40, 0x9d, 0xb7, 0xf2, 0x33, 0x34, 0xb9, - 0x7f, 0x1d, 0xae, 0x75, 0x71, 0xd0, 0x1a, 0x8d, 0x98, 0x68, 0x24, 0x93, 0x06, 0xde, 0x87, 0x06, - 0x7e, 0x69, 0x8d, 0xa6, 0x36, 0x36, 0x02, 0x6f, 0x7c, 0x48, 0x02, 0xcf, 0xc5, 0x06, 0xeb, 0x37, - 0x11, 0x66, 0x75, 0x43, 0xe0, 0x87, 0x12, 0xcd, 0x5b, 0xd3, 0x4e, 0x61, 0x33, 0xde, 0x7a, 0x26, - 0xcd, 0xbc, 0x06, 0xc5, 0xb0, 0xb5, 0xd5, 0xc5, 0x21, 0x10, 0x48, 0xed, 0x37, 0xb9, 0xe1, 0x89, - 0x75, 0x37, 0x4b, 0x47, 0xef, 0x00, 0xf0, 0xd5, 0xda, 0x38, 0xc5, 0x33, 0xd6, 0xb5, 0xaa, 0x5e, - 0xe6, 0x90, 0x67, 0x78, 0x86, 0x5e, 0x81, 0xaa, 0x8b, 0xb1, 0x6d, 0x1c, 0x4e, 0xad, 0x53, 0x2c, - 0x0c, 0xaf, 0xa4, 0x57, 0x28, 0x6c, 0x9b, 0x83, 0xb4, 0xbf, 0xce, 0xc1, 0x46, 0x44, 0x86, 0x4c, - 0xdd, 0x9d, 0xef, 0x28, 0xb9, 0x8b, 0x76, 0x14, 0xf4, 0x2a, 0x14, 0x47, 0x51, 0xc7, 0xba, 0x2a, - 0xe9, 0xfa, 0x98, 0x72, 0xe3, 0x38, 0xf4, 0x18, 0xc0, 0xf6, 0xce, 0x5d, 0x63, 0x82, 0xb1, 0x4f, - 0x1a, 0x05, 0xa6, 0x40, 0xb1, 0x6d, 0x52, 0x3a, 0x3e, 0x55, 0xca, 0x94, 0x84, 0x16, 0x09, 0x7a, - 0x07, 0x6a, 0x13, 0xec, 0xda, 0x8e, 0x7b, 0x2c, 0xaa, 0x14, 0x59, 0x95, 0x38, 0xf3, 0xaa, 0x20, - 0xe1, 0x55, 0xde, 0x80, 0x35, 0xa9, 0x92, 0x35, 0xb1, 0x2d, 0x0b, 0x62, 0xa1, 0x16, 0x5d, 0xe2, - 0x3f, 0xce, 0x97, 0xf2, 0x6a, 0x41, 0xfb, 0x6d, 0x85, 0xd9, 0x05, 0xef, 0xcf, 0xf6, 0x2c, 0xdb, - 0x32, 0x4e, 0x5d, 0x3e, 0x31, 0x5a, 0x73, 0x97, 0x8f, 0x03, 0x98, 0x07, 0x77, 0xe9, 0x58, 0xfd, - 0x50, 0x01, 0x34, 0xb0, 0x4c, 0x97, 0x8b, 0x41, 0xb2, 0xca, 0x40, 0x02, 0xd3, 0x0f, 0x22, 0x06, - 0x53, 0x62, 0x00, 0x6a, 0x2f, 0x9b, 0x50, 0x18, 0x39, 0x63, 0x27, 0x60, 0x8d, 0x17, 0x74, 0x5e, - 0x40, 0x5b, 0xb0, 0x86, 0x5d, 0x9b, 0x55, 0xc8, 0xb3, 0x0a, 0x45, 0xec, 0xda, 0xcf, 0xf0, 0x4c, - 0xfb, 0x17, 0x05, 0x8a, 0x5c, 0x96, 0x88, 0x09, 0x28, 0x57, 0x34, 0x81, 0xdc, 0x95, 0x4d, 0x60, - 0xf5, 0xf3, 0x9b, 0x40, 0xfe, 0x32, 0x13, 0xd0, 0xfe, 0x55, 0x81, 0x6b, 0x31, 0x5d, 0x66, 0xb2, - 0xfc, 0x77, 0xa0, 0x2a, 0x46, 0x94, 0xb6, 0x24, 0xa7, 0x7b, 0xb2, 0xf3, 0x15, 0x4e, 0xf3, 0x9c, - 0x92, 0xa0, 0xd7, 0x61, 0x8d, 0xf7, 0x52, 0x76, 0x2c, 0x2e, 0xa5, 0x44, 0x52, 0x3a, 0x5e, 0x6d, - 0xde, 0x1b, 0x21, 0x09, 0xe3, 0x29, 0x91, 0xda, 0x53, 0xd8, 0xea, 0xe2, 0x60, 0x87, 0x47, 0x02, - 0xf1, 0x80, 0xee, 0x73, 0x6d, 0xe3, 0x04, 0x1a, 0x8b, 0x7c, 0x32, 0x29, 0xe5, 0x0d, 0x58, 0x13, - 0x81, 0x89, 0x18, 0xe4, 0x70, 0x76, 0x09, 0xee, 0xba, 0xc4, 0x6b, 0x9f, 0xc1, 0x56, 0x7f, 0xfa, - 0xc5, 0x85, 0xff, 0x3c, 0x4d, 0x7e, 0x04, 0x8d, 0xc5, 0x26, 0xb3, 0xf4, 0x53, 0xfb, 0x9b, 0x1c, - 0x14, 0x9f, 0xe3, 0xf1, 0x21, 0xf6, 0x53, 0x03, 0xd1, 0x5b, 0x50, 0x1e, 0x33, 0x6c, 0x64, 0xb6, - 0x73, 0x00, 0x8f, 0xfe, 0xa8, 0xa5, 0x1a, 0x53, 0x7f, 0xc4, 0xed, 0xa0, 0xac, 0x97, 0x28, 0xe0, - 0xc0, 0x1f, 0xf1, 0x90, 0x7b, 0xe4, 0x60, 0x37, 0xe0, 0xe8, 0x3c, 0x43, 0x03, 0x07, 0x31, 0x82, - 0x9f, 0x83, 0x75, 0x6e, 0x26, 0xc6, 0xc4, 0x77, 0x3c, 0xdf, 0x09, 0x66, 0x2c, 0x1a, 0x2d, 0xe8, - 0x75, 0x0e, 0xee, 0x0b, 0x28, 0x0b, 0xad, 0xf0, 0x64, 0xe4, 0xcd, 0x78, 0xf0, 0x5e, 0x14, 0xa1, - 0x15, 0x03, 0xb1, 0x9c, 0xcb, 0x6b, 0x50, 0x3f, 0x74, 0x5c, 0xd3, 0x9f, 0x19, 0x67, 0xd8, 0x67, - 0x81, 0xf7, 0x1a, 0xa3, 0xa9, 0x71, 0xe8, 0x0b, 0x0e, 0xa4, 0xde, 0xd3, 0xb1, 0x13, 0x18, 0x27, - 0x26, 0x39, 0x69, 0x94, 0x78, 0x38, 0x78, 0xec, 0x04, 0x1f, 0x99, 0xe4, 0x24, 0x19, 0xbd, 0x95, - 0x17, 0xa2, 0xb7, 0x5f, 0x66, 0x1b, 0x0c, 0x57, 0x54, 0xa6, 0x35, 0x4b, 0xfb, 0xdf, 0x1c, 0xa0, - 0x28, 0x8b, 0x8c, 0x9b, 0xd4, 0x1a, 0xd7, 0xbe, 0x9c, 0xa5, 0x62, 0x3e, 0x71, 0xae, 0xba, 0x44, - 0xa6, 0x6c, 0x52, 0x51, 0x32, 0xb9, 0x42, 0x7d, 0x1d, 0x2a, 0x38, 0xb0, 0x6c, 0x43, 0x90, 0xe6, - 0x53, 0x48, 0x81, 0x12, 0xec, 0x72, 0x72, 0x0c, 0xd7, 0x03, 0xe2, 0x19, 0xe6, 0x88, 0xe9, 0xc9, - 0xf3, 0x0d, 0xb9, 0x04, 0xf0, 0xed, 0xed, 0x1d, 0x91, 0x17, 0x59, 0xe8, 0xe3, 0xe3, 0x21, 0xf1, - 0x5a, 0xb2, 0x12, 0xe7, 0x45, 0x3a, 0x6e, 0xe0, 0xcf, 0xf4, 0x6b, 0xc1, 0x22, 0xa6, 0x39, 0x84, - 0xc6, 0xb2, 0x0a, 0x48, 0x85, 0x55, 0xba, 0x82, 0x73, 0x0b, 0xa5, 0x9f, 0x48, 0x8b, 0x66, 0x4a, - 0x92, 0xd2, 0x73, 0xd4, 0x07, 0xb9, 0xf7, 0x15, 0xad, 0x0f, 0xe5, 0x70, 0xd5, 0x45, 0xf7, 0x21, - 0x4f, 0xed, 0x54, 0xa8, 0x3c, 0xbe, 0x76, 0x31, 0x0c, 0xdd, 0xc8, 0xd8, 0xe2, 0x4d, 0xb0, 0xe5, - 0xb9, 0x36, 0x11, 0xa6, 0x5f, 0xa1, 0xb0, 0x01, 0x07, 0x69, 0x3f, 0x2d, 0xc0, 0x0d, 0xbe, 0x8e, - 0x7d, 0x84, 0x4d, 0x3f, 0x38, 0xc4, 0x66, 0x90, 0x69, 0xda, 0x7f, 0x95, 0x8e, 0x47, 0xfe, 0xf3, - 0xef, 0x3a, 0x85, 0x4b, 0x1d, 0x8f, 0x07, 0x50, 0x3b, 0x9c, 0x05, 0x98, 0x18, 0xe7, 0xbe, 0x13, - 0x04, 0xd8, 0x65, 0x33, 0x32, 0xaf, 0x57, 0x19, 0xf0, 0x13, 0x0e, 0xa3, 0x4e, 0x1d, 0x27, 0xf2, - 0xb1, 0x69, 0xb3, 0xf9, 0x98, 0xd7, 0xcb, 0x0c, 0xa2, 0x63, 0x93, 0x39, 0x0a, 0xa7, 0x78, 0x36, - 0x67, 0x51, 0xe2, 0xfa, 0xa5, 0x30, 0xc9, 0xe1, 0x16, 0x94, 0x19, 0x09, 0x63, 0x50, 0xe6, 0x4b, - 0x0f, 0x05, 0xb0, 0xfa, 0x6f, 0x80, 0x6a, 0x4e, 0x26, 0xbe, 0xf7, 0xd2, 0x19, 0x9b, 0x01, 0x36, - 0x88, 0xf3, 0x5d, 0xdc, 0x00, 0x46, 0xb3, 0x1e, 0x81, 0x0f, 0x9c, 0xef, 0x62, 0xf4, 0x18, 0x4a, - 0x8e, 0x1b, 0x60, 0xff, 0xcc, 0x1c, 0x35, 0xaa, 0x4c, 0x73, 0x68, 0x9e, 0xbf, 0xe8, 0x09, 0x8c, - 0x1e, 0xd2, 0x24, 0x59, 0xd3, 0x26, 0x1b, 0xb5, 0x05, 0xd6, 0xcf, 0xf0, 0x8c, 0xd0, 0x15, 0x33, - 0xc0, 0xfe, 0xb8, 0x51, 0x67, 0x68, 0xf6, 0x8d, 0x7e, 0x35, 0x35, 0xa0, 0x58, 0x67, 0x0d, 0x7f, - 0x2d, 0x3d, 0xa0, 0xe0, 0x5e, 0xeb, 0xe5, 0x61, 0x05, 0x7a, 0x07, 0x2a, 0x9f, 0x4d, 0xb1, 0x3f, - 0x33, 0x78, 0x08, 0xa6, 0x46, 0x43, 0xb0, 0x5f, 0xa1, 0x08, 0x3e, 0xbc, 0xf0, 0x59, 0xf8, 0x4d, - 0xb5, 0x68, 0x4d, 0xa6, 0xc6, 0x94, 0x25, 0xc1, 0x36, 0xb8, 0x16, 0xad, 0xc9, 0xf4, 0x80, 0x96, - 0xd1, 0x63, 0xb8, 0x16, 0xeb, 0xea, 0x19, 0x57, 0x24, 0x62, 0x64, 0x1b, 0xd1, 0xde, 0x9e, 0x51, - 0x55, 0x7e, 0x9c, 0x2f, 0x55, 0xd4, 0xaa, 0x76, 0x02, 0xb0, 0xc3, 0x32, 0xbd, 0xd4, 0x1c, 0xae, - 0x30, 0x97, 0xde, 0x87, 0x0a, 0xcf, 0x0c, 0x1b, 0x2c, 0x63, 0x97, 0x63, 0x19, 0xbb, 0xad, 0xc7, - 0x32, 0x95, 0x4f, 0xb7, 0x2f, 0xce, 0x8f, 0x65, 0xee, 0xc0, 0x0a, 0xbf, 0xb5, 0x0f, 0xa0, 0x3a, - 0x6f, 0xe9, 0xc5, 0x13, 0xf4, 0x28, 0x99, 0x8a, 0x16, 0x7d, 0x9f, 0x13, 0x85, 0x49, 0x68, 0xed, - 0x05, 0xd4, 0x87, 0xbe, 0xe9, 0x92, 0x23, 0x2c, 0x96, 0x90, 0x2b, 0x48, 0xaa, 0x41, 0x81, 0x4f, - 0x82, 0x5c, 0xca, 0x24, 0xe0, 0x28, 0xed, 0x2d, 0x28, 0x3c, 0xc7, 0xfe, 0x31, 0x4b, 0x41, 0x05, - 0xa6, 0x7f, 0x8c, 0x83, 0x65, 0xde, 0x22, 0xc7, 0x6a, 0xbb, 0x50, 0x19, 0x4c, 0x46, 0x8e, 0xf0, - 0xbb, 0xd1, 0x1b, 0x50, 0x9c, 0x78, 0x23, 0xc7, 0x9a, 0x89, 0xd4, 0xe5, 0x86, 0xec, 0x02, 0xb6, - 0x4e, 0xfb, 0x0c, 0xa1, 0x0b, 0x02, 0x6a, 0x5e, 0xcc, 0xfa, 0xa8, 0x34, 0x55, 0x9d, 0x7d, 0x6b, - 0x5d, 0xa8, 0x0d, 0xce, 0x9d, 0xc0, 0x3a, 0xf9, 0xc4, 0x09, 0x5c, 0x4c, 0x08, 0x75, 0x6c, 0xd9, - 0x26, 0x1c, 0x26, 0x54, 0x8b, 0xb4, 0xd8, 0xb3, 0xe9, 0x0c, 0x74, 0x88, 0x71, 0xce, 0xc9, 0x44, - 0xc4, 0x58, 0x76, 0x88, 0xa8, 0xa7, 0x0d, 0x01, 0x6d, 0x9b, 0x81, 0x75, 0x12, 0xe7, 0xf6, 0x21, - 0xa8, 0x84, 0x01, 0x64, 0xc5, 0x50, 0xd5, 0x62, 0x0d, 0x8b, 0x91, 0xeb, 0xeb, 0x24, 0x5a, 0xc4, - 0x44, 0xfb, 0xd3, 0x3c, 0x6c, 0x2d, 0x2c, 0x8a, 0x19, 0xbd, 0x52, 0x69, 0x35, 0x6c, 0xd0, 0x72, - 0x51, 0x5b, 0x8f, 0x8c, 0xb7, 0x30, 0x17, 0x66, 0x8a, 0xdf, 0x84, 0xf5, 0x40, 0x0c, 0xb9, 0x31, - 0x4a, 0x39, 0xfc, 0x88, 0xdb, 0x83, 0x5e, 0x0f, 0xe2, 0xf6, 0x11, 0x8b, 0x6c, 0xf2, 0x89, 0xc8, - 0xe6, 0x1b, 0xa1, 0x93, 0x8c, 0x27, 0x9e, 0x75, 0xc2, 0x5c, 0x15, 0xaa, 0x94, 0xd8, 0x98, 0x77, - 0x28, 0x4a, 0x7a, 0xca, 0xac, 0x40, 0xf7, 0x58, 0x6e, 0x07, 0xbc, 0x1b, 0xc5, 0x14, 0xdb, 0x03, - 0x4e, 0xd0, 0xe7, 0xfb, 0x4e, 0x61, 0x4c, 0xad, 0x4b, 0x84, 0x74, 0x15, 0xb9, 0x9d, 0xf9, 0xc7, - 0x58, 0xe7, 0x18, 0xf4, 0x1e, 0x54, 0x09, 0xb5, 0x27, 0x43, 0xec, 0x1a, 0x25, 0x46, 0x29, 0xcc, - 0x28, 0x62, 0x69, 0x7a, 0x85, 0x44, 0xcc, 0xee, 0x7d, 0xa8, 0x47, 0xd4, 0x69, 0x9c, 0x3d, 0x61, - 0x4b, 0x6a, 0xb8, 0x16, 0x46, 0xa7, 0x99, 0x5e, 0xb5, 0xa2, 0x93, 0x6e, 0x27, 0xc5, 0x24, 0x80, - 0xd5, 0x6d, 0xf0, 0xba, 0x8b, 0x66, 0xb4, 0x68, 0x17, 0x47, 0xb0, 0xde, 0x22, 0xa7, 0x42, 0xba, - 0xaf, 0x6e, 0x93, 0xd4, 0x7e, 0x57, 0x01, 0x75, 0xde, 0x50, 0xc6, 0x54, 0x68, 0xcd, 0xc5, 0xe7, - 0x46, 0x32, 0xc8, 0xad, 0xb8, 0xf8, 0x5c, 0x97, 0xd6, 0x70, 0x9f, 0xc6, 0xb9, 0xe7, 0x86, 0x98, - 0x78, 0xdc, 0xf9, 0xcd, 0xeb, 0xe0, 0xe2, 0xf3, 0x3e, 0x9b, 0x7c, 0x44, 0xfb, 0x03, 0x05, 0x90, - 0x8e, 0x27, 0x9e, 0x1f, 0x64, 0xef, 0xb4, 0x06, 0xf9, 0x11, 0x3e, 0x0a, 0x96, 0x74, 0x99, 0xe1, - 0xd0, 0xab, 0x50, 0xf0, 0x9d, 0xe3, 0x93, 0x60, 0x49, 0x1e, 0x9c, 0x23, 0xb5, 0x1d, 0xb8, 0x16, - 0x13, 0x26, 0x53, 0xa8, 0xf0, 0x03, 0x05, 0x36, 0x5b, 0xe4, 0x94, 0x0f, 0xf7, 0x57, 0x3d, 0x92, - 0xec, 0xb0, 0x83, 0x99, 0x39, 0x3f, 0x93, 0x90, 0x87, 0x1d, 0x14, 0xb4, 0x43, 0x21, 0xda, 0x3e, - 0xac, 0x31, 0x29, 0x7a, 0xed, 0xc5, 0x21, 0x53, 0x2e, 0x1f, 0xb2, 0xdc, 0xc2, 0x90, 0x1d, 0xc1, - 0xf5, 0x44, 0xf7, 0x32, 0xd9, 0xcf, 0x3d, 0x58, 0x95, 0xfc, 0x2b, 0x4f, 0x6a, 0x91, 0x69, 0xd9, - 0x6b, 0xeb, 0x14, 0xa3, 0x4d, 0xe8, 0x12, 0x49, 0x07, 0xe3, 0x0b, 0x6a, 0xf2, 0xe1, 0x3c, 0xb8, - 0x4e, 0x0f, 0xd9, 0xc3, 0xf0, 0xfa, 0x23, 0x68, 0x2c, 0xb6, 0x98, 0xc9, 0x06, 0xbe, 0x0d, 0xd5, - 0xa8, 0xdb, 0x44, 0x83, 0x38, 0x9e, 0x89, 0x99, 0x9f, 0x11, 0x71, 0xdd, 0xd7, 0x19, 0x78, 0x7e, - 0xe2, 0xf5, 0x00, 0x6a, 0xd8, 0xb5, 0x23, 0x64, 0x7c, 0x56, 0x55, 0xb1, 0x6b, 0x87, 0x44, 0xda, - 0x7b, 0x00, 0x3a, 0xb6, 0x3c, 0xdf, 0xee, 0x9b, 0x8e, 0x9f, 0xe2, 0xec, 0xc7, 0x8e, 0x45, 0xf3, - 0xc2, 0xbd, 0xd7, 0xfe, 0x53, 0x81, 0x92, 0xf4, 0x6d, 0xe3, 0x8b, 0xb8, 0x92, 0x58, 0xc4, 0x19, - 0xd2, 0xb4, 0x0d, 0xb1, 0xab, 0x0a, 0xa4, 0x69, 0x33, 0x67, 0x8e, 0xa5, 0x21, 0x4d, 0xdb, 0x60, - 0x4e, 0x2a, 0xb3, 0xb7, 0xbc, 0xce, 0xc8, 0xb7, 0x29, 0x20, 0xe9, 0x7b, 0xe5, 0xaf, 0xe0, 0x7b, - 0xbd, 0x02, 0x55, 0xe1, 0xdf, 0xf2, 0x16, 0x0b, 0xdc, 0x2a, 0x05, 0x8c, 0x35, 0xfa, 0x00, 0x6a, - 0x92, 0x84, 0xb7, 0x2b, 0x7c, 0x69, 0x01, 0x64, 0x4d, 0x6b, 0xff, 0x58, 0x02, 0x98, 0x67, 0xd8, - 0x63, 0xa7, 0x00, 0x4a, 0xec, 0x14, 0x00, 0x35, 0xa1, 0x64, 0x99, 0x13, 0xd3, 0xa2, 0xc1, 0xb4, - 0xe8, 0x9f, 0x2c, 0xa3, 0xdb, 0x50, 0x36, 0xcf, 0x4c, 0x67, 0x64, 0x1e, 0x8e, 0xb0, 0xec, 0x5e, - 0x08, 0xa0, 0xb2, 0x0a, 0xbd, 0xf1, 0xf9, 0x96, 0x67, 0xf3, 0x4d, 0x6c, 0x65, 0x6c, 0xc2, 0xa1, - 0x37, 0x01, 0x11, 0x11, 0x2a, 0x10, 0xd7, 0x9c, 0x08, 0xc2, 0x02, 0x23, 0x54, 0x05, 0x66, 0xe0, - 0x9a, 0x13, 0x4e, 0xfd, 0x36, 0x6c, 0xfa, 0xd8, 0xc2, 0xce, 0x59, 0x82, 0xbe, 0xc8, 0xe8, 0x51, - 0x88, 0x9b, 0xd7, 0xb8, 0x03, 0x30, 0xb7, 0x25, 0xb6, 0x01, 0xd6, 0xf4, 0x72, 0x68, 0x46, 0xc2, - 0x59, 0x1d, 0xcd, 0x12, 0xfc, 0x4a, 0x8c, 0x6e, 0x43, 0xa2, 0xe6, 0xec, 0xb6, 0x60, 0xcd, 0x21, - 0xc6, 0xe1, 0x94, 0xcc, 0xd8, 0x56, 0x57, 0xd2, 0x8b, 0x0e, 0xd9, 0x9e, 0x92, 0x19, 0xb5, 0x82, - 0x29, 0xc1, 0x76, 0x34, 0x68, 0x28, 0x51, 0x00, 0x8b, 0x16, 0x16, 0x82, 0x9b, 0x4a, 0x4a, 0x70, - 0x93, 0x8c, 0x5e, 0xaa, 0x8b, 0xd1, 0x4b, 0x3c, 0xfe, 0xa9, 0x25, 0xe3, 0x9f, 0x58, 0x70, 0x53, - 0x4f, 0x04, 0x37, 0xd1, 0x88, 0x65, 0xfd, 0x0a, 0x11, 0xcb, 0x5b, 0x00, 0xa1, 0x8f, 0x4f, 0xa3, - 0x82, 0x88, 0x67, 0x3c, 0x9f, 0x4e, 0x7a, 0x59, 0xba, 0xfd, 0x04, 0xbd, 0x07, 0x35, 0x66, 0xea, - 0x8e, 0x67, 0xf8, 0x26, 0xb5, 0xba, 0x8d, 0x25, 0x75, 0x2a, 0x94, 0xac, 0xe7, 0xe9, 0x94, 0x08, - 0x7d, 0x03, 0xea, 0xb4, 0xc3, 0x78, 0x5e, 0x0d, 0x2d, 0xa9, 0xc6, 0xcc, 0x17, 0xcb, 0x7a, 0xef, - 0x42, 0xd5, 0x9b, 0x18, 0x23, 0x33, 0xc0, 0xae, 0xe5, 0x60, 0xd2, 0xb8, 0xb6, 0xac, 0x31, 0x6f, - 0xb2, 0x2b, 0x89, 0xd0, 0xd7, 0x01, 0xd8, 0x52, 0xcd, 0x67, 0xdb, 0xa6, 0x58, 0xdf, 0x62, 0x71, - 0xac, 0xce, 0xb2, 0x4f, 0x7c, 0x4e, 0x24, 0x66, 0xe7, 0xf5, 0x2b, 0xcc, 0x4e, 0x6a, 0x6e, 0x23, - 0xef, 0xdc, 0x20, 0x96, 0xe7, 0xe3, 0xc6, 0x0d, 0x3e, 0x42, 0x14, 0x32, 0xa0, 0x00, 0x6a, 0xed, - 0xb6, 0x39, 0x36, 0x8f, 0xb1, 0x2d, 0xf6, 0x15, 0x42, 0xe7, 0xdb, 0x16, 0xdb, 0x35, 0x54, 0x81, - 0x11, 0x79, 0xd7, 0x9e, 0x4d, 0x77, 0x20, 0x87, 0x18, 0xcc, 0x08, 0xb9, 0xc9, 0x35, 0x78, 0xe6, - 0xdb, 0x21, 0x2d, 0x0a, 0x63, 0x76, 0xf7, 0x0b, 0x50, 0x27, 0xe2, 0x84, 0x51, 0x88, 0x79, 0x93, - 0x75, 0x4b, 0x0c, 0xae, 0x3c, 0x7d, 0x64, 0x5d, 0xab, 0x91, 0x48, 0x89, 0xd0, 0xa8, 0x9e, 0xc9, - 0x1a, 0xf8, 0xd8, 0xb5, 0x1b, 0xcd, 0xe8, 0x29, 0xfc, 0x60, 0xe4, 0x9d, 0x0f, 0x29, 0x98, 0x0b, - 0xcf, 0x3e, 0xb5, 0x3f, 0x54, 0xa0, 0x1c, 0x22, 0x58, 0x2a, 0xce, 0x9c, 0x12, 0x6c, 0xf0, 0xc5, - 0x93, 0xae, 0x19, 0x8a, 0x0e, 0x0c, 0xf4, 0x82, 0x5d, 0x2c, 0xb9, 0x03, 0xbc, 0xc4, 0x86, 0x95, - 0x2d, 0x1c, 0x8a, 0x5e, 0x66, 0x10, 0x3a, 0x82, 0x7c, 0x6d, 0x20, 0xd3, 0x51, 0x20, 0x18, 0xac, - 0x32, 0x82, 0x0a, 0x87, 0x71, 0x0e, 0xf7, 0x40, 0x14, 0x39, 0x8b, 0x3c, 0x6f, 0x82, 0x83, 0x28, - 0x0f, 0xed, 0xc7, 0x0a, 0x54, 0xa3, 0x3d, 0xbc, 0x78, 0xa1, 0x7e, 0x02, 0xd7, 0x8f, 0xb1, 0x8b, - 0x29, 0x2f, 0xc3, 0x9e, 0xfa, 0x22, 0x94, 0xc6, 0x96, 0x58, 0xd4, 0xae, 0x49, 0x64, 0x5b, 0xe0, - 0x06, 0xd8, 0x42, 0x8f, 0x60, 0x83, 0x2e, 0x42, 0x71, 0x7a, 0xbe, 0xce, 0xad, 0x53, 0x44, 0x94, - 0xf6, 0x4d, 0x40, 0x81, 0x17, 0x98, 0xa3, 0x38, 0x31, 0xf7, 0xf9, 0x55, 0x86, 0x89, 0x52, 0xbf, - 0x06, 0x3c, 0x54, 0xa0, 0x3b, 0x28, 0x5f, 0x35, 0xf8, 0x4a, 0x5e, 0x0b, 0xa1, 0x74, 0xe9, 0xa0, - 0x5d, 0x04, 0xe6, 0xd0, 0xb3, 0xad, 0x16, 0xfd, 0x12, 0x00, 0xbf, 0x9e, 0x16, 0x50, 0x8d, 0xf0, - 0xcd, 0xf5, 0xce, 0xe3, 0xf8, 0x8d, 0x35, 0xdd, 0x3c, 0x0a, 0x76, 0x3d, 0xcb, 0x1c, 0x51, 0x95, - 0x60, 0xbd, 0x4c, 0xb1, 0xec, 0x13, 0x6d, 0x87, 0xeb, 0x31, 0xaf, 0xcf, 0x9d, 0xa5, 0x7b, 0xc9, - 0xfa, 0x8c, 0x24, 0xc2, 0x41, 0x2c, 0xd8, 0x9c, 0xc7, 0xeb, 0xb0, 0xee, 0x10, 0xe3, 0xc8, 0xf3, - 0x2d, 0x1c, 0x8d, 0x87, 0x4a, 0x7a, 0xcd, 0x21, 0x4f, 0x29, 0x74, 0x57, 0x3a, 0x12, 0xea, 0x89, - 0x49, 0x0c, 0xcb, 0x1b, 0x8f, 0x9d, 0xc0, 0xe0, 0xf1, 0x47, 0x9e, 0x11, 0xd6, 0x4f, 0x4c, 0xb2, - 0xc3, 0xc0, 0x2c, 0x04, 0xd1, 0x5e, 0x40, 0x45, 0x1c, 0xb6, 0xb2, 0x2e, 0xbe, 0x0b, 0x55, 0x36, - 0x49, 0x7d, 0x56, 0x4c, 0x04, 0xe5, 0x73, 0x55, 0xe8, 0x95, 0x49, 0xf8, 0xcd, 0x92, 0x26, 0x24, - 0xc0, 0xd2, 0x01, 0x60, 0xdf, 0xda, 0xff, 0x28, 0x70, 0x9d, 0x31, 0xfe, 0xa2, 0xa9, 0x34, 0x71, - 0x38, 0x9d, 0xbb, 0xf0, 0x70, 0x9a, 0x85, 0x50, 0x6c, 0x07, 0xe5, 0x82, 0x0b, 0xdf, 0x79, 0x23, - 0x42, 0x2e, 0x05, 0x27, 0x91, 0xde, 0x7e, 0x02, 0xc8, 0xf6, 0x0d, 0x73, 0x1a, 0x78, 0x64, 0xe6, - 0x5a, 0x32, 0xb3, 0xc3, 0x1d, 0x81, 0x37, 0xd2, 0x32, 0x3b, 0x8c, 0x53, 0x5b, 0x6f, 0x4d, 0x03, - 0x6f, 0x30, 0x73, 0x2d, 0x91, 0xd7, 0x51, 0x6d, 0xbf, 0x25, 0x78, 0x88, 0xd3, 0x62, 0x1b, 0x50, - 0x1b, 0x8f, 0xbd, 0x00, 0x3f, 0x35, 0x9d, 0x11, 0xb6, 0x5f, 0x78, 0x01, 0xf6, 0xc9, 0xc5, 0x13, - 0xe4, 0x1d, 0xa8, 0x1d, 0x31, 0x62, 0xe3, 0x8c, 0x51, 0xa7, 0x66, 0x2c, 0xaa, 0x47, 0x11, 0x7e, - 0xda, 0x21, 0x54, 0xa2, 0x83, 0xfe, 0x20, 0xe4, 0x20, 0x4e, 0x79, 0x15, 0xb6, 0xb4, 0x89, 0x3a, - 0xfc, 0xe4, 0x98, 0xee, 0xb9, 0x98, 0xee, 0x32, 0x31, 0x23, 0x92, 0xbe, 0xf3, 0x06, 0x43, 0x45, - 0x78, 0x12, 0xed, 0x7b, 0x39, 0xa8, 0x8a, 0xdb, 0x13, 0xb3, 0xfe, 0xc8, 0x74, 0xa9, 0x8f, 0x6a, - 0xf9, 0x98, 0x6d, 0x16, 0x4a, 0xba, 0x8f, 0x2a, 0xd0, 0xe8, 0x4d, 0x58, 0x9b, 0x4e, 0x6c, 0x46, - 0x99, 0xea, 0xcd, 0x6e, 0xe7, 0x1a, 0x8a, 0x2e, 0x49, 0xd0, 0x5d, 0x80, 0xf0, 0x50, 0x3c, 0x0c, - 0xbf, 0xe6, 0x10, 0xf4, 0x04, 0xd6, 0x6c, 0xa6, 0x52, 0x99, 0x03, 0x15, 0xb1, 0xea, 0xa2, 0x9e, - 0x75, 0x49, 0x48, 0xad, 0x22, 0x36, 0x57, 0x0a, 0x51, 0xab, 0x88, 0x74, 0x53, 0xaf, 0x1c, 0x45, - 0xf4, 0x28, 0xcd, 0xb9, 0x18, 0x31, 0xe7, 0xf7, 0xa1, 0xd6, 0x3a, 0x37, 0x4f, 0xb1, 0x3c, 0x98, - 0xa3, 0x6e, 0xb2, 0x79, 0xe8, 0x7a, 0xfe, 0xd8, 0x1c, 0xc5, 0xd5, 0x5d, 0x97, 0x60, 0x71, 0x74, - 0xff, 0xd3, 0x1c, 0xdc, 0x48, 0x4e, 0x84, 0x9f, 0x9d, 0x7b, 0x0d, 0xb4, 0x1f, 0xf2, 0x02, 0x9f, - 0x3c, 0x6a, 0xe1, 0x37, 0xdd, 0xea, 0x02, 0x2c, 0xcf, 0x5a, 0x3e, 0x80, 0x2d, 0x1f, 0x7f, 0x36, - 0x75, 0x7c, 0x6c, 0xd8, 0x38, 0xe0, 0x76, 0x26, 0x26, 0x1b, 0x5b, 0x59, 0xd8, 0x68, 0x5e, 0x17, - 0x24, 0x6d, 0x41, 0x21, 0xe6, 0xd9, 0xcf, 0x53, 0xef, 0x84, 0xdb, 0x90, 0x31, 0x19, 0x99, 0xae, - 0x18, 0x08, 0x34, 0x77, 0x18, 0xa4, 0x79, 0xe9, 0x55, 0x3f, 0x6a, 0x6c, 0x1f, 0x40, 0xdd, 0x64, - 0x6a, 0x97, 0x3b, 0xb6, 0x48, 0xb7, 0x88, 0x35, 0x23, 0x36, 0x24, 0x7a, 0xcd, 0x8c, 0x16, 0xb5, - 0xef, 0xe7, 0x60, 0x73, 0x60, 0x99, 0x41, 0x40, 0x17, 0xaa, 0xcc, 0x57, 0x19, 0xee, 0x2d, 0x1c, - 0x8e, 0xb3, 0x8e, 0xce, 0xe7, 0xed, 0x15, 0xef, 0xad, 0x45, 0x92, 0xfd, 0xf9, 0x0b, 0x92, 0xfd, - 0x9b, 0x50, 0x38, 0xf6, 0xbd, 0xe9, 0x84, 0x69, 0xa8, 0xac, 0xf3, 0xc2, 0xfc, 0x3e, 0x05, 0xf3, - 0x58, 0x8a, 0xcc, 0xce, 0x84, 0x58, 0xd4, 0x55, 0x61, 0x5b, 0x75, 0xe0, 0xcf, 0x0c, 0x7e, 0x4a, - 0xce, 0x53, 0xf3, 0xc0, 0x40, 0xbb, 0x14, 0xa2, 0x9d, 0xc1, 0xf5, 0x84, 0x26, 0x32, 0x59, 0xe0, - 0x5b, 0x70, 0xed, 0xc8, 0x71, 0x1d, 0x72, 0x82, 0x6d, 0x63, 0x82, 0x7d, 0x0b, 0xbb, 0x81, 0xbc, - 0x88, 0x99, 0xd7, 0x91, 0x44, 0xf5, 0x43, 0x8c, 0xd6, 0x86, 0xeb, 0x5d, 0x1c, 0x74, 0x77, 0x06, - 0xe6, 0x11, 0xee, 0x7b, 0x8e, 0x9b, 0x69, 0x0f, 0xd0, 0x30, 0xdc, 0x48, 0x72, 0xc9, 0x24, 0x3e, - 0x75, 0x0f, 0xcd, 0x23, 0x6c, 0x4c, 0x28, 0x0f, 0x21, 0x75, 0x99, 0x48, 0xa6, 0xda, 0x11, 0x34, - 0x0e, 0xd8, 0x5a, 0xf4, 0x05, 0xe5, 0xbd, 0xac, 0x1d, 0x0f, 0x6e, 0xa6, 0xb4, 0x93, 0xa9, 0x47, - 0xaf, 0x42, 0xdd, 0xc5, 0xe7, 0xc6, 0x42, 0x6b, 0x55, 0x17, 0x9f, 0x87, 0xbc, 0xb5, 0x1f, 0x29, - 0x70, 0x8f, 0xb7, 0x38, 0xc0, 0xfe, 0x99, 0x63, 0x7d, 0x29, 0x1d, 0xe4, 0x9c, 0xe4, 0xa4, 0xa8, - 0xea, 0x65, 0x01, 0xe9, 0xd9, 0x34, 0xca, 0x1f, 0x0e, 0x77, 0xd9, 0x74, 0x58, 0xd5, 0xe9, 0x67, - 0x42, 0x23, 0xf9, 0xa4, 0x46, 0xfe, 0x4e, 0x81, 0xfb, 0xcb, 0x05, 0xcc, 0x3c, 0xd6, 0x9f, 0x4b, - 0xc4, 0x57, 0xa1, 0x3e, 0x76, 0x5c, 0x63, 0x41, 0xcc, 0xea, 0xd8, 0x71, 0xe7, 0xaa, 0xfc, 0x23, - 0x05, 0x40, 0x0f, 0xfd, 0xb1, 0xc5, 0xd0, 0x52, 0xb9, 0xf4, 0xdc, 0x2c, 0x77, 0xd9, 0xb9, 0xd9, - 0xea, 0x25, 0xe7, 0x66, 0xf9, 0x78, 0x68, 0xa9, 0xfd, 0x9e, 0x02, 0x1b, 0xd4, 0x17, 0xf9, 0x02, - 0x6b, 0xdc, 0xab, 0x50, 0xe4, 0xc7, 0xcc, 0xa9, 0x47, 0xae, 0x02, 0xc7, 0xd2, 0x77, 0x2c, 0x98, - 0x77, 0x5c, 0x1b, 0xbf, 0x14, 0x72, 0xf2, 0xf8, 0xbe, 0x47, 0x21, 0xda, 0xbb, 0xdc, 0x59, 0x26, - 0x3c, 0xc0, 0x79, 0x4d, 0x9e, 0xbc, 0x28, 0xe9, 0x27, 0x96, 0xe2, 0xf0, 0xe5, 0x6b, 0x50, 0xe0, - 0x67, 0x90, 0x5a, 0x9c, 0x3e, 0xf5, 0xa4, 0xe6, 0x77, 0x56, 0x01, 0x45, 0xfb, 0x9a, 0xc9, 0x34, - 0xae, 0x9c, 0x64, 0xbb, 0xb4, 0xc7, 0xd4, 0x5b, 0x8e, 0xb8, 0xf4, 0xd2, 0x31, 0x51, 0xa3, 0x37, - 0x62, 0x58, 0xec, 0x17, 0xf1, 0xe1, 0x69, 0xf0, 0x5c, 0x17, 0x95, 0xe2, 0xa7, 0xed, 0xf1, 0x1e, - 0xd7, 0x38, 0x8d, 0x70, 0xc3, 0xa2, 0x57, 0xc3, 0x8a, 0x42, 0x9f, 0x4b, 0xae, 0x86, 0xa1, 0xb7, - 0x62, 0xe7, 0xc5, 0x6a, 0xd2, 0x81, 0x27, 0x0b, 0x07, 0xc6, 0x6f, 0x27, 0x0f, 0x8c, 0x79, 0xee, - 0xa0, 0x12, 0xa9, 0x93, 0xb8, 0xa5, 0xf4, 0x6b, 0xec, 0xe2, 0xc3, 0xfe, 0x84, 0x46, 0x6c, 0x9e, - 0xff, 0xa5, 0x5f, 0x3a, 0xd3, 0xfe, 0x49, 0x61, 0xb7, 0x2d, 0xe7, 0x0d, 0x64, 0x1a, 0xe8, 0x0b, - 0xef, 0xb5, 0x21, 0xc8, 0xdb, 0x98, 0xf0, 0x70, 0xb2, 0xaa, 0xb3, 0x6f, 0xca, 0x3e, 0x12, 0x02, - 0xd4, 0x25, 0x7b, 0x29, 0x86, 0x70, 0xa2, 0x04, 0x0d, 0x3b, 0xcb, 0x73, 0x5c, 0xf9, 0xe0, 0x82, - 0x7d, 0xb3, 0xc3, 0x0a, 0x6a, 0xa0, 0xcf, 0xcd, 0x97, 0xc3, 0x41, 0xd6, 0x64, 0xfa, 0xd8, 0x7c, - 0x69, 0x84, 0x11, 0xcf, 0xc2, 0xcd, 0xfc, 0xc2, 0xd8, 0x7c, 0x39, 0xe4, 0xb9, 0x8e, 0x53, 0x67, - 0x62, 0x58, 0x27, 0xd8, 0x3a, 0x15, 0x41, 0x60, 0x99, 0x42, 0xd8, 0xb1, 0xa3, 0xf6, 0xc7, 0x62, - 0x55, 0x10, 0x82, 0x64, 0xbd, 0x45, 0x46, 0x45, 0x19, 0xd1, 0x58, 0xf4, 0x02, 0x81, 0x60, 0x6c, - 0xbe, 0x64, 0xf1, 0xaa, 0x90, 0x6a, 0xe6, 0x5a, 0xd8, 0x36, 0x6c, 0x4b, 0x5e, 0x20, 0x2a, 0x73, - 0x48, 0xdb, 0x22, 0xda, 0x6f, 0x29, 0x70, 0x2d, 0x72, 0x9e, 0x45, 0x32, 0xef, 0x3e, 0xec, 0x18, - 0x21, 0x72, 0x92, 0x5a, 0x66, 0x10, 0x96, 0x7f, 0x4d, 0x38, 0x43, 0xab, 0x0b, 0xce, 0xd0, 0x9f, - 0x28, 0xb0, 0x19, 0x17, 0xe2, 0xff, 0xc5, 0x19, 0x4a, 0x38, 0x71, 0xab, 0x09, 0x27, 0x4e, 0xfb, - 0x2b, 0x05, 0xee, 0x30, 0xb1, 0x5a, 0xae, 0x1d, 0x73, 0xd6, 0xbe, 0x12, 0x2d, 0x85, 0x7e, 0xe6, - 0x6a, 0xd4, 0xcf, 0x4c, 0xe8, 0x2e, 0xbf, 0xa0, 0xbb, 0xff, 0x56, 0xe0, 0xee, 0x32, 0x21, 0x33, - 0x69, 0xf1, 0x03, 0xb8, 0xc9, 0xc5, 0x5c, 0xae, 0xcb, 0x2d, 0x46, 0xf0, 0x74, 0x51, 0xa1, 0x1f, - 0xc2, 0x2d, 0xc2, 0x65, 0x48, 0xad, 0xcd, 0x47, 0xfe, 0xa6, 0x20, 0x79, 0x7a, 0xd9, 0x80, 0xe4, - 0x93, 0x03, 0x72, 0xc2, 0x6e, 0x1e, 0xb6, 0x77, 0xe4, 0x8d, 0xb1, 0x9e, 0x7b, 0xe4, 0x65, 0x0c, - 0x21, 0x62, 0x57, 0xd1, 0x72, 0x0b, 0x57, 0xd1, 0x7e, 0x5f, 0x81, 0x9b, 0x29, 0x4d, 0x65, 0x7d, - 0xa8, 0xc0, 0x9f, 0x0f, 0xb1, 0x76, 0x0a, 0xba, 0x28, 0x45, 0xd6, 0x95, 0xd5, 0x8b, 0xd6, 0x15, - 0xed, 0x9f, 0x73, 0x00, 0xf3, 0xf4, 0x2a, 0xaa, 0x43, 0xae, 0xbb, 0x23, 0xdc, 0x9a, 0x5c, 0x77, - 0x87, 0x3a, 0x4e, 0x5d, 0x2c, 0xdd, 0x4c, 0xfa, 0x49, 0x97, 0xc1, 0x81, 0x65, 0x4a, 0xbf, 0x85, - 0x7d, 0xa3, 0xfb, 0x50, 0xd9, 0xf1, 0x26, 0xbe, 0x67, 0x61, 0x42, 0x3c, 0x5f, 0xd8, 0x51, 0x14, - 0x44, 0xc5, 0x6c, 0xe3, 0x11, 0x0e, 0x64, 0xe2, 0x4d, 0x94, 0x68, 0x4d, 0xfe, 0xa5, 0x9b, 0xee, - 0x31, 0x16, 0x21, 0x78, 0x14, 0x44, 0x25, 0xe8, 0x4f, 0x65, 0x90, 0x43, 0x3f, 0x51, 0x13, 0x4a, - 0x7d, 0x1f, 0xb3, 0x04, 0xb5, 0xb8, 0x75, 0x14, 0x96, 0xd1, 0x37, 0xe0, 0x46, 0xcb, 0x62, 0x21, - 0x69, 0x1f, 0x13, 0xe2, 0x8c, 0x1d, 0x12, 0x38, 0x54, 0xf1, 0xa7, 0xe2, 0xfe, 0xd1, 0x12, 0x2c, - 0x95, 0x8f, 0x67, 0xc9, 0xc4, 0x71, 0x82, 0x28, 0xd1, 0xb6, 0x74, 0x6f, 0x34, 0x3a, 0x34, 0xad, - 0x53, 0x71, 0x8e, 0x10, 0x96, 0xb5, 0xbf, 0x55, 0x60, 0x53, 0x1c, 0xca, 0x89, 0x3d, 0x39, 0x8b, - 0xb5, 0x24, 0xaf, 0x25, 0xe4, 0xae, 0x78, 0x2d, 0x21, 0xe2, 0x21, 0xac, 0x5e, 0x7c, 0x79, 0x5c, - 0xeb, 0xc0, 0xf5, 0x84, 0x9c, 0x59, 0x4f, 0x8f, 0x9b, 0x9c, 0xcf, 0x73, 0x87, 0x3a, 0x63, 0xde, - 0xe8, 0x0c, 0xdb, 0x43, 0xf2, 0x25, 0xbf, 0x83, 0x41, 0xaf, 0xc3, 0x3a, 0xf5, 0xcc, 0x7d, 0xd1, - 0x80, 0x34, 0xe1, 0xbc, 0x5e, 0x1b, 0x47, 0x9b, 0xd5, 0x9e, 0xc1, 0xad, 0x54, 0x69, 0x32, 0xf5, - 0xed, 0x04, 0x6e, 0x0d, 0x70, 0xd0, 0x79, 0x19, 0x60, 0xdf, 0x35, 0x47, 0xf3, 0x59, 0x92, 0xa5, - 0x6f, 0xb7, 0xa3, 0xef, 0xed, 0x84, 0xff, 0x3f, 0x7f, 0x5e, 0xb7, 0x0b, 0xb7, 0xd3, 0x5b, 0xca, - 0x24, 0xf7, 0xc7, 0x70, 0xab, 0xfb, 0x25, 0xc9, 0xad, 0x7d, 0x07, 0x6e, 0x77, 0xbf, 0x34, 0xc9, - 0x2e, 0xd6, 0xc2, 0xa3, 0xfb, 0x50, 0x0e, 0xdf, 0xb4, 0xa2, 0x35, 0x58, 0xed, 0x1f, 0x0c, 0xd5, - 0x15, 0x04, 0x50, 0x6c, 0x77, 0x76, 0x3b, 0xc3, 0x8e, 0xaa, 0x3c, 0xfa, 0x5e, 0x0e, 0xca, 0xe1, - 0x6b, 0x50, 0x54, 0x84, 0xdc, 0xfe, 0x33, 0x75, 0x05, 0x55, 0x60, 0xed, 0x60, 0xef, 0xd9, 0xde, - 0xfe, 0x27, 0x7b, 0xaa, 0x82, 0x36, 0x41, 0xdd, 0xdb, 0x1f, 0x1a, 0xdb, 0xfb, 0xfb, 0xc3, 0xc1, - 0x50, 0x6f, 0xf5, 0xfb, 0x9d, 0xb6, 0x9a, 0x43, 0xd7, 0x60, 0x7d, 0x30, 0xdc, 0xd7, 0x3b, 0xc6, - 0x70, 0xff, 0xf9, 0xf6, 0x60, 0xb8, 0xbf, 0xd7, 0x51, 0x57, 0x51, 0x03, 0x36, 0x5b, 0xbb, 0x7a, - 0xa7, 0xd5, 0xfe, 0x34, 0x4e, 0x9e, 0xa7, 0x98, 0xde, 0xde, 0xce, 0xfe, 0xf3, 0x7e, 0x6b, 0xd8, - 0xdb, 0xde, 0xed, 0x18, 0x2f, 0x3a, 0xfa, 0xa0, 0xb7, 0xbf, 0xa7, 0x16, 0x28, 0x7b, 0xbd, 0xd3, - 0xed, 0xed, 0xef, 0x19, 0xb4, 0x95, 0xa7, 0xfb, 0x07, 0x7b, 0x6d, 0xb5, 0x88, 0x6e, 0xc1, 0x56, - 0x77, 0x77, 0x7f, 0xbb, 0xb5, 0x6b, 0xec, 0xec, 0xef, 0x3d, 0xed, 0x75, 0x23, 0xc8, 0x35, 0x5a, - 0xa5, 0x7d, 0xd0, 0xdf, 0xed, 0xed, 0xb4, 0x86, 0x9d, 0xb6, 0xd1, 0xd9, 0x1b, 0xea, 0x9f, 0xaa, - 0x25, 0x2a, 0x11, 0xfb, 0x8c, 0x90, 0x96, 0xd1, 0x06, 0xd4, 0x7a, 0x7b, 0x2f, 0x5a, 0xbb, 0xbd, - 0xb6, 0xf1, 0xa2, 0xb5, 0x7b, 0xd0, 0x51, 0x01, 0x21, 0xa8, 0xb7, 0x5b, 0xc3, 0x96, 0xc1, 0xa4, - 0xd9, 0x19, 0x76, 0xda, 0x6a, 0xe5, 0xd1, 0x7b, 0x50, 0x89, 0x5c, 0x2c, 0x43, 0x25, 0xc8, 0x0f, - 0x76, 0x5a, 0x7b, 0xea, 0x0a, 0x5a, 0x87, 0x4a, 0xab, 0xdf, 0xd7, 0xf7, 0xbf, 0xd5, 0x7b, 0xde, - 0xa2, 0x0a, 0xa3, 0xca, 0x3b, 0x18, 0x74, 0x9e, 0x75, 0x3e, 0x55, 0x73, 0x8f, 0xfa, 0x50, 0x8f, - 0x7b, 0xb1, 0x54, 0x71, 0x83, 0x83, 0x9d, 0x9d, 0xce, 0x60, 0xc0, 0xb5, 0x38, 0xec, 0x3d, 0xef, - 0xec, 0x1f, 0x0c, 0x79, 0xbd, 0x9d, 0xd6, 0xde, 0x4e, 0x67, 0x57, 0xcd, 0x51, 0x84, 0xde, 0xe9, - 0xef, 0xb6, 0x76, 0xa8, 0xce, 0x68, 0xe1, 0x60, 0x6f, 0xaf, 0xb7, 0xd7, 0x55, 0xf3, 0x8f, 0xfe, - 0x41, 0x81, 0x32, 0xdb, 0x27, 0x9e, 0x39, 0xae, 0x4d, 0xeb, 0xec, 0x07, 0x27, 0xd8, 0x27, 0xea, - 0x0a, 0x1d, 0x9a, 0xee, 0x8e, 0xaa, 0xd0, 0x51, 0xec, 0xe2, 0x40, 0xcd, 0x31, 0x19, 0x2d, 0xd3, - 0x55, 0x57, 0xa9, 0x8c, 0x91, 0x4d, 0x40, 0xcd, 0xb3, 0x01, 0x66, 0x6b, 0xbb, 0x5a, 0xa0, 0xc8, - 0xc8, 0x3a, 0xaf, 0x16, 0x99, 0x19, 0x4c, 0x03, 0x75, 0x0d, 0x55, 0xe7, 0x0b, 0xbc, 0x5a, 0x42, - 0xcd, 0x65, 0x4b, 0xba, 0x5a, 0x66, 0xb2, 0xb3, 0x85, 0x5a, 0x05, 0x5a, 0x4b, 0x2e, 0xcd, 0x6a, - 0xe5, 0xc9, 0x5f, 0x6e, 0x41, 0xae, 0xdf, 0x46, 0x2d, 0x80, 0xf9, 0x75, 0x66, 0xb4, 0xb5, 0x78, - 0xc1, 0x99, 0x4d, 0x84, 0x66, 0x63, 0xd9, 0xcd, 0x67, 0x6d, 0x05, 0xbd, 0x0d, 0xab, 0x43, 0xe2, - 0x21, 0x11, 0x52, 0xcd, 0xdf, 0x1c, 0x37, 0x37, 0x22, 0x10, 0x49, 0xfd, 0x50, 0x79, 0x5b, 0x41, - 0x1f, 0x42, 0x39, 0x7c, 0xd0, 0x89, 0xc4, 0x63, 0xf3, 0xe4, 0x8b, 0xda, 0xe6, 0xd6, 0x02, 0x3c, - 0x6c, 0xf1, 0x39, 0xd4, 0xe3, 0x4f, 0x42, 0xd1, 0x2d, 0x4e, 0x9c, 0xfa, 0xdc, 0xb4, 0x79, 0x3b, - 0x1d, 0x19, 0xb2, 0x7b, 0x1f, 0xd6, 0xc4, 0xb3, 0x4d, 0x24, 0xa6, 0x6c, 0xfc, 0x11, 0x68, 0xf3, - 0x7a, 0x02, 0x1a, 0xd6, 0x34, 0x60, 0x33, 0xed, 0x4d, 0x25, 0x7a, 0x45, 0xb6, 0xb8, 0xf4, 0xed, - 0x66, 0x53, 0xbb, 0x88, 0x24, 0x6c, 0xe0, 0x17, 0xa1, 0x24, 0x9f, 0x3c, 0xa2, 0xeb, 0xe1, 0x18, - 0x44, 0xdf, 0x1c, 0x36, 0x6f, 0x24, 0xc1, 0xd1, 0xca, 0xf2, 0xe9, 0xa0, 0xac, 0x9c, 0x78, 0xb0, - 0x28, 0x2b, 0x27, 0x5f, 0x18, 0x6a, 0x2b, 0xa8, 0x0b, 0xd5, 0xe8, 0x0b, 0x3b, 0x74, 0x33, 0x6c, - 0x26, 0xf9, 0xe6, 0xaf, 0xd9, 0x4c, 0x43, 0x45, 0x07, 0x2b, 0x9e, 0xee, 0x97, 0x83, 0x95, 0x7a, - 0x1a, 0x26, 0x07, 0x2b, 0xfd, 0x84, 0x40, 0x5b, 0x41, 0x43, 0x58, 0x4f, 0xdc, 0xbe, 0x44, 0xb7, - 0xa3, 0xf9, 0x85, 0x05, 0x86, 0x77, 0x96, 0x60, 0x93, 0x16, 0x19, 0xbe, 0x1b, 0x43, 0x73, 0x8d, - 0xc6, 0x72, 0x48, 0xcd, 0xad, 0x05, 0x78, 0x28, 0xd5, 0x36, 0xd4, 0xba, 0x38, 0xe8, 0xfb, 0xf8, - 0x2c, 0x3b, 0x8f, 0xa7, 0x8c, 0xc7, 0xfc, 0xed, 0x1a, 0x6a, 0x26, 0x68, 0x23, 0x0f, 0xda, 0x2e, - 0xe2, 0xd3, 0x86, 0x4a, 0xe4, 0xc5, 0x14, 0x12, 0x53, 0x77, 0xf1, 0x41, 0x5a, 0xf3, 0x66, 0x0a, - 0x26, 0xe4, 0xf2, 0x21, 0x94, 0xe4, 0x2d, 0x43, 0x69, 0x3c, 0x89, 0xeb, 0x8d, 0xd2, 0x78, 0x92, - 0x97, 0x11, 0xb5, 0xd5, 0xef, 0xe7, 0x14, 0xd4, 0x85, 0x4a, 0xe4, 0x3e, 0x9e, 0x94, 0x62, 0xf1, - 0xbe, 0xa0, 0x94, 0x22, 0xe5, 0xf2, 0x1e, 0x67, 0xf4, 0x31, 0xd4, 0x62, 0x77, 0xd6, 0xa4, 0x5a, - 0xd2, 0xee, 0xe9, 0x35, 0x6f, 0xa5, 0xe2, 0xc2, 0x4e, 0x0d, 0x40, 0x4d, 0xde, 0x12, 0x43, 0x77, - 0xa2, 0xed, 0x2f, 0x72, 0xbc, 0xbb, 0x0c, 0x1d, 0x65, 0x9a, 0x7c, 0x91, 0x25, 0x99, 0x2e, 0x79, - 0xf1, 0x25, 0x99, 0x2e, 0x7b, 0xc8, 0xc5, 0x99, 0x26, 0x9f, 0x3f, 0x49, 0xa6, 0x4b, 0x5e, 0x62, - 0x49, 0xa6, 0xcb, 0x5e, 0x4d, 0x69, 0x2b, 0x54, 0x95, 0xb1, 0x20, 0x55, 0xaa, 0x32, 0xed, 0x54, - 0x48, 0xaa, 0x32, 0xf5, 0x9c, 0x84, 0x4f, 0xeb, 0xf8, 0x21, 0x84, 0x9c, 0xd6, 0xa9, 0x07, 0x1c, - 0x72, 0x5a, 0xa7, 0x9f, 0x5b, 0x68, 0x2b, 0xe8, 0x05, 0x6c, 0x2c, 0x1c, 0x02, 0x20, 0xd1, 0xa3, - 0x65, 0xa7, 0x10, 0xcd, 0x7b, 0x4b, 0xf1, 0x21, 0xdf, 0x53, 0x79, 0x88, 0xb1, 0x98, 0x49, 0x47, - 0xaf, 0x45, 0xab, 0x2f, 0x3d, 0x0a, 0x68, 0xbe, 0x7e, 0x19, 0x59, 0x64, 0x06, 0x57, 0xe6, 0xd9, - 0xd8, 0x70, 0x37, 0x5d, 0x48, 0x46, 0xcb, 0xdd, 0x74, 0x31, 0x73, 0x2b, 0x56, 0xa3, 0x36, 0x54, - 0x22, 0xd9, 0x3e, 0x34, 0xdf, 0x7c, 0x13, 0x19, 0xc6, 0xe6, 0xcd, 0x14, 0x4c, 0x64, 0x06, 0x97, - 0xc3, 0x8c, 0x97, 0x5c, 0x8f, 0x92, 0xb9, 0xb8, 0xe6, 0xd6, 0x02, 0x3c, 0xba, 0x03, 0x44, 0xd3, - 0x42, 0x72, 0x07, 0x48, 0xc9, 0x57, 0xc9, 0x1d, 0x20, 0x2d, 0x8b, 0xa4, 0xad, 0x20, 0x0c, 0x37, - 0xd2, 0x73, 0x24, 0xe8, 0x41, 0xa4, 0xde, 0xb2, 0x34, 0x4f, 0xf3, 0xd5, 0x8b, 0x89, 0xa2, 0x26, - 0xb4, 0x90, 0x34, 0x40, 0xf3, 0x99, 0x96, 0x9a, 0xb8, 0x90, 0x26, 0xb4, 0x34, 0xdb, 0xc0, 0xf9, - 0x2e, 0xfc, 0x95, 0x8f, 0xe4, 0xbb, 0xec, 0x2f, 0x85, 0x24, 0xdf, 0xa5, 0xff, 0x01, 0xc4, 0xa7, - 0x78, 0xf2, 0x0f, 0x79, 0xe4, 0x14, 0x5f, 0xf2, 0xd7, 0x3f, 0x72, 0x8a, 0x2f, 0xfb, 0x1f, 0x1f, - 0x6d, 0x05, 0x7d, 0x0b, 0x36, 0x16, 0xfe, 0x7f, 0x49, 0x0a, 0xbb, 0xec, 0x2f, 0x9f, 0xa4, 0xb0, - 0x4b, 0xff, 0xb8, 0x49, 0x5b, 0x79, 0x5b, 0x41, 0xbb, 0x50, 0x8b, 0x05, 0xc9, 0x72, 0xf1, 0x48, - 0x8b, 0xf0, 0xe5, 0xe2, 0x91, 0x1a, 0x55, 0x53, 0x23, 0x47, 0xdf, 0x96, 0xd7, 0xb5, 0xa3, 0xc1, - 0xe9, 0x00, 0xdd, 0x8f, 0xd6, 0x4b, 0x8b, 0xa2, 0x9b, 0xaf, 0x5c, 0x40, 0x11, 0xf5, 0xcb, 0xd2, - 0x62, 0x48, 0xe9, 0x97, 0x5d, 0x10, 0xc9, 0x4a, 0xbf, 0xec, 0xa2, 0x10, 0x94, 0x37, 0xd0, 0xbd, - 0xa0, 0x81, 0xee, 0xe5, 0x0d, 0x74, 0x2f, 0x6c, 0x60, 0xfb, 0xf5, 0xff, 0xf8, 0xfb, 0x92, 0xf2, - 0x6f, 0x3f, 0xb9, 0xab, 0xfc, 0xfb, 0x4f, 0xee, 0x2a, 0x3f, 0xfe, 0xc9, 0x5d, 0xe5, 0x2f, 0xfe, - 0xeb, 0xee, 0x0a, 0xa8, 0x9e, 0x7f, 0xfc, 0x38, 0x70, 0x4e, 0xcf, 0x1e, 0x9f, 0x9e, 0xb1, 0x7f, - 0xf2, 0x3a, 0x2c, 0xb2, 0x9f, 0x77, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x2e, 0xea, 0x23, 0x51, - 0x57, 0x4c, 0x00, 0x00, + // 5599 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x4d, 0x93, 0x23, 0x47, + 0x56, 0x5d, 0x6a, 0x49, 0x2d, 0x3d, 0x7d, 0x74, 0x75, 0x4e, 0xcf, 0xb4, 0x46, 0xf3, 0xe9, 0x1a, + 0xdb, 0x8c, 0x67, 0xed, 0xb1, 0x3d, 0x76, 0x2c, 0xc6, 0xb0, 0x0e, 0xd4, 0x2d, 0x8d, 0x2c, 0x4f, + 0x4f, 0xb7, 0x28, 0x69, 0xc6, 0x6b, 0x62, 0x83, 0x8a, 0xea, 0xaa, 0xec, 0xee, 0xda, 0x96, 0xaa, + 0xe4, 0xca, 0x52, 0xf7, 0x68, 0x83, 0x03, 0x1f, 0x0b, 0x2c, 0xc1, 0x6e, 0x40, 0x04, 0x9f, 0xa7, + 0x3d, 0x00, 0x01, 0x5c, 0x08, 0x6e, 0x04, 0xfc, 0x01, 0x82, 0x23, 0x47, 0x4e, 0xc4, 0x86, 0x39, + 0x71, 0xe1, 0xb8, 0x17, 0x38, 0x10, 0xf9, 0x55, 0xaa, 0x2a, 0x95, 0xba, 0xdb, 0x35, 0x36, 0xb1, + 0x27, 0x55, 0xbe, 0xf7, 0xf2, 0xe5, 0xcb, 0x97, 0x2f, 0x33, 0xdf, 0x7b, 0x99, 0x29, 0x80, 0x89, + 0x3d, 0x39, 0x78, 0x38, 0xf1, 0xbd, 0xc0, 0x43, 0x79, 0xfa, 0xdd, 0xac, 0x8e, 0x71, 0x60, 0x4a, + 0x58, 0xb3, 0x86, 0x7d, 0xf3, 0x30, 0x08, 0x8b, 0x57, 0x68, 0xc9, 0x20, 0xd8, 0x3f, 0xc5, 0x7e, + 0x08, 0x6c, 0xf8, 0x78, 0x32, 0x72, 0x2c, 0x33, 0x70, 0x3c, 0xd7, 0x18, 0x7b, 0x36, 0x0e, 0x31, + 0x9b, 0x47, 0xde, 0x91, 0xc7, 0x3e, 0xdf, 0xa6, 0x5f, 0x02, 0xba, 0xee, 0x4f, 0x49, 0xc0, 0x3e, + 0x39, 0x40, 0xfb, 0x14, 0x1a, 0x9f, 0x9a, 0x81, 0x75, 0xdc, 0x1d, 0x79, 0x07, 0xe6, 0x68, 0xc7, + 0x73, 0x0f, 0x9d, 0x23, 0x1d, 0x7f, 0x3e, 0xc5, 0x24, 0x40, 0x77, 0xa0, 0x62, 0x31, 0x80, 0x31, + 0x31, 0x83, 0xe3, 0x86, 0x72, 0x57, 0xb9, 0x5f, 0xd6, 0x81, 0x83, 0xfa, 0x66, 0x70, 0x8c, 0x9a, + 0x50, 0xf2, 0xf1, 0xa9, 0x43, 0x1c, 0xcf, 0x6d, 0xe4, 0xee, 0x2a, 0xf7, 0x57, 0xf5, 0xb0, 0xac, + 0xfd, 0xb9, 0x02, 0xd7, 0x53, 0x38, 0x93, 0x89, 0xe7, 0x12, 0x8c, 0xde, 0x81, 0x35, 0xeb, 0xd8, + 0x74, 0x8f, 0x30, 0x69, 0x28, 0x77, 0x57, 0xef, 0x57, 0x1e, 0x5d, 0x7b, 0xc8, 0xb4, 0x11, 0x25, + 0xee, 0x05, 0x78, 0xac, 0x4b, 0xb2, 0xf3, 0xda, 0x42, 0x6f, 0x42, 0xf1, 0x18, 0x9b, 0x36, 0xf6, + 0x1b, 0xab, 0x77, 0x95, 0xfb, 0x95, 0x47, 0x9b, 0x9c, 0x99, 0x6c, 0xed, 0x63, 0x86, 0xd3, 0x05, + 0x8d, 0x36, 0x86, 0xc6, 0x20, 0xf0, 0x7c, 0x9c, 0xd6, 0xe5, 0x2f, 0x2f, 0x57, 0x42, 0x49, 0xb9, + 0xa4, 0x92, 0xb4, 0x8f, 0xe0, 0x7a, 0x4a, 0x73, 0x42, 0x0f, 0xaf, 0x40, 0x01, 0xfb, 0xbe, 0xe7, + 0x33, 0xe5, 0x56, 0x1e, 0x55, 0x78, 0x6b, 0x1d, 0x0a, 0xd2, 0x39, 0x46, 0xeb, 0xc3, 0xd6, 0xae, + 0x67, 0xda, 0x69, 0xd2, 0x6e, 0x42, 0xc1, 0x35, 0xc7, 0x42, 0xd6, 0xb2, 0xce, 0x0b, 0x17, 0x4b, + 0x64, 0x43, 0x63, 0x91, 0xa3, 0x10, 0xe8, 0x4d, 0x28, 0x38, 0x01, 0x1e, 0x5f, 0xd4, 0x7d, 0x4e, + 0x74, 0xae, 0x01, 0xfc, 0x58, 0x01, 0x35, 0x59, 0x0f, 0x21, 0xc8, 0x53, 0x21, 0x85, 0x2d, 0xb1, + 0x6f, 0xda, 0x8b, 0x53, 0x73, 0x34, 0xc5, 0x42, 0x52, 0x5e, 0x98, 0x6b, 0x66, 0x75, 0x99, 0x66, + 0xd0, 0x3d, 0xc8, 0x9f, 0x38, 0xae, 0xdd, 0xc8, 0xdf, 0x55, 0xee, 0xd7, 0x1f, 0xad, 0x0b, 0x8a, + 0x53, 0xec, 0x06, 0xc3, 0xd9, 0x04, 0xeb, 0x0c, 0x89, 0x1a, 0xb0, 0x36, 0x31, 0x67, 0x23, 0xcf, + 0xb4, 0x1b, 0x85, 0xbb, 0xca, 0xfd, 0xaa, 0x2e, 0x8b, 0xda, 0x13, 0xa8, 0x09, 0x45, 0x72, 0x03, + 0x41, 0xb7, 0x00, 0xac, 0xd1, 0x94, 0x04, 0xd8, 0x37, 0x1c, 0x9b, 0x89, 0x98, 0xd7, 0xcb, 0x02, + 0xd2, 0xb3, 0xd1, 0x0d, 0x28, 0x13, 0xec, 0xda, 0x1c, 0x9b, 0x63, 0xd8, 0x12, 0x07, 0xf4, 0x6c, + 0x4d, 0x87, 0x7a, 0xdc, 0xdc, 0x2e, 0xe2, 0x16, 0xf6, 0x2f, 0xb7, 0x74, 0xe4, 0x1f, 0x43, 0xa1, + 0x23, 0x3b, 0x1a, 0xcc, 0x26, 0x5c, 0x6b, 0xf3, 0x8e, 0x52, 0x14, 0xef, 0x28, 0x45, 0xd2, 0x8e, + 0x8e, 0x31, 0x21, 0xe6, 0x91, 0x54, 0xa4, 0x2c, 0x6a, 0x13, 0x80, 0x21, 0xf1, 0xa4, 0xd1, 0x7c, + 0x23, 0x9c, 0x2c, 0xdc, 0xe6, 0xae, 0xc8, 0xc9, 0x12, 0x51, 0x85, 0x9c, 0x2b, 0x74, 0x6c, 0x2c, + 0x6f, 0xea, 0x06, 0x8c, 0x65, 0x4d, 0xe7, 0x05, 0x6a, 0x61, 0xb6, 0x65, 0x8c, 0x3c, 0xbe, 0xee, + 0xb0, 0x11, 0x2a, 0xeb, 0x60, 0x5b, 0xbb, 0x02, 0xa2, 0x1d, 0x40, 0x79, 0xe8, 0x8c, 0x31, 0x09, + 0xcc, 0xf1, 0x84, 0x1a, 0xc9, 0xe4, 0x78, 0x46, 0x1c, 0xcb, 0x1c, 0xb1, 0x26, 0x57, 0xf5, 0xb0, + 0x4c, 0x85, 0x1e, 0x79, 0x47, 0x0c, 0xc5, 0xed, 0x47, 0x16, 0x69, 0x1b, 0x64, 0x7a, 0x78, 0xe8, + 0xbc, 0x30, 0x0e, 0x9c, 0x80, 0xb0, 0x36, 0x6a, 0x3a, 0x70, 0xd0, 0xb6, 0x13, 0x10, 0xed, 0x37, + 0x14, 0xa8, 0xb0, 0x6e, 0x85, 0x96, 0x1b, 0xef, 0xd7, 0xb9, 0x8b, 0xc0, 0x92, 0x8e, 0xbd, 0x05, + 0xe5, 0x40, 0xca, 0x2d, 0x0c, 0x4f, 0x68, 0x3b, 0xec, 0x8e, 0x3e, 0xa7, 0xd0, 0x7e, 0xa8, 0x80, + 0xba, 0xed, 0x79, 0x01, 0x09, 0x7c, 0x73, 0x92, 0x49, 0xbf, 0xf7, 0xa0, 0x40, 0xe8, 0xe2, 0x20, + 0xac, 0xa0, 0xf6, 0x50, 0xec, 0x00, 0x6c, 0xc5, 0xd0, 0x39, 0x0e, 0xbd, 0x0e, 0x45, 0x1f, 0x1f, + 0x49, 0x4d, 0x57, 0x1e, 0xd5, 0x25, 0x95, 0xce, 0xa0, 0xba, 0xc0, 0xd2, 0x25, 0x77, 0x23, 0x22, + 0x4e, 0x26, 0xbd, 0x0c, 0x01, 0x45, 0xb7, 0x14, 0x12, 0x98, 0xc1, 0x94, 0x08, 0xe9, 0x5e, 0x7b, + 0x98, 0xb2, 0xdb, 0xe8, 0x73, 0xd0, 0x80, 0x11, 0xeb, 0x1b, 0x7e, 0x12, 0xa4, 0xb5, 0xe1, 0x6a, + 0x8f, 0x84, 0xa2, 0x4d, 0xb0, 0x9d, 0x45, 0x59, 0xda, 0x77, 0xe1, 0x5a, 0x92, 0x4b, 0xa6, 0x3e, + 0x6a, 0x50, 0x3d, 0x88, 0x70, 0x61, 0xbd, 0x2b, 0xe9, 0x31, 0x98, 0xf6, 0x2d, 0xa8, 0xb7, 0x46, + 0x23, 0xcf, 0xea, 0xb5, 0x33, 0x89, 0xba, 0x0f, 0xeb, 0x61, 0xf5, 0x4c, 0x32, 0xd6, 0x21, 0x17, + 0xae, 0x32, 0x39, 0xc7, 0xd6, 0x3e, 0x81, 0x1b, 0x3d, 0x32, 0x70, 0xcd, 0x09, 0x39, 0xf6, 0x02, + 0x1d, 0x5b, 0xde, 0x29, 0xf6, 0x1d, 0xf7, 0x28, 0x93, 0x70, 0x36, 0xdc, 0x4c, 0xe7, 0x95, 0x49, + 0xd2, 0x6b, 0x50, 0x1c, 0x9b, 0xfe, 0x49, 0xa8, 0x47, 0x51, 0xd2, 0x3e, 0x83, 0xf5, 0x2e, 0x0e, + 0xb8, 0x21, 0x67, 0x99, 0x1a, 0xd7, 0xa1, 0xc4, 0xcc, 0x7f, 0xbe, 0xda, 0xae, 0xb1, 0x72, 0xcf, + 0xd6, 0x7e, 0x44, 0xb7, 0x96, 0x90, 0x77, 0x26, 0xa9, 0x2f, 0x39, 0xf1, 0x0a, 0x74, 0x02, 0x10, + 0x31, 0xef, 0x54, 0xce, 0x91, 0x91, 0x50, 0xc3, 0x26, 0x3a, 0x47, 0x6b, 0x16, 0xac, 0xf7, 0xa7, + 0x2f, 0xd1, 0xd5, 0xcb, 0x08, 0xa3, 0xfd, 0x99, 0x02, 0xea, 0xbc, 0x95, 0x9f, 0xa1, 0xc9, 0xfd, + 0xeb, 0x70, 0xa5, 0x8b, 0x83, 0xd6, 0x68, 0xc4, 0x44, 0x23, 0x99, 0x34, 0xf0, 0x01, 0x34, 0xf0, + 0x0b, 0x6b, 0x34, 0xb5, 0xb1, 0x11, 0x78, 0xe3, 0x03, 0x12, 0x78, 0x2e, 0x36, 0x58, 0xbf, 0x89, + 0x30, 0xab, 0x6b, 0x02, 0x3f, 0x94, 0x68, 0xde, 0x9a, 0x76, 0x02, 0x9b, 0xf1, 0xd6, 0x33, 0x69, + 0xe6, 0x35, 0x28, 0x86, 0xad, 0xad, 0x2e, 0x0e, 0x81, 0x40, 0x6a, 0xbf, 0xc9, 0x0d, 0x4f, 0xac, + 0xbb, 0x59, 0x3a, 0x7a, 0x0b, 0x80, 0xaf, 0xd6, 0xc6, 0x09, 0x9e, 0xb1, 0xae, 0x55, 0xf5, 0x32, + 0x87, 0x3c, 0xc1, 0x33, 0xf4, 0x0a, 0x54, 0x5d, 0x8c, 0x6d, 0xe3, 0x60, 0x6a, 0x9d, 0x60, 0x61, + 0x78, 0x25, 0xbd, 0x42, 0x61, 0xdb, 0x1c, 0xa4, 0xfd, 0x55, 0x0e, 0x36, 0x22, 0x32, 0x64, 0xea, + 0xee, 0x7c, 0x47, 0xc9, 0x9d, 0xb7, 0xa3, 0xa0, 0x57, 0xa1, 0x38, 0x8a, 0x3a, 0xd6, 0x55, 0x49, + 0xd7, 0xc7, 0x94, 0x1b, 0xc7, 0xa1, 0x87, 0x00, 0xb6, 0x77, 0xe6, 0x1a, 0x13, 0x8c, 0x7d, 0xd2, + 0x28, 0x30, 0x05, 0x8a, 0x6d, 0x93, 0xd2, 0xf1, 0xa9, 0x52, 0xa6, 0x24, 0xb4, 0x48, 0xd0, 0xbb, + 0x50, 0x9b, 0x60, 0xd7, 0x76, 0xdc, 0x23, 0x51, 0xa5, 0xc8, 0xaa, 0xc4, 0x99, 0x57, 0x05, 0x09, + 0xaf, 0xf2, 0x06, 0xac, 0x49, 0x95, 0xac, 0x89, 0x6d, 0x59, 0x10, 0x0b, 0xb5, 0xe8, 0x12, 0xff, + 0x49, 0xbe, 0x94, 0x57, 0x0b, 0xda, 0x6f, 0x2b, 0xcc, 0x2e, 0x78, 0x7f, 0xb6, 0x67, 0xd9, 0x96, + 0x71, 0xea, 0xf2, 0x89, 0xd1, 0x9a, 0xbb, 0x7c, 0x1c, 0xc0, 0x3c, 0xb8, 0x0b, 0xc7, 0xea, 0x47, + 0x0a, 0xa0, 0x81, 0x65, 0xba, 0x5c, 0x0c, 0x92, 0x55, 0x06, 0x12, 0x98, 0x7e, 0x10, 0x31, 0x98, + 0x12, 0x03, 0x50, 0x7b, 0xd9, 0x84, 0xc2, 0xc8, 0x19, 0x3b, 0x01, 0x6b, 0xbc, 0xa0, 0xf3, 0x02, + 0xda, 0x82, 0x35, 0xec, 0xda, 0xac, 0x42, 0x9e, 0x55, 0x28, 0x62, 0xd7, 0x7e, 0x82, 0x67, 0xda, + 0x3f, 0x2b, 0x50, 0xe4, 0xb2, 0x44, 0x4c, 0x40, 0xb9, 0xa4, 0x09, 0xe4, 0x2e, 0x6d, 0x02, 0xab, + 0x5f, 0xde, 0x04, 0xf2, 0x17, 0x99, 0x80, 0xf6, 0x2f, 0x0a, 0x5c, 0x89, 0xe9, 0x32, 0x93, 0xe5, + 0xbf, 0x0b, 0x55, 0x31, 0xa2, 0xb4, 0x25, 0x39, 0xdd, 0x93, 0x9d, 0xaf, 0x70, 0x9a, 0xa7, 0x94, + 0x04, 0xbd, 0x0e, 0x6b, 0xbc, 0x97, 0xb2, 0x63, 0x71, 0x29, 0x25, 0x92, 0xd2, 0xf1, 0x6a, 0xf3, + 0xde, 0x08, 0x49, 0x18, 0x4f, 0x89, 0xd4, 0x1e, 0xc3, 0x56, 0x17, 0x07, 0x3b, 0x3c, 0x12, 0x88, + 0x07, 0x74, 0x5f, 0x6a, 0x1b, 0x27, 0xd0, 0x58, 0xe4, 0x93, 0x49, 0x29, 0x6f, 0xc0, 0x9a, 0x08, + 0x4c, 0xc4, 0x20, 0x87, 0xb3, 0x4b, 0x70, 0xd7, 0x25, 0x5e, 0xfb, 0x1c, 0xb6, 0xfa, 0xd3, 0x97, + 0x17, 0xfe, 0xcb, 0x34, 0xf9, 0x31, 0x34, 0x16, 0x9b, 0xcc, 0xd2, 0x4f, 0xed, 0xaf, 0x73, 0x50, + 0x7c, 0x8a, 0xc7, 0x07, 0xd8, 0x4f, 0x0d, 0x44, 0x6f, 0x40, 0x79, 0xcc, 0xb0, 0x91, 0xd9, 0xce, + 0x01, 0x3c, 0xfa, 0xa3, 0x96, 0x6a, 0x4c, 0xfd, 0x11, 0xb7, 0x83, 0xb2, 0x5e, 0xa2, 0x80, 0x67, + 0xfe, 0x88, 0x87, 0xdc, 0x23, 0x07, 0xbb, 0x01, 0x47, 0xe7, 0x19, 0x1a, 0x38, 0x88, 0x11, 0xfc, + 0x1c, 0xac, 0x73, 0x33, 0x31, 0x26, 0xbe, 0xe3, 0xf9, 0x4e, 0x30, 0x63, 0xd1, 0x68, 0x41, 0xaf, + 0x73, 0x70, 0x5f, 0x40, 0x59, 0x68, 0x85, 0x27, 0x23, 0x6f, 0xc6, 0x83, 0xf7, 0xa2, 0x08, 0xad, + 0x18, 0x88, 0xe5, 0x5c, 0x5e, 0x83, 0xfa, 0x81, 0xe3, 0x9a, 0xfe, 0xcc, 0x38, 0xc5, 0x3e, 0x0b, + 0xbc, 0xd7, 0x18, 0x4d, 0x8d, 0x43, 0x9f, 0x73, 0x20, 0xf5, 0x9e, 0x8e, 0x9c, 0xc0, 0x38, 0x36, + 0xc9, 0x71, 0xa3, 0xc4, 0xc3, 0xc1, 0x23, 0x27, 0xf8, 0xd8, 0x24, 0xc7, 0xc9, 0xe8, 0xad, 0xbc, + 0x10, 0xbd, 0xfd, 0x32, 0xdb, 0x60, 0xb8, 0xa2, 0x32, 0xad, 0x59, 0xda, 0xff, 0xe6, 0x00, 0x45, + 0x59, 0x64, 0xdc, 0xa4, 0xd6, 0xb8, 0xf6, 0xe5, 0x2c, 0x15, 0xf3, 0x89, 0x73, 0xd5, 0x25, 0x32, + 0x65, 0x93, 0x8a, 0x92, 0xc9, 0x15, 0xea, 0x2d, 0xa8, 0xe0, 0xc0, 0xb2, 0x0d, 0x41, 0x9a, 0x4f, + 0x21, 0x05, 0x4a, 0xb0, 0xcb, 0xc9, 0x31, 0x5c, 0x0d, 0x88, 0x67, 0x98, 0x23, 0xa6, 0x27, 0xcf, + 0x37, 0xe4, 0x12, 0xc0, 0xb7, 0xb7, 0x77, 0x45, 0x5e, 0x64, 0xa1, 0x8f, 0x0f, 0x87, 0xc4, 0x6b, + 0xc9, 0x4a, 0x9c, 0x17, 0xe9, 0xb8, 0x81, 0x3f, 0xd3, 0xaf, 0x04, 0x8b, 0x98, 0xe6, 0x10, 0x1a, + 0xcb, 0x2a, 0x20, 0x15, 0x56, 0xe9, 0x0a, 0xce, 0x2d, 0x94, 0x7e, 0x22, 0x2d, 0x9a, 0x29, 0x49, + 0x4a, 0xcf, 0x51, 0x1f, 0xe6, 0x3e, 0x50, 0xb4, 0x3e, 0x94, 0xc3, 0x55, 0x17, 0xdd, 0x85, 0x3c, + 0xb5, 0x53, 0xa1, 0xf2, 0xf8, 0xda, 0xc5, 0x30, 0x74, 0x23, 0x63, 0x8b, 0x37, 0xc1, 0x96, 0xe7, + 0xda, 0x44, 0x98, 0x7e, 0x85, 0xc2, 0x06, 0x1c, 0xa4, 0xfd, 0xb4, 0x00, 0xd7, 0xf8, 0x3a, 0xf6, + 0x31, 0x36, 0xfd, 0xe0, 0x00, 0x9b, 0x41, 0xa6, 0x69, 0xff, 0x75, 0x3a, 0x1e, 0xf9, 0x2f, 0xbf, + 0xeb, 0x14, 0x2e, 0x74, 0x3c, 0xee, 0x41, 0xed, 0x60, 0x16, 0x60, 0x62, 0x9c, 0xf9, 0x4e, 0x10, + 0x60, 0x97, 0xcd, 0xc8, 0xbc, 0x5e, 0x65, 0xc0, 0x4f, 0x39, 0x8c, 0x3a, 0x75, 0x9c, 0xc8, 0xc7, + 0xa6, 0xcd, 0xe6, 0x63, 0x5e, 0x2f, 0x33, 0x88, 0x8e, 0x4d, 0xe6, 0x28, 0x9c, 0xe0, 0xd9, 0x9c, + 0x45, 0x89, 0xeb, 0x97, 0xc2, 0x24, 0x87, 0x1b, 0x50, 0x66, 0x24, 0x8c, 0x41, 0x99, 0x2f, 0x3d, + 0x14, 0xc0, 0xea, 0xbf, 0x01, 0xaa, 0x39, 0x99, 0xf8, 0xde, 0x0b, 0x67, 0x6c, 0x06, 0xd8, 0x20, + 0xce, 0xf7, 0x70, 0x03, 0x18, 0xcd, 0x7a, 0x04, 0x3e, 0x70, 0xbe, 0x87, 0xd1, 0x43, 0x28, 0x39, + 0x6e, 0x80, 0xfd, 0x53, 0x73, 0xd4, 0xa8, 0x32, 0xcd, 0xa1, 0x79, 0xfe, 0xa2, 0x27, 0x30, 0x7a, + 0x48, 0x93, 0x64, 0x4d, 0x9b, 0x6c, 0xd4, 0x16, 0x58, 0x3f, 0xc1, 0x33, 0x42, 0x57, 0xcc, 0x00, + 0xfb, 0xe3, 0x46, 0x9d, 0xa1, 0xd9, 0x37, 0xfa, 0xd5, 0xd4, 0x80, 0x62, 0x9d, 0x35, 0xfc, 0x8d, + 0xf4, 0x80, 0x82, 0x7b, 0xad, 0x17, 0x87, 0x15, 0xe8, 0x5d, 0xa8, 0x7c, 0x3e, 0xc5, 0xfe, 0xcc, + 0xe0, 0x21, 0x98, 0x1a, 0x0d, 0xc1, 0x7e, 0x85, 0x22, 0xf8, 0xf0, 0xc2, 0xe7, 0xe1, 0x37, 0xd5, + 0xa2, 0x35, 0x99, 0x1a, 0x53, 0x96, 0x04, 0xdb, 0xe0, 0x5a, 0xb4, 0x26, 0xd3, 0x67, 0xb4, 0x8c, + 0x1e, 0xc2, 0x95, 0x58, 0x57, 0x4f, 0xb9, 0x22, 0x11, 0x23, 0xdb, 0x88, 0xf6, 0xf6, 0x94, 0xaa, + 0xf2, 0x93, 0x7c, 0xa9, 0xa2, 0x56, 0xb5, 0x63, 0x80, 0x1d, 0x96, 0xe9, 0xa5, 0xe6, 0x70, 0x89, + 0xb9, 0xf4, 0x01, 0x54, 0x78, 0x66, 0xd8, 0x60, 0x19, 0xbb, 0x1c, 0xcb, 0xd8, 0x6d, 0x3d, 0x94, + 0xa9, 0x7c, 0xba, 0x7d, 0x71, 0x7e, 0x2c, 0x73, 0x07, 0x56, 0xf8, 0xad, 0x7d, 0x08, 0xd5, 0x79, + 0x4b, 0xcf, 0x1f, 0xa1, 0x07, 0xc9, 0x54, 0xb4, 0xe8, 0xfb, 0x9c, 0x28, 0x4c, 0x42, 0x6b, 0xcf, + 0xa1, 0x3e, 0xf4, 0x4d, 0x97, 0x1c, 0x62, 0xb1, 0x84, 0x5c, 0x42, 0x52, 0x0d, 0x0a, 0x7c, 0x12, + 0xe4, 0x52, 0x26, 0x01, 0x47, 0x69, 0x6f, 0x43, 0xe1, 0x29, 0xf6, 0x8f, 0x58, 0x0a, 0x2a, 0x30, + 0xfd, 0x23, 0x1c, 0x2c, 0xf3, 0x16, 0x39, 0x56, 0xdb, 0x85, 0xca, 0x60, 0x32, 0x72, 0x84, 0xdf, + 0x8d, 0xde, 0x80, 0xe2, 0xc4, 0x1b, 0x39, 0xd6, 0x4c, 0xa4, 0x2e, 0x37, 0x64, 0x17, 0xb0, 0x75, + 0xd2, 0x67, 0x08, 0x5d, 0x10, 0x50, 0xf3, 0x62, 0xd6, 0x47, 0xa5, 0xa9, 0xea, 0xec, 0x5b, 0xeb, + 0x42, 0x6d, 0x70, 0xe6, 0x04, 0xd6, 0xf1, 0xa7, 0x4e, 0xe0, 0x62, 0x42, 0xa8, 0x63, 0xcb, 0x36, + 0xe1, 0x30, 0xa1, 0x5a, 0xa4, 0xc5, 0x9e, 0x4d, 0x67, 0xa0, 0x43, 0x8c, 0x33, 0x4e, 0x26, 0x22, + 0xc6, 0xb2, 0x43, 0x44, 0x3d, 0x6d, 0x08, 0x68, 0xdb, 0x0c, 0xac, 0xe3, 0x38, 0xb7, 0x8f, 0x40, + 0x25, 0x0c, 0x20, 0x2b, 0x86, 0xaa, 0x16, 0x6b, 0x58, 0x8c, 0x5c, 0x5f, 0x27, 0xd1, 0x22, 0x26, + 0xda, 0x9f, 0xe6, 0x61, 0x6b, 0x61, 0x51, 0xcc, 0xe8, 0x95, 0x4a, 0xab, 0x61, 0x83, 0x96, 0x8b, + 0xda, 0x7a, 0x64, 0xbc, 0x85, 0xb9, 0x30, 0x53, 0xfc, 0x16, 0xac, 0x07, 0x62, 0xc8, 0x8d, 0x51, + 0xca, 0xe1, 0x47, 0xdc, 0x1e, 0xf4, 0x7a, 0x10, 0xb7, 0x8f, 0x58, 0x64, 0x93, 0x4f, 0x44, 0x36, + 0xdf, 0x0c, 0x9d, 0x64, 0x3c, 0xf1, 0xac, 0x63, 0xe6, 0xaa, 0x50, 0xa5, 0xc4, 0xc6, 0xbc, 0x43, + 0x51, 0xd2, 0x53, 0x66, 0x05, 0xba, 0xc7, 0x72, 0x3b, 0xe0, 0xdd, 0x28, 0xa6, 0xd8, 0x1e, 0x70, + 0x82, 0x3e, 0xdf, 0x77, 0x0a, 0x63, 0x6a, 0x5d, 0x22, 0xa4, 0xab, 0xc8, 0xed, 0xcc, 0x3f, 0xc2, + 0x3a, 0xc7, 0xa0, 0xf7, 0xa1, 0x4a, 0xa8, 0x3d, 0x19, 0x62, 0xd7, 0x28, 0x31, 0x4a, 0x61, 0x46, + 0x11, 0x4b, 0xd3, 0x2b, 0x24, 0x62, 0x76, 0x1f, 0x40, 0x3d, 0xa2, 0x4e, 0xe3, 0xf4, 0x11, 0x5b, + 0x52, 0xc3, 0xb5, 0x30, 0x3a, 0xcd, 0xf4, 0xaa, 0x15, 0x9d, 0x74, 0x3b, 0x29, 0x26, 0x01, 0xac, + 0x6e, 0x83, 0xd7, 0x5d, 0x34, 0xa3, 0x45, 0xbb, 0x38, 0x84, 0xf5, 0x16, 0x39, 0x11, 0xd2, 0x7d, + 0x7d, 0x9b, 0xa4, 0xf6, 0xbb, 0x0a, 0xa8, 0xf3, 0x86, 0x32, 0xa6, 0x42, 0x6b, 0x2e, 0x3e, 0x33, + 0x92, 0x41, 0x6e, 0xc5, 0xc5, 0x67, 0xba, 0xb4, 0x86, 0xbb, 0x34, 0xce, 0x3d, 0x33, 0xc4, 0xc4, + 0xe3, 0xce, 0x6f, 0x5e, 0x07, 0x17, 0x9f, 0xf5, 0xd9, 0xe4, 0x23, 0xda, 0x1f, 0x28, 0x80, 0x74, + 0x3c, 0xf1, 0xfc, 0x20, 0x7b, 0xa7, 0x35, 0xc8, 0x8f, 0xf0, 0x61, 0xb0, 0xa4, 0xcb, 0x0c, 0x87, + 0x5e, 0x85, 0x82, 0xef, 0x1c, 0x1d, 0x07, 0x4b, 0xf2, 0xe0, 0x1c, 0xa9, 0xed, 0xc0, 0x95, 0x98, + 0x30, 0x99, 0x42, 0x85, 0x1f, 0x2a, 0xb0, 0xd9, 0x22, 0x27, 0x7c, 0xb8, 0xbf, 0xee, 0x91, 0x64, + 0x87, 0x1d, 0xcc, 0xcc, 0xf9, 0x99, 0x84, 0x3c, 0xec, 0xa0, 0xa0, 0x1d, 0x0a, 0xd1, 0xf6, 0x61, + 0x8d, 0x49, 0xd1, 0x6b, 0x2f, 0x0e, 0x99, 0x72, 0xf1, 0x90, 0xe5, 0x16, 0x86, 0xec, 0x10, 0xae, + 0x26, 0xba, 0x97, 0xc9, 0x7e, 0xee, 0xc0, 0xaa, 0xe4, 0x5f, 0x79, 0x54, 0x8b, 0x4c, 0xcb, 0x5e, + 0x5b, 0xa7, 0x18, 0x6d, 0x42, 0x97, 0x48, 0x3a, 0x18, 0x2f, 0xa9, 0xc9, 0xfb, 0xf3, 0xe0, 0x3a, + 0x3d, 0x64, 0x0f, 0xc3, 0xeb, 0x8f, 0xa1, 0xb1, 0xd8, 0x62, 0x26, 0x1b, 0xf8, 0x0e, 0x54, 0xa3, + 0x6e, 0x13, 0x0d, 0xe2, 0x78, 0x26, 0x66, 0x7e, 0x46, 0xc4, 0x75, 0x5f, 0x67, 0xe0, 0xf9, 0x89, + 0xd7, 0x3d, 0xa8, 0x61, 0xd7, 0x8e, 0x90, 0xf1, 0x59, 0x55, 0xc5, 0xae, 0x1d, 0x12, 0x69, 0xef, + 0x03, 0xe8, 0xd8, 0xf2, 0x7c, 0xbb, 0x6f, 0x3a, 0x7e, 0x8a, 0xb3, 0x1f, 0x3b, 0x16, 0xcd, 0x0b, + 0xf7, 0x5e, 0xfb, 0x0f, 0x05, 0x4a, 0xd2, 0xb7, 0x8d, 0x2f, 0xe2, 0x4a, 0x62, 0x11, 0x67, 0x48, + 0xd3, 0x36, 0xc4, 0xae, 0x2a, 0x90, 0xa6, 0xcd, 0x9c, 0x39, 0x96, 0x86, 0x34, 0x6d, 0x83, 0x39, + 0xa9, 0xcc, 0xde, 0xf2, 0x3a, 0x23, 0xdf, 0xa6, 0x80, 0xa4, 0xef, 0x95, 0xbf, 0x84, 0xef, 0xf5, + 0x0a, 0x54, 0x85, 0x7f, 0xcb, 0x5b, 0x2c, 0x70, 0xab, 0x14, 0x30, 0xd6, 0xe8, 0x3d, 0xa8, 0x49, + 0x12, 0xde, 0xae, 0xf0, 0xa5, 0x05, 0x90, 0x35, 0xad, 0xfd, 0x43, 0x09, 0x60, 0x9e, 0x61, 0x8f, + 0x9d, 0x02, 0x28, 0xb1, 0x53, 0x00, 0xd4, 0x84, 0x92, 0x65, 0x4e, 0x4c, 0x8b, 0x06, 0xd3, 0xa2, + 0x7f, 0xb2, 0x8c, 0x6e, 0x42, 0xd9, 0x3c, 0x35, 0x9d, 0x91, 0x79, 0x30, 0xc2, 0xb2, 0x7b, 0x21, + 0x80, 0xca, 0x2a, 0xf4, 0xc6, 0xe7, 0x5b, 0x9e, 0xcd, 0x37, 0xb1, 0x95, 0xb1, 0x09, 0x87, 0xde, + 0x04, 0x44, 0x44, 0xa8, 0x40, 0x5c, 0x73, 0x22, 0x08, 0x0b, 0x8c, 0x50, 0x15, 0x98, 0x81, 0x6b, + 0x4e, 0x38, 0xf5, 0x3b, 0xb0, 0xe9, 0x63, 0x0b, 0x3b, 0xa7, 0x09, 0xfa, 0x22, 0xa3, 0x47, 0x21, + 0x6e, 0x5e, 0xe3, 0x16, 0xc0, 0xdc, 0x96, 0xd8, 0x06, 0x58, 0xd3, 0xcb, 0xa1, 0x19, 0x09, 0x67, + 0x75, 0x34, 0x4b, 0xf0, 0x2b, 0x31, 0xba, 0x0d, 0x89, 0x9a, 0xb3, 0xdb, 0x82, 0x35, 0x87, 0x18, + 0x07, 0x53, 0x32, 0x63, 0x5b, 0x5d, 0x49, 0x2f, 0x3a, 0x64, 0x7b, 0x4a, 0x66, 0xd4, 0x0a, 0xa6, + 0x04, 0xdb, 0xd1, 0xa0, 0xa1, 0x44, 0x01, 0x2c, 0x5a, 0x58, 0x08, 0x6e, 0x2a, 0x29, 0xc1, 0x4d, + 0x32, 0x7a, 0xa9, 0x2e, 0x46, 0x2f, 0xf1, 0xf8, 0xa7, 0x96, 0x8c, 0x7f, 0x62, 0xc1, 0x4d, 0x3d, + 0x11, 0xdc, 0x44, 0x23, 0x96, 0xf5, 0x4b, 0x44, 0x2c, 0x6f, 0x03, 0x84, 0x3e, 0x3e, 0x8d, 0x0a, + 0x22, 0x9e, 0xf1, 0x7c, 0x3a, 0xe9, 0x65, 0xe9, 0xf6, 0x13, 0xf4, 0x3e, 0xd4, 0x98, 0xa9, 0x3b, + 0x9e, 0xe1, 0x9b, 0xd4, 0xea, 0x36, 0x96, 0xd4, 0xa9, 0x50, 0xb2, 0x9e, 0xa7, 0x53, 0x22, 0xf4, + 0x4d, 0xa8, 0xd3, 0x0e, 0xe3, 0x79, 0x35, 0xb4, 0xa4, 0x1a, 0x33, 0x5f, 0x2c, 0xeb, 0xbd, 0x07, + 0x55, 0x6f, 0x62, 0x8c, 0xcc, 0x00, 0xbb, 0x96, 0x83, 0x49, 0xe3, 0xca, 0xb2, 0xc6, 0xbc, 0xc9, + 0xae, 0x24, 0x42, 0x6f, 0x01, 0xb0, 0xa5, 0x9a, 0xcf, 0xb6, 0x4d, 0xb1, 0xbe, 0xc5, 0xe2, 0x58, + 0x9d, 0x65, 0x9f, 0xf8, 0x9c, 0x48, 0xcc, 0xce, 0xab, 0x97, 0x98, 0x9d, 0xd4, 0xdc, 0x46, 0xde, + 0x99, 0x41, 0x2c, 0xcf, 0xc7, 0x8d, 0x6b, 0x7c, 0x84, 0x28, 0x64, 0x40, 0x01, 0xd4, 0xda, 0x6d, + 0x73, 0x6c, 0x1e, 0x61, 0x5b, 0xec, 0x2b, 0x84, 0xce, 0xb7, 0x2d, 0xb6, 0x6b, 0xa8, 0x02, 0x23, + 0xf2, 0xae, 0x3d, 0x9b, 0xee, 0x40, 0x0e, 0x31, 0x98, 0x11, 0x72, 0x93, 0x6b, 0xf0, 0xcc, 0xb7, + 0x43, 0x5a, 0x14, 0xc6, 0xec, 0xee, 0x17, 0xa0, 0x4e, 0xc4, 0x09, 0xa3, 0x10, 0xf3, 0x3a, 0xeb, + 0x96, 0x18, 0x5c, 0x79, 0xfa, 0xc8, 0xba, 0x56, 0x23, 0x91, 0x12, 0xa1, 0x51, 0x3d, 0x93, 0x35, + 0xf0, 0xb1, 0x6b, 0x37, 0x9a, 0xd1, 0x53, 0xf8, 0xc1, 0xc8, 0x3b, 0x1b, 0x52, 0x30, 0x17, 0x9e, + 0x7d, 0x6a, 0x7f, 0xa8, 0x40, 0x39, 0x44, 0xb0, 0x54, 0x9c, 0x39, 0x25, 0xd8, 0xe0, 0x8b, 0x27, + 0x5d, 0x33, 0x14, 0x1d, 0x18, 0xe8, 0x39, 0xbb, 0x58, 0x72, 0x0b, 0x78, 0x89, 0x0d, 0x2b, 0x5b, + 0x38, 0x14, 0xbd, 0xcc, 0x20, 0x74, 0x04, 0xf9, 0xda, 0x40, 0xa6, 0xa3, 0x40, 0x30, 0x58, 0x65, + 0x04, 0x15, 0x0e, 0xe3, 0x1c, 0xee, 0x80, 0x28, 0x72, 0x16, 0x79, 0xde, 0x04, 0x07, 0x51, 0x1e, + 0xda, 0x4f, 0x14, 0xa8, 0x46, 0x7b, 0x78, 0xfe, 0x42, 0xfd, 0x08, 0xae, 0x1e, 0x61, 0x17, 0x53, + 0x5e, 0x86, 0x3d, 0xf5, 0x45, 0x28, 0x8d, 0x2d, 0xb1, 0xa8, 0x5d, 0x91, 0xc8, 0xb6, 0xc0, 0x0d, + 0xb0, 0x85, 0x1e, 0xc0, 0x06, 0x5d, 0x84, 0xe2, 0xf4, 0x7c, 0x9d, 0x5b, 0xa7, 0x88, 0x28, 0xed, + 0x9b, 0x80, 0x02, 0x2f, 0x30, 0x47, 0x71, 0x62, 0xee, 0xf3, 0xab, 0x0c, 0x13, 0xa5, 0x7e, 0x0d, + 0x78, 0xa8, 0x40, 0x77, 0x50, 0xbe, 0x6a, 0xf0, 0x95, 0xbc, 0x16, 0x42, 0xe9, 0xd2, 0x41, 0xbb, + 0x08, 0xcc, 0xa1, 0x67, 0x5b, 0x2d, 0xfa, 0x25, 0x00, 0x7e, 0x3d, 0x2d, 0xa0, 0x1a, 0xe1, 0x9b, + 0xeb, 0xad, 0x87, 0xf1, 0x1b, 0x6b, 0xba, 0x79, 0x18, 0xec, 0x7a, 0x96, 0x39, 0xa2, 0x2a, 0xc1, + 0x7a, 0x99, 0x62, 0xd9, 0x27, 0xda, 0x0e, 0xd7, 0x63, 0x5e, 0x9f, 0x3b, 0x4b, 0x77, 0x92, 0xf5, + 0x19, 0x49, 0x84, 0x83, 0x58, 0xb0, 0x39, 0x8f, 0xd7, 0x61, 0xdd, 0x21, 0xc6, 0xa1, 0xe7, 0x5b, + 0x38, 0x1a, 0x0f, 0x95, 0xf4, 0x9a, 0x43, 0x1e, 0x53, 0xe8, 0xae, 0x74, 0x24, 0xd4, 0x63, 0x93, + 0x18, 0x96, 0x37, 0x1e, 0x3b, 0x81, 0xc1, 0xe3, 0x8f, 0x3c, 0x23, 0xac, 0x1f, 0x9b, 0x64, 0x87, + 0x81, 0x59, 0x08, 0xa2, 0x3d, 0x87, 0x8a, 0x38, 0x6c, 0x65, 0x5d, 0x7c, 0x0f, 0xaa, 0x6c, 0x92, + 0xfa, 0xac, 0x98, 0x08, 0xca, 0xe7, 0xaa, 0xd0, 0x2b, 0x93, 0xf0, 0x9b, 0x25, 0x4d, 0x48, 0x80, + 0xa5, 0x03, 0xc0, 0xbe, 0xb5, 0xff, 0x51, 0xe0, 0x2a, 0x63, 0xfc, 0xb2, 0xa9, 0x34, 0x71, 0x38, + 0x9d, 0x3b, 0xf7, 0x70, 0x9a, 0x85, 0x50, 0x6c, 0x07, 0xe5, 0x82, 0x0b, 0xdf, 0x79, 0x23, 0x42, + 0x2e, 0x05, 0x27, 0x91, 0xde, 0x7e, 0x0a, 0xc8, 0xf6, 0x0d, 0x73, 0x1a, 0x78, 0x64, 0xe6, 0x5a, + 0x32, 0xb3, 0xc3, 0x1d, 0x81, 0x37, 0xd2, 0x32, 0x3b, 0x8c, 0x53, 0x5b, 0x6f, 0x4d, 0x03, 0x6f, + 0x30, 0x73, 0x2d, 0x91, 0xd7, 0x51, 0x6d, 0xbf, 0x25, 0x78, 0x88, 0xd3, 0x62, 0x1b, 0x50, 0x1b, + 0x8f, 0xbd, 0x00, 0x3f, 0x36, 0x9d, 0x11, 0xb6, 0x9f, 0x7b, 0x01, 0xf6, 0xc9, 0xf9, 0x13, 0xe4, + 0x5d, 0xa8, 0x1d, 0x32, 0x62, 0xe3, 0x94, 0x51, 0xa7, 0x66, 0x2c, 0xaa, 0x87, 0x11, 0x7e, 0xda, + 0x01, 0x54, 0xa2, 0x83, 0x7e, 0x2f, 0xe4, 0x20, 0x4e, 0x79, 0x15, 0xb6, 0xb4, 0x89, 0x3a, 0xfc, + 0xe4, 0x98, 0xee, 0xb9, 0x98, 0xee, 0x32, 0x31, 0x23, 0x92, 0xbe, 0xf3, 0x06, 0x43, 0x45, 0x78, + 0x12, 0xed, 0xfb, 0x39, 0xa8, 0x8a, 0xdb, 0x13, 0xb3, 0xfe, 0xc8, 0x74, 0xa9, 0x8f, 0x6a, 0xf9, + 0x98, 0x6d, 0x16, 0x4a, 0xba, 0x8f, 0x2a, 0xd0, 0xe8, 0x4d, 0x58, 0x9b, 0x4e, 0x6c, 0x46, 0x99, + 0xea, 0xcd, 0x6e, 0xe7, 0x1a, 0x8a, 0x2e, 0x49, 0xd0, 0x6d, 0x80, 0xf0, 0x50, 0x3c, 0x0c, 0xbf, + 0xe6, 0x10, 0xf4, 0x08, 0xd6, 0x6c, 0xa6, 0x52, 0x99, 0x03, 0x15, 0xb1, 0xea, 0xa2, 0x9e, 0x75, + 0x49, 0x48, 0xad, 0x22, 0x36, 0x57, 0x0a, 0x51, 0xab, 0x88, 0x74, 0x53, 0xaf, 0x1c, 0x46, 0xf4, + 0x28, 0xcd, 0xb9, 0x18, 0x31, 0xe7, 0x0f, 0xa0, 0xd6, 0x3a, 0x33, 0x4f, 0xb0, 0x3c, 0x98, 0xa3, + 0x6e, 0xb2, 0x79, 0xe0, 0x7a, 0xfe, 0xd8, 0x1c, 0xc5, 0xd5, 0x5d, 0x97, 0x60, 0x71, 0x74, 0xff, + 0xd3, 0x1c, 0x5c, 0x4b, 0x4e, 0x84, 0x9f, 0x9d, 0x7b, 0x0d, 0xb4, 0x1f, 0xf2, 0x02, 0x9f, 0x3c, + 0x6a, 0xe1, 0x37, 0xdd, 0xea, 0x02, 0x2c, 0xcf, 0x5a, 0x3e, 0x84, 0x2d, 0x1f, 0x7f, 0x3e, 0x75, + 0x7c, 0x6c, 0xd8, 0x38, 0xe0, 0x76, 0x26, 0x26, 0x1b, 0x5b, 0x59, 0xd8, 0x68, 0x5e, 0x15, 0x24, + 0x6d, 0x41, 0x21, 0xe6, 0xd9, 0xcf, 0x53, 0xef, 0x84, 0xdb, 0x90, 0x31, 0x19, 0x99, 0xae, 0x18, + 0x08, 0x34, 0x77, 0x18, 0xa4, 0x79, 0xe9, 0x55, 0x3f, 0x6a, 0x6c, 0x1f, 0x42, 0xdd, 0x64, 0x6a, + 0x97, 0x3b, 0xb6, 0x48, 0xb7, 0x88, 0x35, 0x23, 0x36, 0x24, 0x7a, 0xcd, 0x8c, 0x16, 0xb5, 0x1f, + 0xe4, 0x60, 0x73, 0x60, 0x99, 0x41, 0x40, 0x17, 0xaa, 0xcc, 0x57, 0x19, 0xee, 0x2c, 0x1c, 0x8e, + 0xb3, 0x8e, 0xce, 0xe7, 0xed, 0x25, 0xef, 0xad, 0x45, 0x92, 0xfd, 0xf9, 0x73, 0x92, 0xfd, 0x9b, + 0x50, 0x38, 0xf2, 0xbd, 0xe9, 0x84, 0x69, 0xa8, 0xac, 0xf3, 0xc2, 0xfc, 0x3e, 0x05, 0xf3, 0x58, + 0x8a, 0xcc, 0xce, 0x84, 0x58, 0xd4, 0x55, 0x61, 0x5b, 0x75, 0xe0, 0xcf, 0x0c, 0x7e, 0x4a, 0xce, + 0x53, 0xf3, 0xc0, 0x40, 0xbb, 0x14, 0xa2, 0x9d, 0xc2, 0xd5, 0x84, 0x26, 0x32, 0x59, 0xe0, 0xdb, + 0x70, 0xe5, 0xd0, 0x71, 0x1d, 0x72, 0x8c, 0x6d, 0x63, 0x82, 0x7d, 0x0b, 0xbb, 0x81, 0xbc, 0x88, + 0x99, 0xd7, 0x91, 0x44, 0xf5, 0x43, 0x8c, 0xd6, 0x86, 0xab, 0x5d, 0x1c, 0x74, 0x77, 0x06, 0xe6, + 0x21, 0xee, 0x7b, 0x8e, 0x9b, 0x69, 0x0f, 0xd0, 0x30, 0x5c, 0x4b, 0x72, 0xc9, 0x24, 0x3e, 0x75, + 0x0f, 0xcd, 0x43, 0x6c, 0x4c, 0x28, 0x0f, 0x21, 0x75, 0x99, 0x48, 0xa6, 0xda, 0x21, 0x34, 0x9e, + 0xb1, 0xb5, 0xe8, 0x25, 0xe5, 0xbd, 0xa8, 0x1d, 0x0f, 0xae, 0xa7, 0xb4, 0x93, 0xa9, 0x47, 0xaf, + 0x42, 0xdd, 0xc5, 0x67, 0xc6, 0x42, 0x6b, 0x55, 0x17, 0x9f, 0x85, 0xbc, 0xb5, 0x1f, 0x2b, 0x70, + 0x87, 0xb7, 0x38, 0xc0, 0xfe, 0xa9, 0x63, 0x7d, 0x25, 0x1d, 0xe4, 0x9c, 0xe4, 0xa4, 0xa8, 0xea, + 0x65, 0x01, 0xe9, 0xd9, 0x34, 0xca, 0x1f, 0x0e, 0x77, 0xd9, 0x74, 0x58, 0xd5, 0xe9, 0x67, 0x42, + 0x23, 0xf9, 0xa4, 0x46, 0xfe, 0x56, 0x81, 0xbb, 0xcb, 0x05, 0xcc, 0x3c, 0xd6, 0x5f, 0x4a, 0xc4, + 0x57, 0xa1, 0x3e, 0x76, 0x5c, 0x63, 0x41, 0xcc, 0xea, 0xd8, 0x71, 0xe7, 0xaa, 0xfc, 0x23, 0x05, + 0x40, 0x0f, 0xfd, 0xb1, 0xc5, 0xd0, 0x52, 0xb9, 0xf0, 0xdc, 0x2c, 0x77, 0xd1, 0xb9, 0xd9, 0xea, + 0x05, 0xe7, 0x66, 0xf9, 0x78, 0x68, 0xa9, 0xfd, 0x9e, 0x02, 0x1b, 0xd4, 0x17, 0x79, 0x89, 0x35, + 0xee, 0x55, 0x28, 0xf2, 0x63, 0xe6, 0xd4, 0x23, 0x57, 0x81, 0x63, 0xe9, 0x3b, 0x16, 0xcc, 0x3b, + 0xae, 0x8d, 0x5f, 0x08, 0x39, 0x79, 0x7c, 0xdf, 0xa3, 0x10, 0xed, 0x3d, 0xee, 0x2c, 0x13, 0x1e, + 0xe0, 0xbc, 0x26, 0x4f, 0x5e, 0x94, 0xf4, 0x13, 0x4b, 0x71, 0xf8, 0xf2, 0x0d, 0x28, 0xf0, 0x33, + 0x48, 0x2d, 0x4e, 0x9f, 0x7a, 0x52, 0xf3, 0x3b, 0xab, 0x80, 0xa2, 0x7d, 0xcd, 0x64, 0x1a, 0x97, + 0x4e, 0xb2, 0x5d, 0xd8, 0x63, 0xea, 0x2d, 0x47, 0x5c, 0x7a, 0xe9, 0x98, 0xa8, 0xd1, 0x1b, 0x31, + 0x2c, 0xf6, 0x8b, 0xf8, 0xf0, 0x34, 0x78, 0xae, 0x8b, 0x4a, 0xf1, 0xd3, 0xf6, 0x78, 0x8f, 0x6b, + 0x9c, 0x46, 0xb8, 0x61, 0xd1, 0xab, 0x61, 0x45, 0xa1, 0xcf, 0x25, 0x57, 0xc3, 0xd0, 0xdb, 0xb1, + 0xf3, 0x62, 0x35, 0xe9, 0xc0, 0x93, 0x85, 0x03, 0xe3, 0x77, 0x92, 0x07, 0xc6, 0x3c, 0x77, 0x50, + 0x89, 0xd4, 0x49, 0xdc, 0x52, 0xfa, 0x35, 0x76, 0xf1, 0x61, 0x7f, 0x42, 0x23, 0x36, 0xcf, 0xff, + 0xca, 0x2f, 0x9d, 0x69, 0xff, 0xa8, 0xb0, 0xdb, 0x96, 0xf3, 0x06, 0x32, 0x0d, 0xf4, 0xb9, 0xf7, + 0xda, 0x10, 0xe4, 0x6d, 0x4c, 0x78, 0x38, 0x59, 0xd5, 0xd9, 0x37, 0x65, 0x1f, 0x09, 0x01, 0xea, + 0x92, 0xbd, 0x14, 0x43, 0x38, 0x51, 0x82, 0x86, 0x9d, 0xe5, 0x39, 0xae, 0x7c, 0x70, 0xc1, 0xbe, + 0xd9, 0x61, 0x05, 0x35, 0xd0, 0xa7, 0xe6, 0x8b, 0xe1, 0x20, 0x6b, 0x32, 0x7d, 0x6c, 0xbe, 0x30, + 0xc2, 0x88, 0x67, 0xe1, 0x66, 0x7e, 0x61, 0x6c, 0xbe, 0x18, 0xf2, 0x5c, 0xc7, 0x89, 0x33, 0x31, + 0xac, 0x63, 0x6c, 0x9d, 0x88, 0x20, 0xb0, 0x4c, 0x21, 0xec, 0xd8, 0x51, 0xfb, 0x63, 0xb1, 0x2a, + 0x08, 0x41, 0xb2, 0xde, 0x22, 0xa3, 0xa2, 0x8c, 0x68, 0x2c, 0x7a, 0x8e, 0x40, 0x30, 0x36, 0x5f, + 0xb0, 0x78, 0x55, 0x48, 0x35, 0x73, 0x2d, 0x6c, 0x1b, 0xb6, 0x25, 0x2f, 0x10, 0x95, 0x39, 0xa4, + 0x6d, 0x11, 0xed, 0xb7, 0x14, 0xb8, 0x12, 0x39, 0xcf, 0x22, 0x99, 0x77, 0x1f, 0x76, 0x8c, 0x10, + 0x39, 0x49, 0x2d, 0x33, 0x08, 0xcb, 0xbf, 0x26, 0x9c, 0xa1, 0xd5, 0x05, 0x67, 0xe8, 0x4f, 0x14, + 0xd8, 0x8c, 0x0b, 0xf1, 0xff, 0xe2, 0x0c, 0x25, 0x9c, 0xb8, 0xd5, 0x84, 0x13, 0xa7, 0xfd, 0xa5, + 0x02, 0xb7, 0x98, 0x58, 0x2d, 0xd7, 0x8e, 0x39, 0x6b, 0x5f, 0x8b, 0x96, 0x42, 0x3f, 0x73, 0x35, + 0xea, 0x67, 0x26, 0x74, 0x97, 0x5f, 0xd0, 0xdd, 0x7f, 0x29, 0x70, 0x7b, 0x99, 0x90, 0x99, 0xb4, + 0xf8, 0x21, 0x5c, 0xe7, 0x62, 0x2e, 0xd7, 0xe5, 0x16, 0x23, 0x78, 0xbc, 0xa8, 0xd0, 0x8f, 0xe0, + 0x06, 0xe1, 0x32, 0xa4, 0xd6, 0xe6, 0x23, 0x7f, 0x5d, 0x90, 0x3c, 0xbe, 0x68, 0x40, 0xf2, 0xc9, + 0x01, 0x39, 0x66, 0x37, 0x0f, 0xdb, 0x3b, 0xf2, 0xc6, 0x58, 0xcf, 0x3d, 0xf4, 0x32, 0x86, 0x10, + 0xb1, 0xab, 0x68, 0xb9, 0x85, 0xab, 0x68, 0xbf, 0xaf, 0xc0, 0xf5, 0x94, 0xa6, 0xb2, 0x3e, 0x54, + 0xe0, 0xcf, 0x87, 0x58, 0x3b, 0x05, 0x5d, 0x94, 0x22, 0xeb, 0xca, 0xea, 0x79, 0xeb, 0x8a, 0xf6, + 0x4f, 0x39, 0x80, 0x79, 0x7a, 0x15, 0xd5, 0x21, 0xd7, 0xdd, 0x11, 0x6e, 0x4d, 0xae, 0xbb, 0x43, + 0x1d, 0xa7, 0x2e, 0x96, 0x6e, 0x26, 0xfd, 0xa4, 0xcb, 0xe0, 0xc0, 0x32, 0xa5, 0xdf, 0xc2, 0xbe, + 0xd1, 0x5d, 0xa8, 0xec, 0x78, 0x13, 0xdf, 0xb3, 0x30, 0x21, 0x9e, 0x2f, 0xec, 0x28, 0x0a, 0xa2, + 0x62, 0xb6, 0xf1, 0x08, 0x07, 0x32, 0xf1, 0x26, 0x4a, 0xb4, 0x26, 0xff, 0xd2, 0x4d, 0xf7, 0x08, + 0x8b, 0x10, 0x3c, 0x0a, 0xa2, 0x12, 0xf4, 0xa7, 0x32, 0xc8, 0xa1, 0x9f, 0xa8, 0x09, 0xa5, 0xbe, + 0x8f, 0x59, 0x82, 0x5a, 0xdc, 0x3a, 0x0a, 0xcb, 0xe8, 0x9b, 0x70, 0xad, 0x65, 0xb1, 0x90, 0xb4, + 0x8f, 0x09, 0x71, 0xc6, 0x0e, 0x09, 0x1c, 0xaa, 0xf8, 0x13, 0x71, 0xff, 0x68, 0x09, 0x96, 0xca, + 0xc7, 0xb3, 0x64, 0xe2, 0x38, 0x41, 0x94, 0x68, 0x5b, 0xba, 0x37, 0x1a, 0x1d, 0x98, 0xd6, 0x89, + 0x38, 0x47, 0x08, 0xcb, 0xda, 0xdf, 0x28, 0xb0, 0x29, 0x0e, 0xe5, 0xc4, 0x9e, 0x9c, 0xc5, 0x5a, + 0x92, 0xd7, 0x12, 0x72, 0x97, 0xbc, 0x96, 0x10, 0xf1, 0x10, 0x56, 0xcf, 0xbf, 0x3c, 0xae, 0x75, + 0xe0, 0x6a, 0x42, 0xce, 0xac, 0xa7, 0xc7, 0x4d, 0xce, 0xe7, 0xa9, 0x43, 0x9d, 0x31, 0x6f, 0x74, + 0x8a, 0xed, 0x21, 0xf9, 0x8a, 0xdf, 0xc1, 0xa0, 0xd7, 0x61, 0x9d, 0x7a, 0xe6, 0xbe, 0x68, 0x40, + 0x9a, 0x70, 0x5e, 0xaf, 0x8d, 0xa3, 0xcd, 0x6a, 0x4f, 0xe0, 0x46, 0xaa, 0x34, 0x99, 0xfa, 0x76, + 0x0c, 0x37, 0x06, 0x38, 0xe8, 0xbc, 0x08, 0xb0, 0xef, 0x9a, 0xa3, 0xf9, 0x2c, 0xc9, 0xd2, 0xb7, + 0x9b, 0xd1, 0xf7, 0x76, 0xc2, 0xff, 0x9f, 0x3f, 0xaf, 0xdb, 0x85, 0x9b, 0xe9, 0x2d, 0x65, 0x92, + 0xfb, 0x13, 0xb8, 0xd1, 0xfd, 0x8a, 0xe4, 0xd6, 0xbe, 0x0b, 0x37, 0xbb, 0x5f, 0x99, 0x64, 0x17, + 0x68, 0xa1, 0xc3, 0x62, 0xfc, 0xa7, 0x8e, 0xfb, 0x72, 0x22, 0x9f, 0xb2, 0x5b, 0xe7, 0x71, 0x36, + 0x99, 0xa4, 0x7d, 0x2b, 0x29, 0xed, 0xb9, 0x6f, 0x24, 0x1f, 0xdc, 0x85, 0x72, 0xf8, 0x24, 0x17, + 0xad, 0xc1, 0x6a, 0xff, 0xd9, 0x50, 0x5d, 0x41, 0x00, 0xc5, 0x76, 0x67, 0xb7, 0x33, 0xec, 0xa8, + 0xca, 0x83, 0xef, 0xe7, 0xa0, 0x1c, 0x3e, 0x66, 0x45, 0x45, 0xc8, 0xed, 0x3f, 0x51, 0x57, 0x50, + 0x05, 0xd6, 0x9e, 0xed, 0x3d, 0xd9, 0xdb, 0xff, 0x74, 0x4f, 0x55, 0xd0, 0x26, 0xa8, 0x7b, 0xfb, + 0x43, 0x63, 0x7b, 0x7f, 0x7f, 0x38, 0x18, 0xea, 0xad, 0x7e, 0xbf, 0xd3, 0x56, 0x73, 0xe8, 0x0a, + 0xac, 0x0f, 0x86, 0xfb, 0x7a, 0xc7, 0x18, 0xee, 0x3f, 0xdd, 0x1e, 0x0c, 0xf7, 0xf7, 0x3a, 0xea, + 0x2a, 0x6a, 0xc0, 0x66, 0x6b, 0x57, 0xef, 0xb4, 0xda, 0x9f, 0xc5, 0xc9, 0xf3, 0x14, 0xd3, 0xdb, + 0xdb, 0xd9, 0x7f, 0xda, 0x6f, 0x0d, 0x7b, 0xdb, 0xbb, 0x1d, 0xe3, 0x79, 0x47, 0x1f, 0xf4, 0xf6, + 0xf7, 0xd4, 0x02, 0x65, 0xaf, 0x77, 0xba, 0xbd, 0xfd, 0x3d, 0x83, 0xb6, 0xf2, 0x78, 0xff, 0xd9, + 0x5e, 0x5b, 0x2d, 0xa2, 0x1b, 0xb0, 0xd5, 0xdd, 0xdd, 0xdf, 0x6e, 0xed, 0x1a, 0x3b, 0xfb, 0x7b, + 0x8f, 0x7b, 0xdd, 0x08, 0x72, 0x8d, 0x56, 0x69, 0x3f, 0xeb, 0xef, 0xf6, 0x76, 0x5a, 0xc3, 0x4e, + 0xdb, 0xe8, 0xec, 0x0d, 0xf5, 0xcf, 0xd4, 0x12, 0x95, 0x88, 0x7d, 0x46, 0x48, 0xcb, 0x68, 0x03, + 0x6a, 0xbd, 0xbd, 0xe7, 0xad, 0xdd, 0x5e, 0xdb, 0x78, 0xde, 0xda, 0x7d, 0xd6, 0x51, 0x01, 0x21, + 0xa8, 0xb7, 0x5b, 0xc3, 0x96, 0xc1, 0xa4, 0xd9, 0x19, 0x76, 0xda, 0x6a, 0xe5, 0xc1, 0xfb, 0x50, + 0x89, 0xdc, 0x8b, 0x43, 0x25, 0xc8, 0x0f, 0x76, 0x5a, 0x7b, 0xea, 0x0a, 0x5a, 0x87, 0x4a, 0xab, + 0xdf, 0xd7, 0xf7, 0xbf, 0xdd, 0x7b, 0xda, 0xa2, 0x0a, 0xa3, 0xca, 0x7b, 0x36, 0xe8, 0x3c, 0xe9, + 0x7c, 0xa6, 0xe6, 0x1e, 0xf4, 0xa1, 0x1e, 0x77, 0xc2, 0xa9, 0xe2, 0x06, 0xcf, 0x76, 0x76, 0x3a, + 0x83, 0x01, 0xd7, 0xe2, 0xb0, 0xf7, 0xb4, 0xb3, 0xff, 0x6c, 0xc8, 0xeb, 0xed, 0xb4, 0xf6, 0x76, + 0x3a, 0xbb, 0x6a, 0x8e, 0x22, 0xf4, 0x4e, 0x7f, 0xb7, 0xb5, 0x43, 0x75, 0x46, 0x0b, 0xcf, 0xf6, + 0xf6, 0x7a, 0x7b, 0x5d, 0x35, 0xff, 0xe0, 0xef, 0x15, 0x28, 0xb3, 0x6d, 0xee, 0x89, 0xe3, 0xda, + 0xb4, 0xce, 0x7e, 0x70, 0x8c, 0x7d, 0xa2, 0xae, 0xd0, 0xa1, 0xe9, 0xee, 0xa8, 0x0a, 0x1d, 0xc5, + 0x2e, 0x0e, 0xd4, 0x1c, 0x93, 0xd1, 0x32, 0x5d, 0x75, 0x95, 0xca, 0x18, 0xd9, 0xc3, 0xd4, 0x3c, + 0x1b, 0x60, 0xb6, 0x35, 0xa9, 0x05, 0x8a, 0x8c, 0x6c, 0x53, 0x6a, 0x91, 0x99, 0xc1, 0x34, 0x50, + 0xd7, 0x50, 0x75, 0xbe, 0x3f, 0xa9, 0x25, 0xd4, 0x5c, 0xb6, 0x23, 0xa9, 0x65, 0x26, 0x3b, 0xdb, + 0x67, 0x54, 0xa0, 0xb5, 0xe4, 0xce, 0xa2, 0x56, 0x1e, 0xfd, 0xf7, 0x16, 0xe4, 0xfa, 0x6d, 0xd4, + 0x02, 0x98, 0xdf, 0xc6, 0x46, 0x5b, 0x8b, 0xf7, 0xb3, 0xd9, 0xa4, 0x68, 0x36, 0x96, 0x5d, 0xdc, + 0xd6, 0x56, 0xd0, 0x3b, 0xb0, 0x3a, 0x24, 0x1e, 0x12, 0x11, 0xe1, 0xfc, 0xc9, 0x74, 0x73, 0x23, + 0x02, 0x91, 0xd4, 0xf7, 0x95, 0x77, 0x14, 0xf4, 0x11, 0x94, 0xc3, 0xf7, 0xa8, 0x48, 0xbc, 0x95, + 0x4f, 0x3e, 0x08, 0x6e, 0x6e, 0x2d, 0xc0, 0xc3, 0x16, 0x9f, 0x42, 0x3d, 0xfe, 0xa2, 0x15, 0xdd, + 0xe0, 0xc4, 0xa9, 0xaf, 0x65, 0x9b, 0x37, 0xd3, 0x91, 0x21, 0xbb, 0x0f, 0x60, 0x4d, 0xbc, 0x3a, + 0x45, 0x62, 0x0e, 0xc7, 0xdf, 0xb0, 0x36, 0xaf, 0x26, 0xa0, 0x61, 0x4d, 0x03, 0x36, 0xd3, 0x9e, + 0x84, 0xa2, 0x57, 0x64, 0x8b, 0x4b, 0x9f, 0x9e, 0x36, 0xb5, 0xf3, 0x48, 0xc2, 0x06, 0x7e, 0x11, + 0x4a, 0xf2, 0xc5, 0x26, 0xba, 0x1a, 0x8e, 0x41, 0xf4, 0xc9, 0x64, 0xf3, 0x5a, 0x12, 0x1c, 0xad, + 0x2c, 0x5f, 0x3e, 0xca, 0xca, 0x89, 0xf7, 0x96, 0xb2, 0x72, 0xf2, 0x81, 0xa4, 0xb6, 0x82, 0xba, + 0x50, 0x8d, 0x3e, 0x10, 0x44, 0xd7, 0xc3, 0x66, 0x92, 0x4f, 0x16, 0x9b, 0xcd, 0x34, 0x54, 0x74, + 0xb0, 0xe2, 0xa7, 0x15, 0x72, 0xb0, 0x52, 0x0f, 0xf3, 0xe4, 0x60, 0xa5, 0x1f, 0x70, 0x68, 0x2b, + 0x68, 0x08, 0xeb, 0x89, 0xcb, 0xa3, 0xe8, 0x66, 0x34, 0x3d, 0xb2, 0xc0, 0xf0, 0xd6, 0x12, 0x6c, + 0xd2, 0x22, 0xc3, 0x67, 0x6f, 0x68, 0xae, 0xd1, 0x58, 0x0a, 0xac, 0xb9, 0xb5, 0x00, 0x0f, 0xa5, + 0xda, 0x86, 0x5a, 0x17, 0x07, 0x7d, 0x1f, 0x9f, 0x66, 0xe7, 0xf1, 0x98, 0xf1, 0x98, 0x3f, 0xbd, + 0x43, 0xcd, 0x04, 0x6d, 0xe4, 0x3d, 0xde, 0x79, 0x7c, 0xda, 0x50, 0x89, 0x3c, 0xf8, 0x42, 0x62, + 0xea, 0x2e, 0xbe, 0xa7, 0x6b, 0x5e, 0x4f, 0xc1, 0x84, 0x5c, 0x3e, 0x82, 0x92, 0xbc, 0x24, 0x29, + 0x8d, 0x27, 0x71, 0x3b, 0x53, 0x1a, 0x4f, 0xf2, 0x2e, 0xa5, 0xb6, 0xfa, 0x83, 0x9c, 0x82, 0xba, + 0x50, 0x89, 0x5c, 0x27, 0x94, 0x52, 0x2c, 0x5e, 0x77, 0x94, 0x52, 0xa4, 0xdc, 0x3d, 0xe4, 0x8c, + 0x3e, 0x81, 0x5a, 0xec, 0xca, 0x9d, 0x54, 0x4b, 0xda, 0x35, 0xc3, 0xe6, 0x8d, 0x54, 0x5c, 0xd8, + 0xa9, 0x01, 0xa8, 0xc9, 0x4b, 0x6e, 0xe8, 0x56, 0xb4, 0xfd, 0x45, 0x8e, 0xb7, 0x97, 0xa1, 0xa3, + 0x4c, 0x93, 0x0f, 0xca, 0x24, 0xd3, 0x25, 0x0f, 0xd6, 0x24, 0xd3, 0x65, 0xef, 0xd0, 0x38, 0xd3, + 0xe4, 0xeb, 0x2d, 0xc9, 0x74, 0xc9, 0x43, 0x32, 0xc9, 0x74, 0xd9, 0xa3, 0x2f, 0x6d, 0x85, 0xaa, + 0x32, 0x16, 0x63, 0x4b, 0x55, 0xa6, 0x1d, 0x6a, 0x49, 0x55, 0xa6, 0x1e, 0xf3, 0xf0, 0x69, 0x1d, + 0x3f, 0x43, 0x91, 0xd3, 0x3a, 0xf5, 0x7c, 0x46, 0x4e, 0xeb, 0xf4, 0x63, 0x17, 0x6d, 0x05, 0x3d, + 0x87, 0x8d, 0x85, 0x33, 0x0c, 0x24, 0x7a, 0xb4, 0xec, 0x10, 0xa5, 0x79, 0x67, 0x29, 0x3e, 0xe4, + 0x7b, 0x22, 0xcf, 0x60, 0x16, 0x0f, 0x02, 0xd0, 0x6b, 0xd1, 0xea, 0x4b, 0x4f, 0x32, 0x9a, 0xaf, + 0x5f, 0x44, 0x16, 0x99, 0xc1, 0x95, 0x79, 0x32, 0x39, 0xdc, 0x4d, 0x17, 0x72, 0xe9, 0x72, 0x37, + 0x5d, 0x4c, 0x3c, 0x8b, 0xd5, 0xa8, 0x0d, 0x95, 0x48, 0xb2, 0x12, 0xcd, 0x37, 0xdf, 0x44, 0x82, + 0xb4, 0x79, 0x3d, 0x05, 0x13, 0x99, 0xc1, 0xe5, 0x30, 0x61, 0x27, 0xd7, 0xa3, 0x64, 0x2a, 0xb1, + 0xb9, 0xb5, 0x00, 0x8f, 0xee, 0x00, 0xd1, 0xac, 0x96, 0xdc, 0x01, 0x52, 0xd2, 0x6d, 0x72, 0x07, + 0x48, 0x4b, 0x82, 0x69, 0x2b, 0x08, 0xc3, 0xb5, 0xf4, 0x14, 0x0f, 0xba, 0x17, 0xa9, 0xb7, 0x2c, + 0x4b, 0xd5, 0x7c, 0xf5, 0x7c, 0xa2, 0xa8, 0x09, 0x2d, 0xe4, 0x3c, 0xd0, 0x7c, 0xa6, 0xa5, 0xe6, + 0x5d, 0xa4, 0x09, 0x2d, 0x4d, 0x96, 0x70, 0xbe, 0x0b, 0xff, 0x44, 0x24, 0xf9, 0x2e, 0xfb, 0x47, + 0x24, 0xc9, 0x77, 0xe9, 0x5f, 0x18, 0xf1, 0x29, 0x9e, 0xfc, 0x3f, 0x21, 0x39, 0xc5, 0x97, 0xfc, + 0x73, 0x91, 0x9c, 0xe2, 0xcb, 0xfe, 0x86, 0x48, 0x5b, 0x41, 0xdf, 0x86, 0x8d, 0x85, 0xbf, 0x8f, + 0x92, 0xc2, 0x2e, 0xfb, 0xc7, 0x2a, 0x29, 0xec, 0xd2, 0xff, 0x9d, 0xd2, 0x56, 0xde, 0x51, 0xd0, + 0x2e, 0xd4, 0x62, 0x31, 0xbe, 0x5c, 0x3c, 0xd2, 0x12, 0x14, 0x72, 0xf1, 0x48, 0x4d, 0x0a, 0x50, + 0x23, 0x47, 0xdf, 0x91, 0xb7, 0xcd, 0xa3, 0xb1, 0xf5, 0x00, 0xdd, 0x8d, 0xd6, 0x4b, 0x4b, 0x02, + 0x34, 0x5f, 0x39, 0x87, 0x22, 0xea, 0x97, 0xa5, 0x85, 0xc0, 0xd2, 0x2f, 0x3b, 0x27, 0x10, 0x97, + 0x7e, 0xd9, 0x79, 0x11, 0x34, 0x6f, 0xa0, 0x7b, 0x4e, 0x03, 0xdd, 0x8b, 0x1b, 0xe8, 0x9e, 0xdf, + 0x40, 0x9f, 0xfd, 0x0d, 0x48, 0x34, 0xee, 0x44, 0xf3, 0x25, 0x34, 0x25, 0xaa, 0x6d, 0xde, 0x5a, + 0x82, 0x95, 0x1c, 0xb7, 0x5f, 0xff, 0xf7, 0xbf, 0x2b, 0x29, 0xff, 0xfa, 0xc5, 0x6d, 0xe5, 0xdf, + 0xbe, 0xb8, 0xad, 0xfc, 0xe4, 0x8b, 0xdb, 0xca, 0x5f, 0xfc, 0xe7, 0xed, 0x15, 0x50, 0x3d, 0xff, + 0xe8, 0x61, 0xe0, 0x9c, 0x9c, 0x3e, 0x3c, 0x39, 0x65, 0x7f, 0x6d, 0x76, 0x50, 0x64, 0x3f, 0xef, + 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0xb1, 0xc4, 0xe0, 0x68, 0x4d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -7643,6 +7749,10 @@ type PDClient interface { ReportMinResolvedTS(ctx context.Context, in *ReportMinResolvedTsRequest, opts ...grpc.CallOption) (*ReportMinResolvedTsResponse, error) SetExternalTimestamp(ctx context.Context, in *SetExternalTimestampRequest, opts ...grpc.CallOption) (*SetExternalTimestampResponse, error) GetExternalTimestamp(ctx context.Context, in *GetExternalTimestampRequest, opts ...grpc.CallOption) (*GetExternalTimestampResponse, error) + // Get the minimum timestamp across all keyspace groups from API server + // TODO: Currently, we need to ask API server to get the minimum timestamp. + // Once we support service discovery, we can remove it. + GetMinTimestamp(ctx context.Context, in *GetMinTimestampRequest, opts ...grpc.CallOption) (*GetMinTimestampResponse, error) } type pDClient struct { @@ -8111,6 +8221,15 @@ func (c *pDClient) GetExternalTimestamp(ctx context.Context, in *GetExternalTime return out, nil } +func (c *pDClient) GetMinTimestamp(ctx context.Context, in *GetMinTimestampRequest, opts ...grpc.CallOption) (*GetMinTimestampResponse, error) { + out := new(GetMinTimestampResponse) + err := c.cc.Invoke(ctx, "/pdpb.PD/GetMinTimestamp", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // PDServer is the server API for PD service. type PDServer interface { // GetMembers get the member list of this cluster. It does not require @@ -8153,6 +8272,10 @@ type PDServer interface { ReportMinResolvedTS(context.Context, *ReportMinResolvedTsRequest) (*ReportMinResolvedTsResponse, error) SetExternalTimestamp(context.Context, *SetExternalTimestampRequest) (*SetExternalTimestampResponse, error) GetExternalTimestamp(context.Context, *GetExternalTimestampRequest) (*GetExternalTimestampResponse, error) + // Get the minimum timestamp across all keyspace groups from API server + // TODO: Currently, we need to ask API server to get the minimum timestamp. + // Once we support service discovery, we can remove it. + GetMinTimestamp(context.Context, *GetMinTimestampRequest) (*GetMinTimestampResponse, error) } // UnimplementedPDServer can be embedded to have forward compatible implementations. @@ -8273,6 +8396,9 @@ func (*UnimplementedPDServer) SetExternalTimestamp(ctx context.Context, req *Set func (*UnimplementedPDServer) GetExternalTimestamp(ctx context.Context, req *GetExternalTimestampRequest) (*GetExternalTimestampResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExternalTimestamp not implemented") } +func (*UnimplementedPDServer) GetMinTimestamp(ctx context.Context, req *GetMinTimestampRequest) (*GetMinTimestampResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMinTimestamp not implemented") +} func RegisterPDServer(s *grpc.Server, srv PDServer) { s.RegisterService(&_PD_serviceDesc, srv) @@ -8997,6 +9123,24 @@ func _PD_GetExternalTimestamp_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _PD_GetMinTimestamp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMinTimestampRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PDServer).GetMinTimestamp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pdpb.PD/GetMinTimestamp", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PDServer).GetMinTimestamp(ctx, req.(*GetMinTimestampRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _PD_serviceDesc = grpc.ServiceDesc{ ServiceName: "pdpb.PD", HandlerType: (*PDServer)(nil), @@ -9133,6 +9277,10 @@ var _PD_serviceDesc = grpc.ServiceDesc{ MethodName: "GetExternalTimestamp", Handler: _PD_GetExternalTimestamp_Handler, }, + { + MethodName: "GetMinTimestamp", + Handler: _PD_GetMinTimestamp_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -15244,6 +15392,96 @@ func (m *GetExternalTimestampResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } +func (m *GetMinTimestampRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetMinTimestampRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetMinTimestampRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Header != nil { + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPdpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetMinTimestampResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetMinTimestampResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetMinTimestampResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Timestamp != nil { + { + size, err := m.Timestamp.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPdpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Header != nil { + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPdpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintPdpb(dAtA []byte, offset int, v uint64) int { offset -= sovPdpb(v) base := offset @@ -17854,6 +18092,42 @@ func (m *GetExternalTimestampResponse) Size() (n int) { return n } +func (m *GetMinTimestampRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Header != nil { + l = m.Header.Size() + n += 1 + l + sovPdpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GetMinTimestampResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Header != nil { + l = m.Header.Size() + n += 1 + l + sovPdpb(uint64(l)) + } + if m.Timestamp != nil { + l = m.Timestamp.Size() + n += 1 + l + sovPdpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovPdpb(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -33414,6 +33688,216 @@ func (m *GetExternalTimestampResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *GetMinTimestampRequest) 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 ErrIntOverflowPdpb + } + 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: GetMinTimestampRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMinTimestampRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPdpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPdpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPdpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Header == nil { + m.Header = &RequestHeader{} + } + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPdpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPdpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetMinTimestampResponse) 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 ErrIntOverflowPdpb + } + 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: GetMinTimestampResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMinTimestampResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPdpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPdpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPdpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Header == nil { + m.Header = &ResponseHeader{} + } + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPdpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPdpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPdpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Timestamp == nil { + m.Timestamp = &Timestamp{} + } + if err := m.Timestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPdpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPdpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipPdpb(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/pkg/tracepb/tracepb.pb.go b/pkg/tracepb/tracepb.pb.go index e5b4919f..55cf091a 100644 --- a/pkg/tracepb/tracepb.pb.go +++ b/pkg/tracepb/tracepb.pb.go @@ -68,6 +68,7 @@ var xxx_messageInfo_TraceRecordRequest proto.InternalMessageInfo type TraceRecord struct { // Types that are valid to be assigned to RecordOneof: + // // *TraceRecord_Report // *TraceRecord_NotifyCollect RecordOneof isTraceRecord_RecordOneof `protobuf_oneof:"record_oneof"` diff --git a/proto/pdpb.proto b/proto/pdpb.proto index 644f6095..33fea863 100644 --- a/proto/pdpb.proto +++ b/proto/pdpb.proto @@ -100,6 +100,11 @@ service PD { rpc SetExternalTimestamp(SetExternalTimestampRequest) returns (SetExternalTimestampResponse) {} rpc GetExternalTimestamp(GetExternalTimestampRequest) returns (GetExternalTimestampResponse) {} + + // Get the minimum timestamp across all keyspace groups from API server + // TODO: Currently, we need to ask API server to get the minimum timestamp. + // Once we support service discovery, we can remove it. + rpc GetMinTimestamp (GetMinTimestampRequest) returns (GetMinTimestampResponse) {} } message WatchGlobalConfigRequest { @@ -975,3 +980,13 @@ message GetExternalTimestampResponse { uint64 timestamp = 2; } + +message GetMinTimestampRequest { + RequestHeader header = 1; +} + +message GetMinTimestampResponse { + ResponseHeader header = 1; + + Timestamp timestamp = 2; +} diff --git a/src/protos/autoid_grpc.rs b/src/protos/autoid_grpc.rs index 36c2ce69..4a7b3acd 100644 --- a/src/protos/autoid_grpc.rs +++ b/src/protos/autoid_grpc.rs @@ -32,7 +32,7 @@ const METHOD_AUTO_ID_ALLOC_REBASE: ::grpcio::Method-T#7{_FEu*ZN%7y4G>8z3-oIryD`~moU+HfDHRi(gS<8j%-Q~Nq z3_2yht#!*sYy3WaTV6aryL#XBlb2d1F3hYR4;y~YMVHhD{g`)cxwq^uOp{MrdQ|+)jRUGDR@!NWQ=(b5=bo3G zcggSe{D0_^2mkRhbh>Z*ze{VgI{5<|M?I2O%GJD7`e(Uz($lVEZA&Nrc=8`Dk9PKV zv?^XoD$bYEU8>n1+^OB4N}3RE8h*jxri+FQ9dglS7d34Su<4w0FTHr!u%>e^ys+s% z246nxl5@@-+;sk>7hiVCu%_Q%dhta~hn{#$)3Cvp{%P=~m8MfpIO2qZnhwA0(n|*q z9e&~EyEpxx!A(O44?eGH_{B}<4Ev9*w#DE}g*yNL=XB3X(+NZIL-k>oU2@6Amktju zhCrP+WZ1bE<4ncRJ!fdsrGqbmXc{tn&q}3rC6{I;w5y>@L@B7-UJ+%W;-Hf%l}hSL zRd-S8l7xR}u0*Aa8k#DN73WH6shSOSJt}P~xd2ynL)}F?iiE&i3WGC2)EnB^IhG+m zv|D#mq3B}Q#Z(ehE_OqEU|EPvg3QIPl~qi{wo;7Lf*kIKMNx@yxW!1Jm|Bb= zVjND4lCUHt$(On9LQ?^#T;_&{9*{DExy)(XKuNX8F6+?EqDhgttmn3&scF^yx%8jf zRLrtJTYsd|)XS}@0GfKaH5G*V<`)jGt7&EN?YTc1ZjDK?-Lka+>|IPh%r_f3uLH^AWnWcq9 z`L{~DScv@JsvSV7b5(z3Qo1Th$ZJMotM1CAVS9?4b9itg63a3O7r@rRBQO`(rbC2O z9g%eG79nwuNXWA&6^>lEkqOCY$B+i$7C0i&9)v&)qGGj42atTogrF3$kqHTri1Vr+ zos`B|#5tCu6Z%d3@5U#t zy;KxLA+Q`FLv(!7R(eisDg1lgR(t|O(xedEzpHKPeAQ1(N;j&@vz^CuV$#qxw9Sjp zYZJzfv<*aW04FBhL-Y`|4MKYZNabsj#&)rkwq2VrevTsLUSgV5>)p#AT}(>gbwEO+ z0TDGM)=5cYXr@#`V^Y$gqs2qylk4#?ojq_;(#bqBp`~1N?U^3}30`syL~AnfoNi*k z>to0HG(!wHd23)9Vi0YtHggKtRyz*!P@9e$$(DsUBj|?OQM>q2XWfusr;95zt%HaW z$-KECscd7KGHGu}I(8zU)Rn9LrlfSMjn^`kHzf_7Dn}w;mX5eNaoxKgP`mBOe7D-{ zBl0#!OQ%pm+!WnpE+KFUp$P>dbaT?EDFWj1=A>)4$|*sY!s)d+z5TBSO;6ypW6Pma zAfkqJ%JigByNpsarYBuwkfg4m>SrXSJ1p!5EN3JQoh!#8-ymV%PS~~SN9KptruFfa z0yrb-8rn}Wp+cw|AeC>Ap#pJpyM!uJwm~{`R_uEa%?93XAw$qz5SnRVFt@%3qBV=Y zFC=Ex0)J;xns4(=Oz({IOm;6fCvlAuVh*AZ=p$qV&PiIyChI7r@UA$|Kni13nP+#! zIVn4lyE`ddSoo+ab?=t;s2?p3ITc~TotwCjCqdW(!xAbGskupK*~Y|{p?6Q>!eS)| zTVSl}u)Qbg(bH@TGJbE}SXM<~G|n-;w{A>E?@P7@EK3702JErDPX~bnQLegqiEFaf z$mj)zgNhVlJ1^Oe?V<<~H&osIbzvDZz$n~+@%?q-R#o?pdW5a81;$LY!uB8aOjN4w z0h!U7(h9b~Fxd#Ag6#usla8G$r-mRJtL~xNUc33ziia3XR;Ll8hmuZ`+SIkG`UOep zQ5)LgdO_0AMl$JI$uN01t{xzUBXB{Yiwy+HgV5CjNacs)>H(yGAJ%1`U9Xjlg-7aQ zGPZ#a+mxo5UW3qi0u1Jjx)cEsd&Kq-SE>5PlF}0vv!vj$q(P22&Q&Dl$EEXS=I)#f9*U7{rX5izAZkiMmGla$r4Cc131JPP+ z>w1A0X6#kR0RAO;b|#P^c8?Nf@_lDO?RR{fJnX?fB!98?;yd@^a+CM2Ly z60j`h8H5{P@noWh6Bzu!=pq87_OiHH1M#yg_FAI^@l@hEhXjBS11_^pgFp)+YDof~ zic3GGXgwuM|9@2)oNJT>EU&fN)Bmklo=~7C8fZiywBbNRmdAzz5m_D^-n!~nB&8Ru z=UZdBB59Drn{%zD;m^qlO?nd8?wY2;B#Pzhm==j2eS8a_{JFV)<&)pxb9#Nx*Ay1b~Pc_^P>qzzsyTQb?DB zsr_0U0YLn`7Dqr^3F7s{4Gg^oLJattjQ|M5AoK_f4CZ|g4xpx61`zF4`XgX_yK-k zXDbL|hS1yqsr+Hg4Um{WjJc^+{l`gZqq-?v71NKCa8JQwpZNJCCI^Hc;Kzxs4G{Q& z(A)s2{7K9W5I>*9+*BnupNXw3Lm;$(pIB}n$V~yGO9wdEH|pdEBKBF*UKaDzb*TE! zlhP*3O$RJLPa5R0*0~N6^A|BUAp8J7PkM!$>~`2o0HNv z=BFd3o0Eo}gP)G#=c||-5PpE0lU;%z2>d{3Zh%z&D&_`=o3CPSI!bQ7<`h(f(xD*4fLm-Ogdk=J?N4AZZ`9ouh}I8!dP`mB zs=qQVjZV43kQ;{1m|mIMgJ@?7dPHjb7YIMVD^q=5fgolGO*D|oBU0PGfcP1a+8sk@ ziTSG3t{6aQ0Y{{I#n8D3s~3ze-xvgYTfTvaU6qDA2Io4<@;xf$j4TNNAqKoE)zuq< zz#!U&0Rcp7RN77-q=0CRO6@_aOVy7}OXKk$63_+Hv8m0%E|P$8sU6)w_yLYhbrwS4 z2SPgyNab;Ik zOV?V=U9p@HJFTn4d`;{$5PpCYtkWQH1EHM;r1CXsheDeK#?Lje*Sbp36I0uAK!^da zv0j5f3_`aYU@*5W2Z+|h)V7>%RX-^$)hy<2SWZeCPqFS#luo z1EGlqQhRbtG!Q?NCDF}6jKV3k!w>WWizz9*Cb(Oe6%aa;fnt`n+98Y)AR1HBo#j?E zb=|A}#&1PfNF3#67T_o;DPEq0~b{ zzBOhSM99GDHY6bM1EJXkQv24JT_ApLjl;NyL_8x-JrG*JTP@2FtUVCn{9QP3u&?Oc z10ps<=bodKc|4PJhj|P_3^>E)7X)Gu+GRkrW~R1l1JRn9+NRyJ>hDNP4_X3xVtGee za14`GttU^jvr`wY=>TM7cG^Z42N0(J8xm50GBA5e=H|rC1`!}|cB<VamIDxm7K5dEJ03vn3`PK~(xPg#vU;=}w-4dq*5I-%kAGVdeJ{+e52r*!b^#cTL zfzYiO7|iWT4~W*oaW-r#efmh84Ioz?=)n)$bbvt&LZ<@|u}9)`03!B?Oo!u1z;;!? zC@n3k9otM67o`nyIq%$d()Pu%?I6MhE=qfb6hqK<2pxhzJS>h)2jXFIZ2ETM{t5P? zFnK{}0T)}-A&3^DRi%#%L2$6I=rII{*b^z&X?;Urw0&u9-~hi{^U@Sv2g-J#$q@QD z4@6^Wibs`{CNE7ne)S6)peJi{2Kar8CsTM`bGAz}0)dDcGKQZ_?KYTFsg>Go@b*>z zbXt1e#?AIvKAkp%R{?H&$=x$CcOcped^*()8-mApwPv4hV!kGH9{*9Q8%4}sI21PkO= z#AysfZbh8NK;%}$X}rClRXU9e0F!!ET}al0RdF6uiqNV!kAa~o^H}C!Q`NtimR_@5 zHevZ<-0+(um#gEt3ZnVI7p?gaxPjPJ=Q^0$tK-57#LsG3SNEaco1`@_*N#2R?^nDW zBZWlb<+P114?r8`tlY0)GZTpPDx5N!r(@_;C^v^MRg+b|HN zwJF>1Ar)697~rclf4Cn|yjqu#w7r_z+c<2Hcs1>)$5o)zN#&xJwCzy!>(kN(OWO`u zu21ci-wu+tH{uWkkv8D^RM%q&+(78`Ex^=%BMw0ze%{a_n7SRS{>`-XuKC#!%QsVd zQMaS`c`J4g2tU9#(;Y+hAn*gBy#u83Td{Y5xOpq>S?G1bj*_o;Qn!6rCqRe+-?H@< z0x^gvCLQ%oT-GT??47u*?^N~grKOK7=AE#7FXm<^iTVAQ8<1S-fZwy^z~Bc$lLMso z`!P2_{JbBh=S~vyhcRXlF$3SX@d<$zgvJaE=C&09(fTkgY%kim>OW3PpIXp6WBPGS z^v)9WCo$0=`~W|;L_^>QLj3@#{7FnS5I>*j@q)oy^&8XD7IV`pskV0;W$ltF(o6h& zUVGt4zhCp`DZH*(&@7D*x;+8W|2(xI07-zfI88DMDt~wB|wzEOgrlN9f;DGY10njbp}lW zZcg3KCMD|>FiOdqzqu|Y6K-?bQE#xQ8tU$-_ZGb*imzfPfanC^<}^yn+e8T6KPXSQ zEcz;~=&>A(*jMq8*Gt;)bzIm%hylN{(GH>IF6D`Nb$rb2B@53t^}sw@ zz^~In7Y@o1gNb7DuIQVzF$U%l`=%Zk?~1;S+jXzBj2Q5nt$~%%f{0r3F6rCUE)6h8 z>s#5ahJhylN~ZJT1mAflMOYx=I<$_B)~i_fyVaCwoIuE_NHn~!ze z52;o9*n>U{8G_L{4W#yuaZUsA^J84^dUJV^mByK$-dK*v>{!%W z{EW=(q635<;D}6*MG&}w&}rB^e6Rtwn+}TcGcvQAj@~kCM`ij_&Vd+RKpmJsq()`7 z699v;?F2xSMrC0qaMWeCjOJ1%tehai0*=ZG-FsjVgV8ht5gVN~YBqp~jn2Z!M#Mm4 zGP{5QAqE_s>CqknEr_TkGiFR?1C!EF+wNbA-ZEvzW^NygOr{KQOr`^qV#FZyg#i$; zv02wW!dwL+Ha6S4U)b;ZRQ=UiX@d1jA1trV?9EXh>6h`D-SdEO1H8J(^biSy9~eC* z0jWJcYp*L45I^HHeY@-WNOu0t!(fORgcxvqrqcz2F$ z2gyngSkQejotW9Zc3%nl+RQGEK==Vp%(T-Wh#5kA2}tE@GkeSf;^*4TE{*z1%#-R` z5;O4NYcpLGDMt(@ib>Fu>S7Y~BoUKMpsx(4>uY-->-QUQeFh&jWE4SY60t(#`pnLn zKs2t;>`}3=pjuX2HPG*W7=U3=i(?yzP%X2EMIb`8%pMkjp{hMB_LUJdwbtV}f9@eu z>k2Y%re^k-hz$x;GkZ(~qA)e%c)5RQ4*fMPt9^f+?^pB<3+=RwVtrbK2*uW&K%}N+ zjrv>xL~2?+&A7cevwMiXsVua>Xnwy04a(8FIkS&DfLT>APhLL>ak0=&&uWV% z`Mrrt*4gP9#d;8hKno&j$vQhdvtdRlaZT4@COyV7duts3AhdwfZC!#u3nFUCGJ9)g zTQ8;AHi8-deL`H^g3PELa)RHrn32KjxbK^`LIfg;$P4!wS)&yPfmxZ`zWWYMhn`z|?*!ks88|c3gGk@B zLJvS}g#kVl{ zW41Iz<7v&!Ol`r5jGZ|dyq=)@rmfL{h#K-fcTQ#pB1+MilU4P*sJ>|%zBI|)&%%NN zqIZCEGJUHAL7O1<467axt-G?l4vi44yRsvWYOGuk8r7B?ncA?E{2vC)%_#VpnYBd( zLT{`3rt*4mZq_airnZR8&9>dXGE=^X>YKLX>yTQ{ll`m#_hl5sC8r&&f{3l+eIIb^ zIBAE-eOZ@om8B}up07Km{L(Kg{*l2)SMAY&h#K-P?;lyCUf=gk+oSQ1YzH|}$zz*; zC@U?n)p1uWAIj`&h+SoMoF9iYh@=4@%5=?!puG?>sJMLrQ+s|~(t-GyAD8r9WvOb( z+-{)EN}^@Uj*-64R~S(tUz(FjC+VHVDqsoTBk7iFa#e?fzWAIfT_JWW(0_z#W5qhOGcJtPCuFivC0DV@Bu_>NnBom!ML0D zArPe{*$(nybL#fsgO059ltsJ;mQQAUg;U7P-$O!P7Plo3Ap@VxG)4&gK|7G_o|2hoW&4+_BM_MZYG#0p?q{<$dcp$+;||)jK$M;ht8zhV_Nw}oS?L7}c`r;? zW_&UzUiOlZSINOg-b{fA8Mrc2B?$aL=qv(Kc~xfL6an$GDhuDGiWY^>XLi8`LhJb= z!yt-D&=}}_AO^v{m7a}&h&`W$BYW!h=7J?Fy<{=(jpgci`rTV%UX!`KLuNo^2B?_< zlH)a*-J|SXgpk){J#?F;7%ywGJ>`S?ln>eb+N|`Ndf}^FZbq^^>=t<{US7%clM+D` z0z>Qq*)3kl8s&p^KIfI1>oWT`4Wv-l1S!RMT^8QDiZSR_8w7$d28Ij^45i%m%b@PZ z-AY!v!s)X{KP=a0cDK?`;(H@L1AxdjaJ}se5ai*FY(bIM z9Qz@3umaKeEbE{T)j%{p%X;lnX$l&kf7i}E)9+aPJA>B?uzulE6ha3g5RHGwEdeOC z;-b<|&T5}$yycTY4I(wbf7>z(L7O1-Ndk!0=UEqBgMes#p6$}Rv2sQTh(Wul*6u9- zn_^Q&L7y<}`lWKa5214zh{&d_y&gk=h-``vM*ZZ(`lXBy4M@&wz)iN_QLN?q#12I3 z%M4?g`arb4WcV~zP7VQaUi+%H=`4TBfUhzNbSLVUmJxx7wdA1oRn}hD4@wdFD%-xP zaz`3OIH~>6GUm6wPg4AlQKAQmerW?L5PGlyqVhwwP3%c|68=Fq2^lmTuYSzj9@eZ@ zGz<7crWX+uqXiN3EGM-evo5hm<)rpww(IWUV_UZmkGrlk+J^c*n2vDvT6-TE>LZ;! zp@8rM9HHNwItctg=<*Gu@?h5g9McM- zxxh)beL>J%2+e8%ruO8RRv>;R$3EImf|$bV){r|8V!+APMG%NVs2DJqS9O>H(VF6H z8{JP@UE|HDX~~^Lt#BCVOr;z#45FC$uDPmiS(GAHbN1=rPk43iO4BR>Kf!XUvrhtk zA_=%D_BRMWz^N891a2V08dx|mwQq|34aCn)(%-V|?_c$|xYA7Xvp<%%ID4JHzxbIR z6Ai)-@D>{p5cq-6<^ZWYJ?0sRo9V8w$*{jP_O`m1BpNu~f~FWTh$tqBzO61MiM}m% z+WwO08L`tqXaR5AswD#rLWU{_WegCT;q1Z&h}aD6wbUI@^|M^*PD{W6Sk7_{`a1jo zNx&U3W)OaWvn)sm{6OfG08;smI3<9%xr6uo`fa;1AM;sdd~%h~sd2TH_u$Dsj|n||7<#_T6!4 z0P%CT4h@Gfh4)DFwW>r6)QBlW=^occw*+7??xZJkAWHYpc3p9QTJ`f>=|Kzmr;^+RDAo2?x=cJ>928EB4-R=j~mR#U>sr_+?-@brYXd~j_F!CUxnk41%IEX1l?QzX- z>iY8$yemCv!S=^;3BR_HbE)eu!9Ky4j$!cwkrdz(J*Y}CK||P_1XKG7*Qkd*Aby_U z^HLL|a4BE&nHc@(fluhKED)2~0--SjgSmas4Mc0H3qR3H-62)~lq;>Ym=D47slqkr zHO(Os^wWG~75sqk1ANM+2Lyf~)DMu_PdmFD0OIFqXLqQF$k=YTFYJd`p4l3^sKX& zj38MPz{~A?0K<5N(5?U?_N=pe6kw zO3_;3im=Ct7{<@VsSiR7xWaaF2rZ9da_)UD4oylCdoB*mW*z`tX+*A%FU?p!ABSeM z^zsYN9u`4|;s^Y^jZGN*K&T%ewO?@deg}x37aR|Zy&31tlIqp96&G?#x7xw$f(MNT zMAVSpU0v6Z-d!ykdjt)7_odoC7x}%KUvltKL-GL;HN@3Rakw>yUVTYMhp+8zO4Rv&#B7$|*%-y^M0XT5gu#du^!w>0*CC^9Bd6%ONxx5K%)O zRW>-go1+ws4UT)Aor4BXDsR^Qb+O;2`Ar9}k7>=}E*U~E6M$&E>00S?3lNPrWx0{B zb(-ZtcU_Nd!>69jDL29I)eiWhAK3h!gV$p`G#U_5LvDiKtB()4 z34YIY?-^ceH>cbLe^7hqkG{G20|y^RfZPN_L=CwK{-EA3aufW4>#85nHOo!#N40*J z`a=eM3hl@nF!LwnO1lXV;ZL6h3ub<4~4M;7?tz z-j$yQ1@3@1*2WF<2lwAtS7?vI#=3%B0dI6&^|03*u7EeXKD$;93JSb?_k>Izj9Hq{lXC~R_F z<6Nquu*voATiG>)(1Dl!wGW2--TQB@D|A3%vuhKFto(#wv+Jx6Xw7K{6gIn^dR2A^ z3LSYJUpw(Kzf<$q4n9WO5e*34Oqx^qdBWFmGXbLUwc}F$cR`~QZ_aD?U*^wi{?@@q zPn{SW5OHkC&jr4%kFQQ>d@JKizKCp2JM;N}?U#S@$MxS*Z%Jnqw#4H!HYjXy9b=50 zQP?8cJT@qF;i93o{!jk+0Y5nS-NWgzIqiZ5M4a{V`TGy9l^((z8|r``B{0UrZ~vj~V$ z4!k1Y)3myw1))DZp&YF%^R{v8=!VvnIg_6sw5D!A)nApD#@TK-0Mn~-dvQEKcEeG* zJ@JC@1H3BNM*;|%4WY>gQh8Kv&rU%6jLPkacYy3rqxq6M#0)}fG*4Wka-HQch+z=L zWLF%W+c||K_KP8lFibz}G-*Tm$^100>}G^ZFXh^QsL$K-ajpcJh!IXhdph94ks zY`vB8N*_2T*Da1>#2})WY?EW_t(0wYthSOb{Hy-zyi~Jf4#e{6oFlrNdIw4}$LDr{ z1mUI`e08pK2nIh8>IX>e@wpxPfcP1ov!%QZy#y+?(tYG)Usa+E4%D`wW)8@iR3KSM!ci3UA8YekLZv7&tZ8Yk!IngU}`bgZWN-g^3A7>!y64 zeZz=2R7UYMzKu35(lEe-Z_4*Ga~Z}Ex~yQ1*tEQr&SM~A({k<%4kw9+3c98C$$$AH zi(7Jd-GHIdfQTB>5x3;6bi7b1wPF$vbdN=RIF@(h4fe(4;S%!fm|hTmfOq72u!JCJ2)!);QhRo8_p?C!%$DrR zrIc^Me@ues}Gqzxg4>-8sB=#^K@4 z4??fXfoR;F+f_Lbjk{&yX+WU4xjQ0^ox^!jt9szwHvb?92tqd~AX;D=KfC|@C=N-S^K-jU22y2y-ceU8Ama0LKB|%T)JIC33u=2^>5n;WL0v(H z<$}6`gts8?sP{)yL1952zJyNQQC0tFURrM99fjqivJDJG{3r?UvD))j`osD^7R4cH z`(wFXHvy^gSZ>!%K*S%*xo-M(P@r&8?YI$s&~Fyi6(oC$>IxFxqPl{Fw@4Hu^+%=r zRRv)011oJSKEP1i=YVi*JxbQ4B{esaW9yQ-16hog#P(x@gC%)KeO3UXuq5Z{=$sHD zXld;~NBVR7FRd%cm|U8-(fM~&7?Vr$Ce0vF>PQCn4GJtU%WB=P@;@1{EQi;Dd{lTz z2BC8VNEFNB908)SOy8AVsxy@?T!e9)|%!VgMndi!H@t9 zbV&drwkEebM<8Nra_)$hN*5h1a9!<#(SF&P>v9Toa6lshq1zS^k#%{i*mxN$>*OFK z!^NqY3!<3QqhJ-2C#K%Z^gX|h@ZFOUUiHl{2f_l<-7wz4EUDq zRS>iVLi-08%?{5uQ)(r@q^T&j-@IhTm#=-|^wXWQ& z5z*Zr*G{|I&ujiTr$i4z$Ar@)L~ORK93SU)5lks6ALrc691~haiax6yIo|)G_$Kucp@LGhHim}^ zc|`kp)qjzfHrvSgIi_Fa_7>;oGIBP>WdejB;1@QJAczA(mkA)1H^o%~h@VYymH4@I z(w8|`Su$`yXno0W+hoHKhM+Ofpn<{OF35n0eW?jZ-7l*C>%8=>#rz8_zm75gLSp_V z_BRMWz^^T42x5i^W2bOnYJU?u9EhK9bnv9^*s9->m#*-7nR_gjTjCOWtoZpp<_3fx z;1*j#A@BpCxdBr7`8whd(p}7GDb9;ORBE}yj zmA_|_y5p*TgfES@n2*D9gtr$)$4Sg1y*(3v_=^@EJi_Y}1q?w$=)?k2d!)BhD-b^; zy`5T*lbA<&d*%kA1sv&hN}nND-3e7c!Ivgm%qL(u!8hoiK0HBUz9uFbgd5-luTLQm#0*hrqQTU@CMFt) zpKD^GPmrLm_4aHJLJW9~B^rX5A@oZcU@*5|a|6-3*4ruh1X)q9lVr&(JfR31EcjZl zj|r3`1`)-?_jR7-S{7_d5xdTZzcb>1phw-Er$cquw5 zj(`)Zeu^(mvuvJ-=@j3f&vYkBHfyohK==Vp@w0X7DoV(C~I*9oG1;t zF($JBA_lJ62!J4H2u%Pm*jqM%h}{^od7@-{6(9o zF`Fk!HgBr8QnCr0YT2Y1F$m2j5V4!Q4NYLEZ5I|NRsAi#G|Q5C5|+1kE-d7en3E)# zw=y)l_h~w;mQCVX1aynn`wB|&0-;`j)V~%t`EbRMx>KtD0bhE^ zyqtpN1K$3C;3?weL2oa;KzISF7a(39^!6YRr0Rp-zK;gtZ5 zoQi3Sx4VZ^#mj;?-9Ypqu*K_*F$8`fbWs6Pc|lxMfcRM;i^`wL%c+vjN4@La{SVyXOY~(_(Qw7R!v7rI|bk3a4C`GJbb$_sqT7CMSa zFNAJ9z+i5F)&Ypt(_X(i&x?$&Fns9+4LX+r@T||nUq{R{33`R+c8Tp@5QV_-tR#?O zy29Hx-kHSoT-{cD0;8>b5B^-;7PL}r3lWyO;Bdn!FcfbUCfrqZVTlkJh2>AauBr>u zchA>tWe@_Rt^CQ?=hZfKr&axGUs_jKZ=HteYHy!5o+b@n6ITZi2?nmVMHzz5g3#3g zNaZzgbpR6ant0?mO&a%7+?7CR0oT}xqky5eV01bIgS~A_K*U~(M~>4ZH7|Snya|LD z@FhEPK%fPoJr6|dWzX}qoZokM0z_kj%|&-c z)xYIS|6}bw1IxGKnd1y;_uH|rK!gf>%l0b>LWPjN;;|Y`?YCoR0rB&8?5r~+hX8hH);r$5#5zOT{chZ@LGrC5SeH*Q&41V1-8c}bcfH;0 z0+D)G_G?)_e_i$O`_jLx`M<{U{Wu|iEzSQRb~}iOf$v*SK@c%S==Q>asr^ChcOZT~ zi2eR+3F1R<@6kXEU7$t`B;pU_f)5PF9rUplh|-5%{=@;D{%dLcM{%bH5!Oe(z(Aj< zVGzSW=Qa?rkK$GhMC_w@^7>8Hf8tC3w&wo^%TK)B;r&LM|7q-f5PpE4ScgH-d(FAF_4JAjJ*#G#@72ll)j9;KS&zC+1ux# zAi@HESy=DGAO@qE1R}QC+qEDNvCZE8g#RExU&WyWLJYXs>l=Isv>>9EEXH5Okwj^z zt!Mbcoyi}L@TDIumuF)7t#6PIik&-Ca`{~xN+A3Izx8@Q4?!*=bSMF-{9PPLK>U0c zN79+npe=H?l#v8N3s`(-LkWhUVKiu9uy53>bs%C}yd5vklx%+Q?P?i>7;uYSnn0ih z5w*nk_r6izI#G(&_ddMB^+Oz%K%{<%!x9+k+M;w;)n8dI zT~*dQz_YNtvTXNhXGtnYlc7aj;=hS25%gSkD!0nr*+j{X1Jsvli0{oR88EvBQ(cAxfJ33^P~?$bc{ z0gf)~F&l!IA+-O2R31~d`!pba#*}&R>A_g~t;9U8>^gOC!+-np``-`wbJMUP=MSy5 zpXFN*fFD!Vdo}C`9zu72V5nEovn~+Pab+gL47p_gtqg?mwcpJ0w-@8f6zB|qCNc=! zm4JwhFWYVmL}Yw9Ty&-GY%bi&rJF1PXJdIy*`8w0mIO?c2FjoXkpSQ|W!=^xh!sK- z%}xrY_QbONtz95~CYJ3E>}(0*+OnO;K!^b+mNk74h(Tzt0fV`HZ4N~1+OnO;&X#sx zSGI2#K=L~+@U>+oKjCekAbzaeV%=`JO=s#JY{S8AkU@e)*>N#xnoAgKF_j@6@v0CZC;F&;s6A)(1@pv>;Tg03$ZF-b(qncWSwF z_#aNB>uxTW?$TM7ORwKtw*QsK$t=62tnbzM&zoct0fVeShWah#@RMH$q;PuK{$~-8 zLT*a=g@Tk~JiToHwFv(Y6nBtiUCJqxy1;UHLWwRklX9JjKNv;#uYNgz_E4m--XO7Z*3i8><-&q2ua2eFzj&xvAv_*PJi0%WC+bJ z>(3)7lpz8PCwhU{&MxbT9>@^6vn=nfHUBaMz_E4m--X;+=5LB-iIc=RGNR^5=42*= z5Ch&<*7FhsVi3CE0}-27w!bq6L~NdBHg&(_*0WrC$P(~7EFUP_yVl=H0v?RpG6**h zmig6KSwC8U!4C%N2T1J)WWpeZK@=0;3(NND2c?KDjEO$4>KBzuODqBBVY#Sme**tJNxX(*FPn(~?ST2oz28*93W1>O$0WLK^ z5cq-6L<6b(WXv-VH&2%1uT}?3W1otvHV84`la^=*as#2c0S0rsLINW8R6H8}zUr5k zODinq-($JFY=5@@_Y(87F*hK2K@47QI}Hp$L+Bs`Qv2DM8z6q3jk!6WKfzHhJ#T)_ z$8u%N&H3VIRm=?tH^7ya8wlJ$Y*WZ$?7-As6_W$R&ng{+sk@-+Uo4kiHa{0&`C@F( z1>$FQY!3)Oz!$AK5cq-6<^ZX@IyMI=FX&cldz`yK`rxJ52Oz|Nt8ImXpbsFl4}ihk z`T$7GFU39>QuVKtORrkYL$G|MY~N-Lk(k$6ZVCs)5BQa`UO7V$G=vTuAhp-U+yL>j zF6QPBT#l9b4@LFi_InW{aXGf&5v*2a^R5s=e=6? zS>zXVY}vO%e)M)NgPzOUw{Lm1C4Xp}me%*=D=XP!mse_M_e(lIFn-hCXSd8aD1W3| LOV989lH>j_Q4YM` delta 29567 zcmYkFd7xFrvF_KevML|Ub6@wz`K|lmS6cv;>$LTs<2cn1*qGH~!x~kdt&#$`rtLp0NarHi@al?+U zPT%qF-+z`rcuBP}YL)NR{+mnvKIgRm=U>tnJGMXdvTwHHG=wBPXG zeo5cisZM5#14{m+szN}iQ6-n}RrE%{0u1Djwx83se7wt3OadSJA)oSLF zn!7OhUum^k&0Uh#@(WuARa>jhC0SC-f8}s1gmf3RK!LGuTCRk|auxj!cVSAERU`lEG6E405gF~J?1?l#1zC>)oP znq7h}&U)b3G;-svly|Vo_zNUGWzZJlFp&Jj<07f~OVi{s^|%nL<)vxSS?m-t*xiKG zb(M;OCdAqP!WoSjTimH<%t(=IcUD4IAc!2& z6*JOS?I=p&n349D+{j!@&Cg7eo6Xr4G-swQy{gAS-y+W5*f{1(cS3n%io8!~En-|m zp!7g0-56a2LVu&UCuDfdH__9j_{zxlx1`BJ z8&;xvOB_|QI=MNiYZVs@5QRV=A^A2Z?I4RN6Nvb9YaCT!oe>zT%BZ?EjzC#y+}yNu zeT_-#&XxA49W4&A6k^<+m%0!qLFfXzn{E!(ytJ1rQ=&_v-IhA$rr@w76fjnG=-!s@ z(BE`RB7S>QS>`}sR4!1yy{Sw@??|^hEHeQxI_%NCLpxubsMOs2)D1ExBv*l9BO-<9 z&QAvntadDe$1OE?XOmcR1sI82P`LEAJ+mtWGORcc(oiw3+Kr^NZ5teoJXFy(n$z zB$0F-Bu(y(a|MWW1TIQ-YC%Bo5a?V1r1HISt^m@%_v$3?T-iZ#;l3uBZ zYY23l0E2p~PCP)!?z0ucRcn56nmlMeO9&RHEwY7it|~r1Ae}FhHwZJp#idPfNN^g7 zPDVg#KakdRv;wj7fMo~ODO{Smo<=4<10P639!fDjBT%1#LEUC?AY4mr7BA5z?8_uy z)H9jJflF-~rx-E>kxXnaOIhRTXsHa@veXv&)|!7PO;)GApLktN5Z8#8;)v@6~NLI&&cdYp}Y4U{id`C3b zq%E?ya;~E^{Lz$Mn8X)^ufR1HUj%eK0?8;gSYT>DnsyI!l|bw~nz9*FG78tmp6?hM z4tzA#T{HrGMxZ_egSz!R5U#ax{q893emr&k%`rN@^x(DIJ(C3-fsP~8A$vUStcxiS zvd7bYayH3ariKk<>f*=E~x70@f83Nt00E2or?NT6IPiv<+ED?YWO~*1<);##>R1a~KLxw=d zBoML?{FzE@l7-pMlSs83dR?P^*?QrohyG zE@l7_JI}=o=qye=pSn?@*FcZ~pR)`=02u<^@B)K++d*Nt0^xc-t&a?y)}`iON|Tq( z=Pn#D+)HVTW?C0<`X4bkAnX8NN(Tle1lU2Ku>oS|A2BvS?EE9frfbc=nkH|UovvuU znzqOR!nv+u=Cv4`5{Mn}t7%xyq#Qd4bixHv`?VMwAa-7hvFR$Y`7btRAvPemfUj9> z5HLCrw1g%AgL((umI3opio>QSbKPqGtu%SZobHC|Te7DTr@M*MZ^zhxumgO{_Ere+ z8G*(INaeR@<%Z?B^Wy&#o+X)`ORtanc3-q z>gKd%*I=iI*!d*J2812p=5)7U2LW~vXl#H~{v^f*h?!4fYS0smEtrK z4Gs#_-V%cY#LgCtjdMN4>8-LmlMV$z2HavZAp(3xp#2F9>aDuk0^!=KySL2ss`+oy zWK6~#f}GBKq54gnzI%z&+hU+W*a3cH(>DTqMxcQPQh8epG!Q%6VxW78&;N?EHwZ4^ zHj8sFE?6K#qSH4DLEoltAY}iF(|0eKzDH;5ktF~i$bkQ{X%zun2s(#^0Kzpo>!JrJ zAY7v}J3#g3njlLiU_S()H>%?@8-=|k0OK>;x`D6*9GB@RM1UOx+G#*4kI!u92E@+z zOb-FBw>WWWW}7V#T)^>}?%YZwkRj0k0E4~-00`NoneDdv)cj>xGRb`IgXU$KT^95a zpD)jB(*eQ`@Ulz~mk2O}Ksyac<;yd)H$ytkRA)MB-@BN-@aS%;lMyMb^_&32Vr&&>6!`KzrwNrpNg9llV3=r!ypo zLnTn}zkpCRvQFAHz@Xeumq#E>jcga06iKU^pOGaun#Vh!IU{Q+_5NrFarycfT@Wq< zXIM%gzzzb9E|A*S$LIpFbA3$X9mM0Aap-~I0$y)XM!?*IAndEr-H^?yQK3Q!WWzeH|M>}(JY0%vDB|05uB2y`$3;hGcsx<8XT z9?prK-Cx|F8@mAn8E}qe4g$y!Xg2_Zy3Hm)xaP)g=r56*7iSX?T)?^34G7?xw}-S@ zhBX+nd0AK84Fe&YC$q^xp_QQ98_T;E2Oid6?%&+)F$aMV-JW%d73EIk_N=##8cL<6 zjGA);4^{8X8l845&T3rLvG61AZ1QlyNm(a7)%FkHDelbr>XHqF=gzEcSoH^ihi+fc zxTj-re7PV)zPmM|fCE8{wp^nu$hzyq);}xYSdi@~yGw#x^9!@&eoKcP(Oeiu@Q%`{ z_r!hx5j)^Q>jwmwK_LCW2nJL8o;V(W*tsWm#Euf!d*gTjK?c0XIsyT0L7;0fFsR#I z9uTg3<8atfI`zId96+u%%7gE<@qh#}1Uepoklh!@0}!(NWIUWe00z|jk}O%#IJh%W zT#~iOUA%Jxr0q*%+d;SsT$1$nBM2gg9a!@ZXUXH1Hv`dp zIBN+v|8AhfZdHsOi1q>>&UD2_K*6J`W0SxN3O(K~O*2Zy6DMV}II0lBQjAI#tgKGZCEP2jiIS9=s zV!19(tRR{XeA1ea05b@N=~xF-dtIDaf!J9m6YIY8`ygq}(~W~`#s1~f(Nly_Je_sY z=>aH8*$zWO<^W-MIvcio7#4#hf*ayG45H0I4IU7t4YAEYm^Ng6bsYx6v_aP4gR8EB zGr(sXTWZC~^4TVZgzedkk8YB;=s@vo)t<(XG+)l_yWGxV z=atw!AnX8N&UOy|Bft&V$X<)n`Ytv9MwYx|KJS9&8!yf%#iDxg_x-kfi6!#_&?0-%OMc{4`q5C5jZH^)Yz|AQ7<=T$aQ)h9Oiihkwap! zDYGSxQaConC2p_`w2#TXkVhZ}8c+us5N|$?qXY=k$5{{Ezyo3WI2*K6_?|(NfSWV7 zt5L~31&mZO=WlLO$$;CO_0TIUs)o8d>&3-j@#2%%2_QNFxH*f|^6?OXt{;@A+!lS3 zRdrtuhU}BL%Ns0h_%u%JAjp89Shge3@)#}I#C)3Br8=c>eX7Si={0))v!-JnF5stG zsS^j~kRgd=^0DZ%tTj63A^WW97$1v1kIVJotO6PEv+a&m;6f0&p%FOarm=Rh;jJaC?y@<8wXe4?%NV+!hTHJKx4Y zgRleKX4@hJm_eY!a0nZFYJVHYA;sAFHU@f#r0wWjzsflf*#*?Z1VS}Bx0L`Glx-yd z!ZbP$D}kdfqh$=YGGXQf;TCXoUh3L|1TrKVW*}r^@>Y!o5VA3O*x3jfXl!m55Fp5a zV{+ZvBY+D*K88YK?x3767Lk2iD*M6ZGG6ed?00`N*yw9Ft ztO6k$m+vz?tan3e{?a_T%=%?0nwRGG>1e3*%Y@u6dO(-~URvh5kRrhj65S>NsXZa@ zsxuQ1I}>vKyz7QabpFa|F!&6D3^*az;evpiMW6uy2K82L0uZjh=K9g2bZuOOksIN(qKX)rD3HV~p|xg8dP5KYVNum}uQ?XcJ;88p4oamV7kgQqtcByXnY zc1%PEhUvK-6M-;H&)Hrc5Sl}OHS)$sKQD%tZDFEqB$XoSX0feg2 z3^Qi0&FvzhEt82B*w`K+nP(AbYETZ>wYk0O0OmEpoV>mh{9>Y=kvHx>uh^$CYe3=4 z89Al84{gh2nne()WSX6kTb5CZTQfAvq{EnHuaD^u!Y$y8Tu*BV;6f0&WR|@?x0RPt zxUMJrTdPBZTik-oZ0t3#7*@{ADbTcU%Q`@UAd<)j_nCRC4rEFpnVAoemyWq>gJM?B z6{Rc!ZE}$^EAM1!6E0HzCnVVd+&dWOk-$y48`y8BL5G~zcwu1CRtL_?bsy4}Rp|f( z+aXTely{3RR&nB{y#Ije?tzOp1hX6ULB*c+**S7u)Z4OF8iF7;L_R{#ZZ@P9j@i-> z^`|2@GmYB^kvem7iXu3PiH4~Y=2Tl2$@Y^`1x8r7K_na24$6~7)iFQ?!rQ|k-~0==zj z%jEOoyu3?Hrp}Pe%Xb`Dy+vL>wPjs+9n$Eub8+j)J8}x*jMIfyA&9NwdmnIno^*la zj=Xo@>MAAa%Il8C=ADa2%D?3lL|a`UK@dsgW8UBLR=o*s%eq4Hw|pnrQOU8*-<>Cm zY<3)m=H0nHhZrWa$Y@b&pIZ;`8n`e_x&~HlKG#^S;h`OONVN1a^0Ey1nu6 zuEjBBdz`Eg!rq>D(iH+oo%XzsrXvvc_B`w{Gq*?0FUgY!jeQR^m*n`X0^P!w)IHe5zJ;mh}aajW4GVq~XeMEpA1iC5#sl6huNWW7!vFtP_sa4uZ}Ah5Id`7@6;@m5q;lngZc6@UdK(5MT#^jv^qH*XH)92#B4vd3c5@TogW@+XWj4uE)z9g-9k& zqoDVJCiShc} z?oswBgUjpl9dwzc7%S`Zz4n%*;U$~jkSEWn6<*bHGm;l!xhOKR^7mZdln9~_7SliTAokV2gkq!i_6^6=SJltIs05(q*W7$Ph%lycoKNj;pql|1>{ zqA(oI7jnB>87}_4nA?Xl5YYy{U`qo6;_za=haCdI)P6Cy4?95O@M6xD)Ki{37%pDC z*S>dKabjM7FQ-HY8FFY4=!6awy*Qx*VR}IMG}jo@6#QYk_DSQNy^51Zev(t53(@eb0ttdxOEzksBnJ zJp{#YA&6m?o!VD<@7STTQ~N3(wnrH22*>yv(X8}&UnY@ zTq1j%{lx3b@Vejp#$L{Sr%~=(jIARWj{!*%6v$EpIy``(f}I|K&|M~O%Ryv6nPMh3 zM($U9x17kcKVy)Kpoz{7`slzg(e=}+!0Um89o z1{g%cfs<_=LqNk3XnadBwWq`Y1F1)wyoM-(AOlXJ`=r$fAVZ*Jz@T2! zgag7g)!BNwzqEQ9-$;#1E+?jy4h0>vltYF>Boo`yTus+5N+Fx(>=EI2_=xV3h6Ug| zXij(bIN&=HfNNsUgRldfZayQx41zEjmJUqqYhup>v2%^|yv+Xx)ckcWnPqkkK=V3h zANCIrJ2PUSLD&IaXBmM2I|#HnKq}9OaRy>$hAZvdetKhW2b@O0^YElOA-x%q$)dR6d;@F?B)gt*-Y)V%pJ)4eV5!~0XPuN zn_P>27(Y+~aC7t-gdN~b<|G2_AkZNJr1H(qh6E5ZH}l0`pGh1jPR!;CGb9#>6$Geb z0|?dZI5vPm*~SJCs@ZXDe3w&|OKvxhzl-Lr&R!~hS3I5@Qv)Pd{@`2r)*$(egfJt} zg%U{ZxiK|>*qN)T;ZUaVHfg?A6_0`HF@-SQ<~r%(01V1Kb&C#!={DM~bMNU?LrjPHrdcg7%t2r_WK)Aa%Yb`WS{0I7UuObj4)?u;@1o_M@~o4w#Mh`Cp= zx(tSDfwPSpFlg_fy96Lq3mm%y85iH@5ayCa=JEH@TMhPJ82T-z|=-w>#uI>mVjq z5NO%~snqUT^+*SVzTL55Iy!Jr_(0>p?-j?E4>;tS2M2|GLl8M66c5DIr4)__G^&{! z!6SH=JY+78Kyw+tvLQ;&jSv?ft{QjDtzY$SrI{h({ry&e!d5AwX! z$S7RSYd#~BDFXPQ{>lO}86ybPXJAmb2i-upmb>tStjrx;^DABQnE8A#nk!4!qSrJB zi_;JD$ST+YVF$R<1_c7_AW%C%YCr7kasY^(hn-!a9xNHRs>vlj10U93t2m0`LI9UM z=mrPA&8F2c6W`lD?Cc! zTI0&FvI!Z=kH!HHf(*FE)^7w_9?4|i`)Eu}N+EkRre>Yz{die=w zXGPE<*a1Ioxrqcj2-FUc+D|z9yaU9}6OOau5c0e(pD3L5D-SOA zt8Z|q>3tw#I1oe*>C6qW11ObRva^tzzPfbgGmW%f46i@qkn08>F&qdYhjijIu2pA$ zO5u3M@vTw)K=--EMRojm&LP)1v>y5nLFACWd(O4$q(dnj&p9rDnW`s?vfGcT>=n}mt6-vw*cXIS*9C#tW%eR z%Bzi0qj;?Isza_fo`~@SLG(ioD6cmARt_kyI_?=q1`ck7UvJz#syL+nx z^$%aQ>lrt}Z#Cu~Qq+%n%OQ^$AUDAXB8S`rzt!v)xe0#D_0b1(b-4+Chnb8AI6t`H zlE&SK6#E<|*TKl%vh6TB5F&_#avl6mGdP_fd`E(#Ny}~UyRPvxm-UC&v(8Yx>nM&f zl1pI(v2)~7_+4kW<)}mTuH&|RpAcv6gx_y;JgnGv#QSk?P|v!+@V>LFOCSvIyFM|m zcB#t}twDGRSrCM%PF8d-ZS~ywMFER{efp=*A5| zWAkCfh!Gz)8M?vnVUt0AXz`)zqnESwtQ$Uj=-PGq)*a6kEzWmxC?kqv1 zIq+-yVuAoJ1o}f1AY9+L&T%2>3)eR?74Y-c%#E!1f4O9Qq4ymlQT>;*ugD{1Z5&1b}f`bHm0y$%Sbudjpcc+k;x7SIHu5XPBB~vBA3`6Ti8Z}Qn;2?+-8^ew*hK`(AAlE5qR0tk|$RVaC7Off$O5vDTaDR8BTnLR4 zIHfW5*y85;l!5|1jv>Yo1d&97Hl?s#0;N)`V3#11_9)qDOl@5B1HLIvEs*PMiWm+A zkwbPGQww{fLn$0n3%j2os|!7nB4D&2 zkRXweU}{erdJ-vB6v41qQQ7}R&!JIoV6xUMPo z-7jRsA(F)n9!eV*VHoMb*A)Akx}-4zomNnXtWk8(aSVj4QE+c?7(qNl&~=U1jw_BR zuPc!2a*P-b1d&5J;<}=P<_o1#D+cjU?pliEMhoJhXx>oR7o|fbh%*b<7CZydWk5YK z18Mcl!dAr+Ox>A&%q)fs4b47OnlY=eOK1=w1kNlXx8yJa?RLt8x_wFp!ZoX~ zUydDC^EVgCZRYV|Xx?13*z?K5#O2vByddlVZ!UD3i2$b&=#2r8+OrG0U4oJVsN;SLYEa~S8gng`Cc@rMA15aoaKcLs#)=b*Lq{x*b7;81}74%Dl9!@%c&YTbDHr$YiuEwjUh~EGv5G$pHw%vVybHxxq!y z^2Tp|T%0#zd6PkMa(U57$KR15Czlt4G=e~>BN5y$FfhTaXtbVOd}ri}0=Xvgk>QIO z0v#hjyjT&(2oR1HGDgP9;&i0AysA;2T>R%5s|pIVyAg{#CM^(>RfWwkKuA`_8RjUi zFp6ZYb>&fLt||CrEkBq$O1ko~#@VOvgSp3ID-lBeSd0^pDvuRC^t1?s{IMeZ?WN2e z%~eB@ykz7@qxnQ(kKv9M@+bNAM;PEB1|IN zqouRf74~yP5M;n73++7wkRj0BCNQYm&k=!ett-OM5rvEFSYOzU5eTmJ^#X-aA-Rwc z02Fje07ACDuzN=!Wa|rVj8;h(9WC&g#!IIbkDUEXL4hU*Vn`6^vIT_XnW95%yyVI= zvXPN=rj&GkrWkxcNN0hec(?CV{~Sz^O3ydGKCLM0&ll(&Xtm_yD*`|@Y;xv)KF<5YckEseg^~@ z@D*FD5YQF`+CRXcZu?9iT(8NLEujSx+SiJ{!$N2U%F*t%qF-C}8tK1dBpcpr3_i2C zwtTaoKqq&^c#J>;1H{OiO^2n|-)uSzdaK!bS<8TLZg*Jb4Fo#oj|sW(R+CF|;Vrm2 zRu`y8boaZBqkmG|U4OTrL^ndmgxw^9*ld|O-Yx7}m{M5YEx4ySCbWtWeb6}Itl|gd z2XSN{6Q+$1;>ZTV@IjmbfiQd^2_tLWG1C5x@lXMxO~4NLwa2s^-!Y#brL4+J_*0I9qw&JsZEY>KnQ zvC>H&7hG&f;(*}#m~`7@X@~@;QBbFWLEo;+fRKHx0m$4BYW~wA`P_W|0h*sipMM}e ze-`^2gdO0g<}(6(Mi6qRbYNozFCRGIw0fZz+gF>LuF<6rXYS0MQ1jz_GQpfa0o8GyzsV@ceu6kX z-rHIQ!VYkp*I5z)J|oaT1F1aT+foI@&UkNeK0$oGw8>S9)8O%5CuYiV8i6_u4ElB| z1VVPHl4b6PHGi2;rkKw^MDsG=qJQ@AhvM_)-VR?N%m6R*dI~{+&j?BlG??0#dpjNg zv2(e%h{}iAY7BY?UH{eGwKx*EE$DAEW-i| zp5*nIKsjUxBAM8}!ZTgVgiR@ASNQN(M;s6|Ic5L|$ADLO?Fs~NA<$p~;hO9%1AsXn zMkmJ%_)*PI^-05``6E=P`W8LY{YauYE%q7+JHV-aSnvt~(L|tTfmEIrGXRK}(_#kv zNE&o?3}y+03_Q&;00B-T&;S5~zC{xV+0`+cKayxpkI@9d1-#mVi2yDHkxOh(kHMr= z{=Uuh7|kC^G_Ps4Qlbf*ZqcL|G6Wh;AY|8gOHE*?Z5I|N*8FuoxygcgBAVBEE-d6( z%!v}r>q*UiLkAt&_)K2ugRb*>UqLBW5U3R(b+7mKoB)WG>tkY`DDAl+_CE-Zf!AAN zB7h4)?qYodz@;z<(3d5v8zDE_0I=aK6rF=85yAaaP!dEV|)DTQO64|l1V`!VNr zpWJEf{xO<&Nbbl~{9|eNeDCz617b4-)FU^hDGIw&# zFYw9TX60lw7kK+~f+vfWyS#k@17QWIR)AQ!%iBR7NY%T%J(dPy#t5*3KqnO-l^4ZH1&EzRGO7HLxSS&Kyx+Sa z{eC^@;tMYr^qULLJ-^ZGm&I>Ngz7gc@ZIn25DpAg><|uw?|vWNeFz`j*zWCW9E5Mc z`@NoK5zw6ov^#-twa4xR!qpzSlfN(t8E~<;%QX<;1V*=H`@7iNE%tV|1`KuW zZtWEOa1VI9_5mr3OmgCRAa)F;Fb#OX_l-Ww9{2&z3H-p|6fIcVm~~e;O89DGQ z^_^lD$R2p9@2?B}DPa%1)Z1ScK1KGx%em) zm~W>_zOD59NJz#xh&~0b@THCqB-lZsCq^K(SNd-HFb{~Gm2sjwReJnk&uh3V%%NZBo+^Wky!o! z?Aj(VefM}%SCSAIb>$DhKCZf%JFVu|`Q(|>dh0Y)*Li#1c$zePeViRY1Q@u^CS?S4 z76P3efK*-|X9pl2ua8@f)1+}v#Z?Ie7jV7pI7%e+77`uKz@Tr-5)iVd;+Eqy3C+{q z9y@^`13qP24g_!^(4Ggv^|a@FE&DehTu*y@>vWo+4P~>HvR-cRDCln$D5sSOVk;%` z8=9?@$zemYl|=sUO~>SU4se6D^0aV5Mi3p7p82~t7XHQ}#gP47J}{P_7{l$3%;}Nm4J}FAU*T%OlhY}&%D&Q{@;p=%a=TI-BBZ^M-b>`6A+G$7(ROUyYpw#Lla+ zv(6AFUh{U%27(Ous&y6u$Pj3|fkC~qZpnafz2@y*))~_7*W+>xlJ|~aoj$=d|8;M7 z<3Olh_ja=jgz9x!uVwl?v*zFQ$$wk(&qVXhI3UlI=D!uY9fZfgH?5}-;4y;G?WF@# z`>ojTKmFjO03?*pOQ7<(TG)yCNSXK@kblTWSrXQBC#Z;^G?xwEACn_};S z@EG`!ZHN%id;~h^&niRnH^ttk7(1I{@1G@3d>nfpgv&tn7>LIo$KD49W$S$)OdrSI zKT8_F+1q1L5N-iKF0J>GK!!vk350C3w`)NlWShPH`Tny6eG*d%1Q~F%*Dv@8;6f0& zWHSCFW)h{Lw(j9ecQ$`T!Y5x@EYC*ubKfG5ik&-KV);c(B@lLipL@NZM?fqQXet4z z{6)+pAa=fpnRK=^Xp8JEC6hpK0n0Bem5|^x5_K9F^jr069SGSLZ`;eWC7NG)yIKZ8 z2HawoCJ5j{5V^$mm%dfMI#CMOmp**L5=18hwUdERZH;LOglcO{OJJyL zlhRLX{u`hC%R>26G{5n7pY~G;<+hlXAUpR36Q)$n) zvHwAk0k_!b1;GwJsUjpP1M%qb^SDA0sQj3Wqi5duOop<;_K5RwU%aIclQ zbGTotB-dDb&q4F@iXB?dk@ilM_DGI`XfN>cimu`a@D+i?m4y>b?THopL%TriOsv?I z*E!637K#&0^Ry0}&AVZ*?1Pto-)Eo%cq>637&XIOsQL(2AAo-CNcv3~TUq~QB z5Xr>$6&3rENGW7jRCJS!+n~u6J2HZB40y%%R!YVrh+LBKlPi`zsE68pOZ`#qIWmh+ zso0$a2r}U0iXO}mK!zZa$zEm12Rx5Dj8=ds1O{4xr22K0@N-`Wq;N*X{x=9nAs3_kJV8oPo>8&?E8=97 zTwl?dn?k7ztb`LOFqHCVFla2Lczc7*7=q9RhMl)SbZ@BGkC~n1_)Hmna^K1n{LKKnc$_b?QZ58`K0;HpFtJnvUb0sJ4sMrso zL68A&tLT;;0bB@l#sLO(`yn(Ct~)B>T8WLrxsp-yC2}&7L68COsOa_x0b~et!UsY& zzhZx54hY$Njcn$A&Lw9hx!VHpb2JxJ?9=McB>;EDRTzYsyDI!ptfFrekYEP|wF9K~ zU2z!(V&^VdhUMIJ9@m_eWU<*f56ycjE&8eWJh8JV1{#DN;5`-Hf+4^R0*!MCruL#3 zXdreL#Xz4YjlC~UnIOo3i!9Ix7$yjGG64p4n=yfK-4|!f^CZsgG0q^k+8KZM*_4R{ zG87`2*lw@bOAksRYmb3Gzvh=zl4TZv^U+*VvA=(Rz64-t3^WKkz$F!Zkcxl+AP8|T z9hllnW1xZ9SsDX>$7n0u3~f$`8dj12OYZ zCH_$L0%`2ZIBSC-13qMdMnG&3Xl#H%-ENG4kgbecqhHkg>PoW4eEtQRt1I?5`+p%m zKN4dDlJCLb)wa?g!D$4Vgg|OP5@Q3z&Lc54zvRzvRFcQd&M(n?EXL-SVrOlP4G1&9 z$1FAoFoU35DU-1SQ+sU;4iGzQH3>6!Va-2T;om{(*7ia)pN#FfQ0%OW?Ezs2_@p%l z0d^2*bAVJ{7n=jjPZAskm2($LA3PQN00bFuoy|}P=mP}W2f(0ieE`Jgr|5(BN5>TZ Z(Ybx)Zhmo(_SxTe`?lS8YGvi|{~xn80tWy9 diff --git a/src/protos/mod.rs b/src/protos/mod.rs index 36a59ff1..21d6b152 100644 --- a/src/protos/mod.rs +++ b/src/protos/mod.rs @@ -1,96 +1,96 @@ pub -mod configpb; -pub mod deadlock; pub -mod debugpb; -pub -mod diagnosticspb; +mod raft_serverpb; pub -mod disk_usage; +mod resource_manager; pub -mod enginepb; +mod recoverdatapb; pub -mod import_kvpb; +mod kvrpcpb; pub -mod resource_usage_agent; +mod recoverdatapb_grpc; pub mod tracepb; pub -mod encryptionpb; +mod configpb; pub -mod gcpb; +mod resource_usage_agent; pub -mod replication_modepb; +mod diagnosticspb_grpc; pub -mod autoid; +mod raft_cmdpb; pub -mod cdcpb; +mod brpb_grpc; pub -mod coprocessor; +mod resource_usage_agent_grpc; pub -mod logbackuppb; +mod enginepb_grpc; pub -mod recoverdatapb; +mod gcpb; pub -mod errorpb; +mod debugpb; pub -mod keyspacepb; +mod cdcpb; pub -mod metapb; +mod configpb_grpc; pub -mod brpb; +mod coprocessor; pub -mod import_sstpb; +mod resource_manager_grpc; pub -mod kvrpcpb; +mod encryptionpb; pub -mod mpp; +mod replication_modepb; pub -mod pdpb; +mod logbackuppb; pub -mod raft_cmdpb; +mod autoid; pub -mod raft_serverpb; +mod pdpb_grpc; pub -mod resource_manager; +mod diagnosticspb; pub -mod tikvpb; +mod gcpb_grpc; pub -mod configpb_grpc; +mod import_sstpb_grpc; pub -mod deadlock_grpc; +mod brpb; pub -mod debugpb_grpc; +mod pdpb; pub -mod diagnosticspb_grpc; +mod keyspacepb; pub -mod enginepb_grpc; +mod cdcpb_grpc; pub -mod import_kvpb_grpc; +mod disk_usage; pub -mod resource_usage_agent_grpc; +mod tikvpb_grpc; pub -mod tracepb_grpc; +mod autoid_grpc; pub -mod gcpb_grpc; +mod keyspacepb_grpc; pub -mod autoid_grpc; +mod tikvpb; pub -mod cdcpb_grpc; +mod debugpb_grpc; pub mod logbackuppb_grpc; pub -mod recoverdatapb_grpc; +mod enginepb; pub -mod keyspacepb_grpc; +mod mpp; pub -mod brpb_grpc; +mod import_kvpb_grpc; pub -mod import_sstpb_grpc; +mod import_kvpb; pub -mod pdpb_grpc; +mod errorpb; pub -mod resource_manager_grpc; +mod import_sstpb; pub -mod tikvpb_grpc; +mod tracepb_grpc; +pub +mod metapb; +pub +mod deadlock_grpc; diff --git a/src/protos/mpp.rs b/src/protos/mpp.rs index b509c6a5..fbb97d03 100644 --- a/src/protos/mpp.rs +++ b/src/protos/mpp.rs @@ -2893,8 +2893,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ reamIds\x12\x18\n\x07version\x18\x05\x20\x01(\x03R\x07version\"N\n\x05Er\ ror\x12\x12\n\x04code\x18\x01\x20\x01(\x05R\x04code\x12\x10\n\x03msg\x18\ \x02\x20\x01(\tR\x03msg\x12\x1f\n\x0bmpp_version\x18\x03\x20\x01(\x03R\n\ - mppVersionB\x1e\n\x10org.tikv.kvproto\xd0\xe2\x1e\x01\xc8\xe2\x1e\x01\ - \xe0\xe2\x1e\x01J\xcb\x1e\n\x06\x12\x04\0\0R\x01\n\x08\n\x01\x0c\x12\x03\ + mppVersionB\x1e\n\x10org.tikv.kvproto\xe0\xe2\x1e\x01\xd0\xe2\x1e\x01\ + \xc8\xe2\x1e\x01J\xcb\x1e\n\x06\x12\x04\0\0R\x01\n\x08\n\x01\x0c\x12\x03\ \0\0\x12\n\x08\n\x01\x02\x12\x03\x01\0\x0c\n\t\n\x02\x03\0\x12\x03\x03\0\ \x1e\n\t\n\x02\x03\x01\x12\x03\x04\0\x1b\n\t\n\x02\x03\x02\x12\x03\x05\0\ \x16\n\x08\n\x01\x08\x12\x03\x07\0(\n\x0b\n\x04\x08\xa9\xec\x03\x12\x03\ diff --git a/src/protos/pdpb.rs b/src/protos/pdpb.rs index 5f575b31..f4c6e84f 100644 --- a/src/protos/pdpb.rs +++ b/src/protos/pdpb.rs @@ -27248,6 +27248,414 @@ impl ::protobuf::reflect::ProtobufValue for GetExternalTimestampResponse { } } +#[derive(PartialEq,Clone,Default)] +pub struct GetMinTimestampRequest { + // message fields + pub header: ::protobuf::SingularPtrField, + // special fields + pub unknown_fields: ::protobuf::UnknownFields, + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a GetMinTimestampRequest { + fn default() -> &'a GetMinTimestampRequest { + ::default_instance() + } +} + +impl GetMinTimestampRequest { + pub fn new() -> GetMinTimestampRequest { + ::std::default::Default::default() + } + + // .pdpb.RequestHeader header = 1; + + + pub fn get_header(&self) -> &RequestHeader { + self.header.as_ref().unwrap_or_else(|| RequestHeader::default_instance()) + } + pub fn clear_header(&mut self) { + self.header.clear(); + } + + pub fn has_header(&self) -> bool { + self.header.is_some() + } + + // Param is passed by value, moved + pub fn set_header(&mut self, v: RequestHeader) { + self.header = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_header(&mut self) -> &mut RequestHeader { + if self.header.is_none() { + self.header.set_default(); + } + self.header.as_mut().unwrap() + } + + // Take field + pub fn take_header(&mut self) -> RequestHeader { + self.header.take().unwrap_or_else(|| RequestHeader::new()) + } +} + +impl ::protobuf::Message for GetMinTimestampRequest { + fn is_initialized(&self) -> bool { + for v in &self.header { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.header)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if let Some(ref v) = self.header.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.header.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> GetMinTimestampRequest { + GetMinTimestampRequest::new() + } + + fn default_instance() -> &'static GetMinTimestampRequest { + static mut instance: ::protobuf::lazy::Lazy = ::protobuf::lazy::Lazy { + lock: ::protobuf::lazy::ONCE_INIT, + ptr: 0 as *const GetMinTimestampRequest, + }; + unsafe { + instance.get(GetMinTimestampRequest::new) + } + } +} + +impl ::protobuf::Clear for GetMinTimestampRequest { + fn clear(&mut self) { + self.header.clear(); + self.unknown_fields.clear(); + } +} + +impl ::protobuf::PbPrint for GetMinTimestampRequest { + #[allow(unused_variables)] + fn fmt(&self, name: &str, buf: &mut String) { + ::protobuf::push_message_start(name, buf); + let old_len = buf.len(); + ::protobuf::PbPrint::fmt(&self.header, "header", buf); + if old_len < buf.len() { + buf.push(' '); + } + buf.push('}'); + } +} +impl ::std::fmt::Debug for GetMinTimestampRequest { + #[allow(unused_variables)] + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + let mut s = String::new(); + ::protobuf::PbPrint::fmt(&self.header, "header", &mut s); + write!(f, "{}", s) + } +} + +impl ::protobuf::reflect::ProtobufValue for GetMinTimestampRequest { + fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { + ::protobuf::reflect::ProtobufValueRef::Message(self) + } +} + +#[derive(PartialEq,Clone,Default)] +pub struct GetMinTimestampResponse { + // message fields + pub header: ::protobuf::SingularPtrField, + pub timestamp: ::protobuf::SingularPtrField, + // special fields + pub unknown_fields: ::protobuf::UnknownFields, + pub cached_size: ::protobuf::CachedSize, +} + +impl<'a> ::std::default::Default for &'a GetMinTimestampResponse { + fn default() -> &'a GetMinTimestampResponse { + ::default_instance() + } +} + +impl GetMinTimestampResponse { + pub fn new() -> GetMinTimestampResponse { + ::std::default::Default::default() + } + + // .pdpb.ResponseHeader header = 1; + + + pub fn get_header(&self) -> &ResponseHeader { + self.header.as_ref().unwrap_or_else(|| ResponseHeader::default_instance()) + } + pub fn clear_header(&mut self) { + self.header.clear(); + } + + pub fn has_header(&self) -> bool { + self.header.is_some() + } + + // Param is passed by value, moved + pub fn set_header(&mut self, v: ResponseHeader) { + self.header = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_header(&mut self) -> &mut ResponseHeader { + if self.header.is_none() { + self.header.set_default(); + } + self.header.as_mut().unwrap() + } + + // Take field + pub fn take_header(&mut self) -> ResponseHeader { + self.header.take().unwrap_or_else(|| ResponseHeader::new()) + } + + // .pdpb.Timestamp timestamp = 2; + + + pub fn get_timestamp(&self) -> &Timestamp { + self.timestamp.as_ref().unwrap_or_else(|| Timestamp::default_instance()) + } + pub fn clear_timestamp(&mut self) { + self.timestamp.clear(); + } + + pub fn has_timestamp(&self) -> bool { + self.timestamp.is_some() + } + + // Param is passed by value, moved + pub fn set_timestamp(&mut self, v: Timestamp) { + self.timestamp = ::protobuf::SingularPtrField::some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_timestamp(&mut self) -> &mut Timestamp { + if self.timestamp.is_none() { + self.timestamp.set_default(); + } + self.timestamp.as_mut().unwrap() + } + + // Take field + pub fn take_timestamp(&mut self) -> Timestamp { + self.timestamp.take().unwrap_or_else(|| Timestamp::new()) + } +} + +impl ::protobuf::Message for GetMinTimestampResponse { + fn is_initialized(&self) -> bool { + for v in &self.header { + if !v.is_initialized() { + return false; + } + }; + for v in &self.timestamp { + if !v.is_initialized() { + return false; + } + }; + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> { + while !is.eof()? { + let (field_number, wire_type) = is.read_tag_unpack()?; + match field_number { + 1 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.header)?; + }, + 2 => { + ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.timestamp)?; + }, + _ => { + ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u32 { + let mut my_size = 0; + if let Some(ref v) = self.header.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + if let Some(ref v) = self.timestamp.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len; + } + my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields()); + self.cached_size.set(my_size); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> { + if let Some(ref v) = self.header.as_ref() { + os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + if let Some(ref v) = self.timestamp.as_ref() { + os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?; + os.write_raw_varint32(v.get_cached_size())?; + v.write_to_with_cached_sizes(os)?; + } + os.write_unknown_fields(self.get_unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn get_cached_size(&self) -> u32 { + self.cached_size.get() + } + + fn get_unknown_fields(&self) -> &::protobuf::UnknownFields { + &self.unknown_fields + } + + fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields { + &mut self.unknown_fields + } + + fn as_any(&self) -> &dyn (::std::any::Any) { + self as &dyn (::std::any::Any) + } + fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) { + self as &mut dyn (::std::any::Any) + } + fn into_any(self: Box) -> ::std::boxed::Box { + self + } + + fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor { + Self::descriptor_static() + } + + fn new() -> GetMinTimestampResponse { + GetMinTimestampResponse::new() + } + + fn default_instance() -> &'static GetMinTimestampResponse { + static mut instance: ::protobuf::lazy::Lazy = ::protobuf::lazy::Lazy { + lock: ::protobuf::lazy::ONCE_INIT, + ptr: 0 as *const GetMinTimestampResponse, + }; + unsafe { + instance.get(GetMinTimestampResponse::new) + } + } +} + +impl ::protobuf::Clear for GetMinTimestampResponse { + fn clear(&mut self) { + self.header.clear(); + self.timestamp.clear(); + self.unknown_fields.clear(); + } +} + +impl ::protobuf::PbPrint for GetMinTimestampResponse { + #[allow(unused_variables)] + fn fmt(&self, name: &str, buf: &mut String) { + ::protobuf::push_message_start(name, buf); + let old_len = buf.len(); + ::protobuf::PbPrint::fmt(&self.header, "header", buf); + ::protobuf::PbPrint::fmt(&self.timestamp, "timestamp", buf); + if old_len < buf.len() { + buf.push(' '); + } + buf.push('}'); + } +} +impl ::std::fmt::Debug for GetMinTimestampResponse { + #[allow(unused_variables)] + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + let mut s = String::new(); + ::protobuf::PbPrint::fmt(&self.header, "header", &mut s); + ::protobuf::PbPrint::fmt(&self.timestamp, "timestamp", &mut s); + write!(f, "{}", s) + } +} + +impl ::protobuf::reflect::ProtobufValue for GetMinTimestampResponse { + fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { + ::protobuf::reflect::ProtobufValueRef::Message(self) + } +} + #[derive(Clone,PartialEq,Eq,Debug,Hash)] pub enum EventType { Put = 0, diff --git a/src/protos/pdpb_grpc.rs b/src/protos/pdpb_grpc.rs index a61e6c14..93ef33a7 100644 --- a/src/protos/pdpb_grpc.rs +++ b/src/protos/pdpb_grpc.rs @@ -282,9 +282,16 @@ const METHOD_PD_GET_EXTERNAL_TIMESTAMP: ::grpcio::Method = ::grpcio::Method { + ty: ::grpcio::MethodType::Unary, + name: "/pdpb.PD/GetMinTimestamp", + req_mar: ::grpcio::Marshaller { ser: ::grpcio::pb_ser, de: ::grpcio::pb_de }, + resp_mar: ::grpcio::Marshaller { ser: ::grpcio::pb_ser, de: ::grpcio::pb_de }, +}; + #[derive(Clone)] pub struct PdClient { - client: ::grpcio::Client, + pub client: ::grpcio::Client, } impl PdClient { @@ -861,6 +868,22 @@ impl PdClient { pub fn get_external_timestamp_async(&self, req: &super::pdpb::GetExternalTimestampRequest) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver> { self.get_external_timestamp_async_opt(req, ::grpcio::CallOption::default()) } + + pub fn get_min_timestamp_opt(&self, req: &super::pdpb::GetMinTimestampRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result { + self.client.unary_call(&METHOD_PD_GET_MIN_TIMESTAMP, req, opt) + } + + pub fn get_min_timestamp(&self, req: &super::pdpb::GetMinTimestampRequest) -> ::grpcio::Result { + self.get_min_timestamp_opt(req, ::grpcio::CallOption::default()) + } + + pub fn get_min_timestamp_async_opt(&self, req: &super::pdpb::GetMinTimestampRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver> { + self.client.unary_call_async(&METHOD_PD_GET_MIN_TIMESTAMP, req, opt) + } + + pub fn get_min_timestamp_async(&self, req: &super::pdpb::GetMinTimestampRequest) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver> { + self.get_min_timestamp_async_opt(req, ::grpcio::CallOption::default()) + } pub fn spawn(&self, f: F) where F: ::std::future::Future + Send + 'static { self.client.spawn(f) } @@ -981,6 +1004,9 @@ pub trait Pd { fn get_external_timestamp(&mut self, ctx: ::grpcio::RpcContext, _req: super::pdpb::GetExternalTimestampRequest, sink: ::grpcio::UnarySink) { grpcio::unimplemented_call!(ctx, sink) } + fn get_min_timestamp(&mut self, ctx: ::grpcio::RpcContext, _req: super::pdpb::GetMinTimestampRequest, sink: ::grpcio::UnarySink) { + grpcio::unimplemented_call!(ctx, sink) + } } pub fn create_pd(s: S) -> ::grpcio::Service { @@ -1133,9 +1159,13 @@ pub fn create_pd(s: S) -> ::grpcio::Service { builder = builder.add_unary_handler(&METHOD_PD_SET_EXTERNAL_TIMESTAMP, move |ctx, req, resp| { instance.set_external_timestamp(ctx, req, resp) }); - let mut instance = s; + let mut instance = s.clone(); builder = builder.add_unary_handler(&METHOD_PD_GET_EXTERNAL_TIMESTAMP, move |ctx, req, resp| { instance.get_external_timestamp(ctx, req, resp) }); + let mut instance = s; + builder = builder.add_unary_handler(&METHOD_PD_GET_MIN_TIMESTAMP, move |ctx, req, resp| { + instance.get_min_timestamp(ctx, req, resp) + }); builder.build() } diff --git a/src/protos/recoverdatapb_grpc.rs b/src/protos/recoverdatapb_grpc.rs index a53acec2..d18e87fe 100644 --- a/src/protos/recoverdatapb_grpc.rs +++ b/src/protos/recoverdatapb_grpc.rs @@ -46,7 +46,7 @@ const METHOD_RECOVER_DATA_RESOLVE_KV_DATA: ::grpcio::Method