From 7ad1370e8a33318e8075ff904a3bc8c01acf4830 Mon Sep 17 00:00:00 2001 From: hillium Date: Fri, 22 Nov 2024 16:43:18 +0800 Subject: [PATCH 01/10] initial Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 1126 +++++++++++++++++++++++--------- pkg/configpb/configpb.pb.gw.go | 22 +- pkg/tikvpb/tikvpb.pb.go | 384 ++++++----- proto/brpb.proto | 19 + scripts/proto.lock | 47 ++ 5 files changed, 1114 insertions(+), 484 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index a77f4a022..b68f0a63f 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -218,16 +218,20 @@ const ( MigrationVersion_M0 MigrationVersion = 0 // Added `creator` and `version`. MigrationVersion_M1 MigrationVersion = 1 + // Added `backup`. + MigrationVersion_M2 MigrationVersion = 2 ) var MigrationVersion_name = map[int32]string{ 0: "M0", 1: "M1", + 2: "M2", } var MigrationVersion_value = map[string]int32{ "M0": 0, "M1": 1, + "M2": 2, } func (x MigrationVersion) String() string { @@ -4724,6 +4728,121 @@ func (m *MetaEdit) GetDestructSelf() bool { return false } +type RewrittenTableID struct { + UpstreamOfUpstream uint64 `protobuf:"varint,1,opt,name=upstream_of_upstream,json=upstreamOfUpstream,proto3" json:"upstream_of_upstream,omitempty"` + Upstream uint64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` +} + +func (m *RewrittenTableID) Reset() { *m = RewrittenTableID{} } +func (m *RewrittenTableID) String() string { return proto.CompactTextString(m) } +func (*RewrittenTableID) ProtoMessage() {} +func (*RewrittenTableID) Descriptor() ([]byte, []int) { + return fileDescriptor_483d1f48d58a4885, []int{55} +} +func (m *RewrittenTableID) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RewrittenTableID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RewrittenTableID.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 *RewrittenTableID) XXX_Merge(src proto.Message) { + xxx_messageInfo_RewrittenTableID.Merge(m, src) +} +func (m *RewrittenTableID) XXX_Size() int { + return m.Size() +} +func (m *RewrittenTableID) XXX_DiscardUnknown() { + xxx_messageInfo_RewrittenTableID.DiscardUnknown(m) +} + +var xxx_messageInfo_RewrittenTableID proto.InternalMessageInfo + +func (m *RewrittenTableID) GetUpstreamOfUpstream() uint64 { + if m != nil { + return m.UpstreamOfUpstream + } + return 0 +} + +func (m *RewrittenTableID) GetUpstream() uint64 { + if m != nil { + return m.Upstream + } + return 0 +} + +// ExtraFullBackup is created by BR restoring to a cluster with PITR enabled. +// This is uploaded by the BR CLI. +type ExtraFullBackup struct { + // The table IDs rewritten during restoring. + RewrittenTables []*RewrittenTableID `protobuf:"bytes,1,rep,name=rewritten_tables,json=rewrittenTables,proto3" json:"rewritten_tables,omitempty"` + Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` + AsIfTs uint64 `protobuf:"varint,3,opt,name=as_if_ts,json=asIfTs,proto3" json:"as_if_ts,omitempty"` +} + +func (m *ExtraFullBackup) Reset() { *m = ExtraFullBackup{} } +func (m *ExtraFullBackup) String() string { return proto.CompactTextString(m) } +func (*ExtraFullBackup) ProtoMessage() {} +func (*ExtraFullBackup) Descriptor() ([]byte, []int) { + return fileDescriptor_483d1f48d58a4885, []int{56} +} +func (m *ExtraFullBackup) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ExtraFullBackup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ExtraFullBackup.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 *ExtraFullBackup) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtraFullBackup.Merge(m, src) +} +func (m *ExtraFullBackup) XXX_Size() int { + return m.Size() +} +func (m *ExtraFullBackup) XXX_DiscardUnknown() { + xxx_messageInfo_ExtraFullBackup.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtraFullBackup proto.InternalMessageInfo + +func (m *ExtraFullBackup) GetRewrittenTables() []*RewrittenTableID { + if m != nil { + return m.RewrittenTables + } + return nil +} + +func (m *ExtraFullBackup) GetFiles() []*File { + if m != nil { + return m.Files + } + return nil +} + +func (m *ExtraFullBackup) GetAsIfTs() uint64 { + if m != nil { + return m.AsIfTs + } + return 0 +} + // An extended version of `SpansOfFile`, added more metadata for the // execution of delayed deletion. type DeleteSpansOfFile struct { @@ -4738,7 +4857,7 @@ func (m *DeleteSpansOfFile) Reset() { *m = DeleteSpansOfFile{} } func (m *DeleteSpansOfFile) String() string { return proto.CompactTextString(m) } func (*DeleteSpansOfFile) ProtoMessage() {} func (*DeleteSpansOfFile) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{55} + return fileDescriptor_483d1f48d58a4885, []int{57} } func (m *DeleteSpansOfFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4795,14 +4914,15 @@ type Migration struct { TruncatedTo uint64 `protobuf:"varint,2,opt,name=truncated_to,json=truncatedTo,proto3" json:"truncated_to,omitempty"` Compactions []*LogFileCompaction `protobuf:"bytes,3,rep,name=compactions,proto3" json:"compactions,omitempty"` // Delete all files matches this prefix. - DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` + DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` + ExtraFullBackups []*ExtraFullBackup `protobuf:"bytes,7,rep,name=extra_full_backups,json=extraFullBackups,proto3" json:"extra_full_backups,omitempty"` } func (m *Migration) Reset() { *m = Migration{} } func (m *Migration) String() string { return proto.CompactTextString(m) } func (*Migration) ProtoMessage() {} func (*Migration) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{56} + return fileDescriptor_483d1f48d58a4885, []int{58} } func (m *Migration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4873,6 +4993,13 @@ func (m *Migration) GetDestructPrefix() []string { return nil } +func (m *Migration) GetExtraFullBackups() []*ExtraFullBackup { + if m != nil { + return m.ExtraFullBackups + } + return nil +} + func init() { proto.RegisterEnum("backup.PrepareSnapshotBackupRequestType", PrepareSnapshotBackupRequestType_name, PrepareSnapshotBackupRequestType_value) proto.RegisterEnum("backup.PrepareSnapshotBackupEventType", PrepareSnapshotBackupEventType_name, PrepareSnapshotBackupEventType_value) @@ -4937,6 +5064,8 @@ func init() { proto.RegisterType((*LogFileSubcompactions)(nil), "backup.LogFileSubcompactions") proto.RegisterType((*LogFileCompaction)(nil), "backup.LogFileCompaction") proto.RegisterType((*MetaEdit)(nil), "backup.MetaEdit") + proto.RegisterType((*RewrittenTableID)(nil), "backup.RewrittenTableID") + proto.RegisterType((*ExtraFullBackup)(nil), "backup.ExtraFullBackup") proto.RegisterType((*DeleteSpansOfFile)(nil), "backup.DeleteSpansOfFile") proto.RegisterType((*Migration)(nil), "backup.Migration") } @@ -4944,294 +5073,302 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4581 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x6f, 0x1c, 0x47, - 0x76, 0xec, 0xf9, 0x9e, 0x37, 0x9f, 0x2c, 0x52, 0xd2, 0x98, 0xb6, 0x28, 0xba, 0x65, 0x6b, 0x19, - 0x7a, 0xc5, 0xb5, 0x25, 0xaf, 0x56, 0x89, 0x37, 0x30, 0xf8, 0x25, 0x93, 0x96, 0x28, 0x31, 0x4d, - 0xda, 0x8b, 0x18, 0x08, 0x1a, 0x3d, 0xdd, 0x35, 0x9c, 0x5e, 0xf6, 0x74, 0xf7, 0x76, 0xd5, 0x8c, - 0x44, 0x1f, 0x72, 0xc8, 0xdd, 0xf0, 0x6e, 0x90, 0x43, 0xfe, 0x40, 0x80, 0x1c, 0x12, 0x20, 0xd7, - 0x9c, 0x92, 0x43, 0x82, 0x6c, 0x90, 0x00, 0xf1, 0x21, 0x87, 0x3d, 0x06, 0x36, 0x92, 0x7f, 0x11, - 0x20, 0xa8, 0x57, 0x55, 0x3d, 0xdd, 0xc3, 0x21, 0x25, 0x39, 0x8b, 0x3d, 0x71, 0xea, 0xbd, 0x57, - 0x55, 0xaf, 0xde, 0x57, 0xbd, 0xf7, 0xaa, 0x09, 0xd0, 0x4f, 0xe2, 0xfe, 0x66, 0x9c, 0x44, 0x3c, - 0x22, 0x95, 0xbe, 0xe3, 0x9e, 0x8d, 0xe3, 0x95, 0xd6, 0xd9, 0x24, 0x89, 0x5d, 0x0d, 0x5e, 0x69, - 0xd1, 0x24, 0x89, 0x52, 0xaa, 0x95, 0xe6, 0x88, 0x72, 0x27, 0x1d, 0x11, 0x1a, 0xba, 0xc9, 0x79, - 0xcc, 0xfd, 0x28, 0x4c, 0x61, 0xcb, 0xa7, 0xd1, 0x69, 0x84, 0x3f, 0x7f, 0x24, 0x7e, 0x29, 0x68, - 0x27, 0x19, 0x33, 0x8e, 0x3f, 0x25, 0xc0, 0xfc, 0x1b, 0x03, 0xde, 0x3a, 0x4a, 0x68, 0xec, 0x24, - 0xf4, 0x38, 0x74, 0x62, 0x36, 0x8c, 0xf8, 0x36, 0x32, 0x60, 0xd1, 0x5f, 0x8c, 0x29, 0xe3, 0xe4, - 0x21, 0x14, 0xf8, 0x79, 0xcf, 0x58, 0x33, 0xd6, 0xdb, 0xf7, 0xd6, 0x37, 0x25, 0x73, 0x9b, 0x57, - 0xcd, 0x38, 0x39, 0x8f, 0xa9, 0x55, 0xe0, 0xe7, 0x64, 0x1d, 0xaa, 0x09, 0x3d, 0xf5, 0xa3, 0x90, - 0xf5, 0x0a, 0x6b, 0xc5, 0xf5, 0xc6, 0xbd, 0xf6, 0xa6, 0xe2, 0xda, 0x42, 0xb0, 0xa5, 0xd1, 0x64, - 0x1d, 0xba, 0x01, 0x75, 0x18, 0xb5, 0xfd, 0xd0, 0x66, 0xd4, 0x8d, 0x42, 0x8f, 0xf5, 0x8a, 0x6b, - 0xc6, 0x7a, 0xc9, 0x6a, 0x23, 0xfc, 0x20, 0x3c, 0x96, 0x50, 0xf3, 0x3f, 0x0d, 0xb8, 0x79, 0xc9, - 0xe6, 0x2c, 0x8e, 0x42, 0x46, 0xc9, 0x83, 0x0c, 0xbf, 0x77, 0xae, 0xe4, 0x77, 0x6f, 0x42, 0xc3, - 0x29, 0xb7, 0x77, 0xa0, 0x22, 0xd9, 0xe9, 0x15, 0xd6, 0x8c, 0x39, 0xcc, 0x2a, 0x2c, 0x79, 0x07, - 0xca, 0xa8, 0x0a, 0x64, 0x50, 0x90, 0x69, 0xc5, 0xec, 0x89, 0xbf, 0x96, 0x44, 0x92, 0xbb, 0xb0, - 0x14, 0x38, 0x8c, 0xdb, 0xea, 0x58, 0xcc, 0x9e, 0x38, 0x81, 0xef, 0xf5, 0x4a, 0x6b, 0xc6, 0x7a, - 0xcd, 0xea, 0x0a, 0xd4, 0x13, 0x3c, 0x18, 0xfb, 0x5c, 0xc0, 0xcd, 0xff, 0xae, 0x02, 0x48, 0xa6, - 0x0e, 0x29, 0x77, 0xc8, 0x4d, 0x00, 0x37, 0x18, 0x33, 0x4e, 0x13, 0xdb, 0xf7, 0xf0, 0x2c, 0x25, - 0xab, 0xae, 0x20, 0x07, 0x1e, 0xf9, 0x01, 0x74, 0x34, 0x7a, 0x42, 0x13, 0xa6, 0x79, 0xae, 0x5b, - 0x6d, 0x05, 0xfe, 0x5c, 0x42, 0xc5, 0x3a, 0xfd, 0x29, 0x4d, 0x03, 0x69, 0xea, 0xfd, 0x14, 0xdd, - 0x83, 0xaa, 0xc6, 0x35, 0xd7, 0x8c, 0xf5, 0xb2, 0xa5, 0x87, 0xc4, 0x84, 0xf2, 0xc0, 0x0f, 0x28, - 0xeb, 0x95, 0x50, 0x71, 0x4d, 0x2d, 0xc7, 0x47, 0x7e, 0x40, 0x2d, 0x89, 0x22, 0x3f, 0x02, 0x10, - 0x3f, 0x6c, 0x3f, 0xf4, 0xe8, 0x8b, 0x5e, 0x0b, 0xa5, 0xd1, 0xd5, 0x84, 0xe2, 0x18, 0x48, 0x5c, - 0x17, 0x34, 0x07, 0x82, 0x84, 0xdc, 0x86, 0x16, 0xe3, 0x4e, 0xc2, 0x53, 0x86, 0xca, 0x78, 0xb0, - 0x26, 0x02, 0x35, 0x4f, 0xb7, 0xa0, 0x41, 0x43, 0x2f, 0x25, 0xa9, 0x20, 0x09, 0xd0, 0xd0, 0xd3, - 0x04, 0xeb, 0x50, 0x65, 0xee, 0x90, 0x8e, 0x1c, 0xd6, 0xab, 0x2a, 0xab, 0x52, 0x7b, 0x1e, 0x23, - 0xd8, 0xd2, 0x68, 0x72, 0x1f, 0x9a, 0xf2, 0xa7, 0x62, 0xb1, 0x7d, 0x09, 0x8b, 0x0d, 0x49, 0x25, - 0x99, 0x5c, 0x81, 0xba, 0xcf, 0xec, 0xc4, 0x79, 0x6e, 0x9f, 0x4d, 0x7a, 0x35, 0x54, 0x57, 0xd5, - 0x67, 0x96, 0xf3, 0xfc, 0xf1, 0x44, 0x9c, 0x58, 0x20, 0x12, 0x27, 0x3c, 0xa5, 0xac, 0x57, 0xc7, - 0xdd, 0xd3, 0xe5, 0x2c, 0xe7, 0xb9, 0x25, 0x10, 0x56, 0x3d, 0x51, 0xbf, 0x18, 0x79, 0x08, 0x9d, - 0x74, 0x82, 0x62, 0xa2, 0x73, 0x09, 0x13, 0x2d, 0x3d, 0x4b, 0xb2, 0x41, 0xa0, 0xe4, 0x79, 0x01, - 0xeb, 0xc1, 0x9a, 0xb1, 0xde, 0xb4, 0xf0, 0x37, 0xf9, 0x00, 0x1a, 0x9e, 0x17, 0xc8, 0x75, 0x28, - 0xeb, 0x75, 0x2f, 0x59, 0x09, 0x3c, 0x2f, 0x38, 0x90, 0x34, 0x42, 0xe4, 0x12, 0x6d, 0x27, 0x94, - 0x8d, 0x03, 0xde, 0x5b, 0x44, 0x1b, 0x68, 0xf6, 0xb5, 0xcf, 0x8c, 0x03, 0x4e, 0x3e, 0x84, 0x86, - 0x13, 0xfb, 0xa9, 0xc8, 0x09, 0xba, 0xce, 0xd2, 0xa6, 0x8e, 0x3f, 0x5b, 0x47, 0x07, 0x4a, 0xf6, - 0x16, 0x38, 0xb1, 0xaf, 0xf5, 0x70, 0x1f, 0x6a, 0x71, 0x14, 0xf8, 0xae, 0x4f, 0x59, 0x6f, 0x09, - 0x45, 0x71, 0x23, 0xf5, 0xb6, 0xc0, 0x71, 0xe9, 0x88, 0x86, 0xfc, 0x48, 0x10, 0x9c, 0x5b, 0x29, - 0x21, 0xf9, 0x10, 0xae, 0x87, 0xf4, 0xb9, 0xed, 0x46, 0x41, 0xe0, 0x88, 0x68, 0xc5, 0x6c, 0x1a, - 0x3a, 0xfd, 0x80, 0x7a, 0xbd, 0x65, 0x64, 0x6c, 0x39, 0xa4, 0xcf, 0x77, 0x52, 0xe4, 0x9e, 0xc4, - 0x29, 0x9d, 0xf0, 0x17, 0xa1, 0xd0, 0xc9, 0x35, 0xad, 0x93, 0x93, 0x17, 0xe1, 0xe3, 0x09, 0xd9, - 0x80, 0xaa, 0xd7, 0xb7, 0x47, 0x4e, 0xcc, 0x7a, 0xd7, 0x91, 0x8b, 0xc5, 0x94, 0x0b, 0x9f, 0x27, - 0xbb, 0xdb, 0x87, 0x4e, 0x6c, 0x55, 0xbc, 0xfe, 0xa1, 0x13, 0x33, 0x72, 0x07, 0x4a, 0xa3, 0xc8, - 0xa3, 0xbd, 0x1b, 0x78, 0x42, 0xa2, 0x09, 0x95, 0xe3, 0x45, 0x1e, 0xb5, 0x10, 0x4f, 0xde, 0x83, - 0x8a, 0xd2, 0x71, 0x0f, 0x97, 0x5c, 0xca, 0x53, 0x4a, 0x35, 0x2b, 0x12, 0x61, 0xb0, 0x4a, 0xc4, - 0xcc, 0xff, 0x92, 0xf6, 0xde, 0x90, 0x06, 0x2b, 0x41, 0xc7, 0xfe, 0x97, 0xf4, 0xd3, 0x52, 0xad, - 0xd8, 0x2d, 0x59, 0xa5, 0xd8, 0xe1, 0x43, 0xf3, 0x14, 0x1a, 0x99, 0x35, 0xc8, 0x9b, 0x50, 0x97, - 0x1e, 0x71, 0x46, 0x65, 0xc8, 0x6a, 0x5a, 0x35, 0x04, 0x3c, 0xa6, 0xe7, 0xe4, 0x06, 0x54, 0x85, - 0x27, 0x08, 0x54, 0x01, 0x51, 0x15, 0x1a, 0x7a, 0x02, 0x91, 0x3a, 0x67, 0xf1, 0x52, 0xe7, 0x34, - 0xff, 0xb5, 0x00, 0x25, 0x31, 0x16, 0x86, 0x14, 0x3a, 0x23, 0x8a, 0xab, 0xd7, 0x2d, 0xfc, 0x4d, - 0xae, 0x43, 0x85, 0x0d, 0x9d, 0x7b, 0x3f, 0x7e, 0xa0, 0x17, 0x96, 0xa3, 0x3c, 0x3b, 0xc5, 0xcb, - 0xd9, 0x29, 0xe5, 0xd8, 0xf9, 0xed, 0xb8, 0xf5, 0x0a, 0xd4, 0xdc, 0xc4, 0x7d, 0xf0, 0xe1, 0x8b, - 0x28, 0xe9, 0x55, 0x11, 0x9b, 0x8e, 0x05, 0x5f, 0x3c, 0xe2, 0x4e, 0x60, 0x9f, 0x4d, 0x18, 0xfa, - 0x64, 0xc9, 0xaa, 0x21, 0xe0, 0xf1, 0x04, 0xe5, 0x2f, 0x91, 0xfd, 0x73, 0x8e, 0x5e, 0x89, 0x2b, - 0x23, 0x68, 0x5b, 0x40, 0x48, 0x1b, 0x0a, 0xee, 0x00, 0x1d, 0xa9, 0x6e, 0x15, 0xdc, 0x81, 0x90, - 0x08, 0x6a, 0xaa, 0x81, 0x94, 0xf8, 0x5b, 0xec, 0xe0, 0xfa, 0xf1, 0x50, 0xc4, 0xdb, 0x09, 0xc6, - 0xc2, 0xa6, 0x55, 0x93, 0x80, 0x83, 0x89, 0xf9, 0x55, 0x01, 0x6a, 0xda, 0xbb, 0xc8, 0x7b, 0x00, - 0xe2, 0x5e, 0xb0, 0xa5, 0x06, 0x8c, 0x39, 0x1a, 0xa8, 0x8f, 0x14, 0x2d, 0x13, 0xc4, 0x9e, 0x93, - 0x12, 0x17, 0xe6, 0x11, 0x0b, 0xbc, 0x24, 0xce, 0x04, 0xb6, 0xe2, 0xd5, 0x81, 0x2d, 0x1f, 0x87, - 0x4a, 0xaf, 0x12, 0x87, 0xd2, 0x30, 0x20, 0xe7, 0x54, 0x2e, 0xb7, 0x6b, 0x1d, 0x1b, 0xe4, 0x4c, - 0x1d, 0x87, 0xca, 0x6b, 0x45, 0x1d, 0x87, 0xcc, 0x77, 0xa1, 0x33, 0xe3, 0xe1, 0x82, 0xcc, 0x0f, - 0x07, 0x91, 0xb2, 0x61, 0xfc, 0x6d, 0x3e, 0x01, 0x38, 0xe6, 0x0e, 0x67, 0xdb, 0x41, 0xe4, 0x9e, - 0x09, 0x35, 0xc5, 0xc3, 0x73, 0xe6, 0xbb, 0x4e, 0xa0, 0xef, 0xb4, 0xa2, 0x05, 0x1a, 0x74, 0xe0, - 0x89, 0xbb, 0xea, 0xe7, 0x2c, 0x0a, 0x6d, 0x2e, 0x7c, 0x5e, 0x19, 0x66, 0x5d, 0x40, 0x4e, 0x04, - 0xc0, 0xfc, 0x09, 0xd4, 0x71, 0x35, 0x54, 0xc2, 0x06, 0x54, 0xfa, 0x62, 0x55, 0xad, 0x80, 0xd4, - 0x95, 0xa7, 0x1b, 0x5a, 0x8a, 0xc2, 0xfc, 0x3b, 0x03, 0xda, 0xe9, 0xcc, 0x34, 0xb8, 0xbe, 0xb2, - 0x4f, 0xbc, 0x01, 0x35, 0x61, 0x21, 0x36, 0x0d, 0x5d, 0x95, 0x92, 0x54, 0xc5, 0x78, 0x2f, 0x74, - 0x53, 0x54, 0x94, 0xf8, 0xe8, 0x12, 0x0a, 0xf5, 0x2c, 0xf1, 0xf3, 0xf6, 0x54, 0xce, 0xdb, 0x93, - 0x10, 0x85, 0x1f, 0x06, 0x7e, 0x48, 0x6d, 0xa1, 0x7c, 0xf4, 0x85, 0xa6, 0x05, 0x12, 0xb4, 0xeb, - 0x70, 0xc7, 0xfc, 0xb3, 0x02, 0x54, 0xa4, 0xce, 0x85, 0xf1, 0x7a, 0x7d, 0x25, 0xd6, 0x82, 0xd7, - 0x27, 0xcb, 0x50, 0xce, 0x0a, 0x48, 0x0e, 0x72, 0xce, 0x53, 0xbc, 0xca, 0x79, 0x4a, 0x57, 0x3b, - 0x4f, 0xf9, 0x82, 0xf3, 0xfc, 0x1e, 0x74, 0xb9, 0x3f, 0x08, 0x1c, 0x36, 0xb4, 0x13, 0x1a, 0x07, - 0xbe, 0xeb, 0x30, 0x64, 0xb8, 0x65, 0x75, 0x14, 0xdc, 0x52, 0x60, 0xc1, 0x1a, 0x13, 0x72, 0x46, - 0xf7, 0x6d, 0x5a, 0x72, 0x40, 0x7e, 0x02, 0x0d, 0xfc, 0xa1, 0xae, 0xbf, 0x1a, 0xea, 0xeb, 0x7a, - 0x4e, 0x5f, 0xa9, 0x62, 0x2c, 0x40, 0x52, 0xfc, 0x6d, 0x1e, 0x42, 0xf9, 0x60, 0xf7, 0xd0, 0x89, - 0x05, 0x8f, 0xe3, 0x98, 0xf1, 0x84, 0x3a, 0xa3, 0x8c, 0xe5, 0x68, 0xd0, 0x81, 0x27, 0x02, 0x90, - 0x17, 0x3d, 0x0f, 0xa7, 0x24, 0x05, 0x24, 0x69, 0x4e, 0x81, 0x07, 0x9e, 0xf9, 0x1c, 0x9a, 0xe2, - 0x42, 0x40, 0x63, 0x12, 0xab, 0xce, 0xb3, 0x81, 0x77, 0xa0, 0xe2, 0x7b, 0xe2, 0x2e, 0x51, 0x29, - 0x60, 0x4b, 0xb3, 0x89, 0x8c, 0x58, 0x65, 0xdf, 0x13, 0x33, 0xef, 0x02, 0xc4, 0x4e, 0xc2, 0x7d, - 0xbc, 0xa2, 0x94, 0xab, 0xce, 0x50, 0x66, 0x08, 0x4c, 0x06, 0xf5, 0xf4, 0x26, 0xfa, 0x7f, 0xec, - 0xfa, 0x43, 0xa8, 0xa0, 0xae, 0xf5, 0x8e, 0xcb, 0xd9, 0x6b, 0x4e, 0x9f, 0xca, 0x52, 0x34, 0xe6, - 0x11, 0xd4, 0x74, 0x1c, 0xf8, 0x9e, 0x97, 0x8c, 0x8c, 0x9a, 0x45, 0x1d, 0x35, 0xcd, 0x5d, 0x68, - 0xef, 0xa8, 0x04, 0x74, 0x17, 0x33, 0x5d, 0x91, 0x3d, 0xba, 0xe3, 0x24, 0xa1, 0x21, 0x57, 0x19, - 0xaa, 0x1e, 0x0a, 0x4c, 0x22, 0x6b, 0x01, 0x5c, 0xb4, 0x64, 0xe9, 0xa1, 0xf9, 0xef, 0x06, 0x94, - 0xe5, 0xec, 0x2e, 0x14, 0x47, 0xec, 0x54, 0x09, 0x42, 0xfc, 0x24, 0xdb, 0xd0, 0x9d, 0x26, 0xbd, - 0x76, 0x36, 0xc7, 0x4e, 0xcd, 0x25, 0xcf, 0xc1, 0xfe, 0x42, 0x9a, 0xf0, 0x1e, 0x78, 0x72, 0xd5, - 0x4d, 0xa8, 0x9d, 0x4d, 0xd4, 0xdc, 0x12, 0xce, 0x5d, 0x4c, 0xf3, 0x98, 0xc7, 0xf4, 0x5c, 0x4f, - 0xab, 0x9e, 0x4d, 0x24, 0xfd, 0x7d, 0x68, 0xca, 0xb4, 0x5e, 0xcd, 0x29, 0xcf, 0xcb, 0xe9, 0xf7, - 0x17, 0xac, 0x86, 0xa4, 0xc2, 0xe1, 0x76, 0x0d, 0x2a, 0x1e, 0xe5, 0x8e, 0x1f, 0x98, 0x7f, 0x6f, - 0xc0, 0xea, 0x31, 0x5a, 0x98, 0x8c, 0xa0, 0x27, 0x0e, 0x3b, 0x3b, 0xa6, 0xee, 0x38, 0xf1, 0xf9, - 0xf9, 0x4e, 0x14, 0x0e, 0x7c, 0x71, 0x2a, 0x12, 0x07, 0x8e, 0x1f, 0x72, 0xfa, 0x82, 0xa3, 0xbf, - 0xa7, 0x6a, 0xc8, 0x84, 0xad, 0x1d, 0x19, 0x1a, 0xc2, 0x41, 0xb4, 0xbf, 0x60, 0x75, 0x53, 0x7a, - 0x11, 0x0c, 0x84, 0x2e, 0xf6, 0x60, 0x71, 0xe4, 0xa0, 0x60, 0xce, 0xe8, 0xb9, 0xed, 0xe2, 0xc2, - 0xca, 0x58, 0xd2, 0x9c, 0xeb, 0x10, 0x09, 0x1e, 0x53, 0xb5, 0xef, 0xfe, 0x82, 0xd5, 0x19, 0xe5, - 0x41, 0xdb, 0x4d, 0x80, 0x69, 0x9d, 0x68, 0x06, 0x00, 0xd3, 0x6d, 0xc9, 0xc7, 0xd0, 0x50, 0x01, - 0x8b, 0x9f, 0xc7, 0x54, 0x95, 0x4f, 0xab, 0x9b, 0xb9, 0xba, 0x72, 0x2f, 0x1d, 0x1c, 0x52, 0x3e, - 0x8c, 0x3c, 0x0b, 0xe4, 0x14, 0x51, 0x42, 0x61, 0xc9, 0x22, 0x17, 0x98, 0xda, 0x92, 0x8a, 0x81, - 0x8f, 0xe9, 0xb9, 0xf9, 0x17, 0x06, 0x74, 0x66, 0x58, 0x24, 0x9f, 0x40, 0x67, 0xba, 0xfe, 0xeb, - 0xec, 0xdb, 0x9e, 0xa2, 0x71, 0xef, 0x87, 0xd0, 0x98, 0xca, 0x47, 0xdf, 0xb3, 0x37, 0xf2, 0x8b, - 0xa4, 0x9b, 0x5b, 0x90, 0xca, 0x85, 0x99, 0x5f, 0x55, 0xa0, 0x95, 0x2f, 0x77, 0x5f, 0x52, 0x7a, - 0xe5, 0x9c, 0xa9, 0x70, 0xb9, 0x33, 0x15, 0xaf, 0x4e, 0x91, 0x4a, 0x2f, 0x4f, 0x91, 0xca, 0x17, - 0x52, 0xa4, 0x9b, 0xe2, 0xda, 0xe7, 0xd4, 0x0e, 0xfc, 0x91, 0xcf, 0x55, 0x92, 0x54, 0x17, 0x90, - 0x27, 0x02, 0x40, 0xd6, 0xa0, 0xe1, 0x46, 0xa1, 0xf4, 0x41, 0xf7, 0x1c, 0xf3, 0xa4, 0x96, 0x95, - 0x05, 0x91, 0x8f, 0xa1, 0xc3, 0x78, 0x94, 0x38, 0xa7, 0xd4, 0x16, 0x56, 0x43, 0x43, 0x0f, 0xd3, - 0xa5, 0x5c, 0x3c, 0x46, 0xf4, 0xb6, 0xc4, 0x5a, 0x6d, 0x96, 0x1b, 0xe7, 0x8b, 0x23, 0xc8, 0x17, - 0x47, 0x32, 0x60, 0x34, 0xd2, 0x34, 0x4b, 0xb8, 0x73, 0x34, 0x8a, 0x13, 0xca, 0x58, 0xaa, 0xde, - 0x26, 0xaa, 0x37, 0xb5, 0xd9, 0x9d, 0x29, 0x1e, 0xcb, 0xf0, 0x8e, 0x9b, 0x07, 0x90, 0xf7, 0x60, - 0x31, 0xbb, 0x46, 0x40, 0x27, 0x34, 0xc0, 0x4a, 0xb3, 0x6c, 0x65, 0x17, 0x7f, 0x22, 0xe0, 0xe4, - 0x7e, 0x6a, 0xc2, 0x98, 0x8a, 0xb4, 0x2f, 0x73, 0x31, 0x6d, 0xb6, 0x68, 0xf7, 0x1f, 0x41, 0xc7, - 0x63, 0xdc, 0xce, 0xd6, 0x3f, 0x9d, 0xcb, 0xeb, 0x9f, 0x96, 0xc7, 0xf8, 0xd6, 0xb4, 0x04, 0x7a, - 0x1f, 0x80, 0x8d, 0xfb, 0x3a, 0xa7, 0xea, 0xaa, 0xf2, 0x23, 0x13, 0x6f, 0x54, 0x22, 0xc6, 0xc6, - 0x7d, 0x95, 0x4e, 0xbd, 0x2d, 0xe2, 0x0d, 0xde, 0x97, 0x76, 0x42, 0x1d, 0x0f, 0xcb, 0xb1, 0x9a, - 0x88, 0x2e, 0x08, 0xb3, 0xa8, 0xe3, 0xa5, 0x45, 0x0a, 0x79, 0x49, 0x91, 0xf2, 0x26, 0xd4, 0xc7, - 0xa1, 0xff, 0x8b, 0x31, 0x15, 0x76, 0xba, 0x84, 0x62, 0xaf, 0x49, 0xc0, 0x81, 0x27, 0xaa, 0x22, - 0x37, 0xc2, 0x18, 0x82, 0x85, 0x95, 0x48, 0x0f, 0x35, 0x5b, 0x3b, 0x12, 0x6e, 0x69, 0x82, 0x4f, - 0x4b, 0xb5, 0x4a, 0xb7, 0xaa, 0xea, 0x93, 0xff, 0x29, 0xc0, 0xf2, 0x6c, 0x40, 0x43, 0x39, 0xbd, - 0x0f, 0x55, 0x65, 0x0b, 0x2a, 0x76, 0x5d, 0x66, 0x32, 0x9a, 0x0c, 0xb3, 0x23, 0xb4, 0x79, 0xce, - 0xf4, 0x2d, 0x80, 0xe3, 0x13, 0x46, 0xae, 0x81, 0x70, 0x0c, 0x81, 0x90, 0xc9, 0x4a, 0x99, 0x86, - 0xde, 0x09, 0x4b, 0x2f, 0xc7, 0x52, 0xe6, 0x72, 0x7c, 0x1b, 0x9a, 0x78, 0xa5, 0x89, 0x14, 0x9a, - 0xd3, 0x04, 0xf3, 0xd0, 0xba, 0xd5, 0x40, 0xd8, 0x23, 0x04, 0xcd, 0x35, 0xb4, 0xca, 0x6b, 0x1a, - 0xda, 0x33, 0xe8, 0x30, 0x15, 0xb7, 0x75, 0x7c, 0xad, 0xe2, 0x31, 0xef, 0x4c, 0x8f, 0x79, 0x55, - 0x98, 0xb7, 0xda, 0x6c, 0x66, 0x8c, 0xdd, 0x9f, 0x71, 0xec, 0x09, 0x87, 0xe5, 0x4c, 0x57, 0x8b, - 0x56, 0x45, 0x64, 0x38, 0x63, 0x66, 0x7e, 0x53, 0x10, 0x59, 0x69, 0xce, 0xb9, 0x4c, 0x28, 0x85, - 0x51, 0x14, 0x2b, 0xf9, 0xa6, 0x65, 0xc2, 0xd3, 0x28, 0x8a, 0xf7, 0x17, 0x2c, 0xc4, 0x91, 0x77, - 0xa1, 0x1c, 0x44, 0xae, 0x13, 0xcc, 0xa6, 0x0a, 0x4f, 0x04, 0x70, 0x7f, 0xc1, 0x92, 0x58, 0xf2, - 0x16, 0x14, 0xd8, 0x7d, 0x75, 0x79, 0x42, 0x7a, 0x82, 0xfb, 0xfb, 0x0b, 0x56, 0x81, 0xdd, 0x27, - 0xb7, 0xa0, 0x78, 0xea, 0x32, 0x75, 0x3f, 0x36, 0x34, 0xfa, 0x93, 0x9d, 0xe3, 0xfd, 0x05, 0x4b, - 0x60, 0xc8, 0x47, 0xd0, 0x72, 0x83, 0x68, 0xec, 0xd9, 0xde, 0x79, 0xe8, 0x8c, 0x7c, 0x57, 0x5d, - 0x8b, 0xcb, 0xd3, 0x6b, 0x38, 0x1a, 0x7b, 0xbb, 0x12, 0xb7, 0xbf, 0x60, 0x35, 0xdd, 0xcc, 0x58, - 0x1c, 0x63, 0xe8, 0x0d, 0x64, 0x96, 0x98, 0x39, 0xc6, 0xfe, 0xee, 0x23, 0xb1, 0x3e, 0xe2, 0xc8, - 0x3e, 0x10, 0xe7, 0xcb, 0x71, 0x42, 0xed, 0x7e, 0x10, 0xf5, 0x6d, 0x6d, 0x58, 0x52, 0xe2, 0x3d, - 0x3d, 0x63, 0x4b, 0x50, 0x6c, 0x07, 0x51, 0x5f, 0xc9, 0x49, 0x5c, 0x8d, 0xce, 0x0c, 0x6c, 0xbb, - 0x0e, 0x55, 0x15, 0xca, 0xcc, 0x0a, 0x94, 0x84, 0xac, 0xcc, 0x37, 0xa1, 0x8c, 0xe2, 0x10, 0xf6, - 0x24, 0x8c, 0x5a, 0x27, 0x5b, 0x68, 0xe0, 0x7f, 0x5e, 0x82, 0xc2, 0xf1, 0x7d, 0x91, 0x30, 0xd3, - 0xd0, 0x8b, 0x23, 0x5f, 0x25, 0x2f, 0x75, 0x2b, 0x1d, 0x8b, 0x4a, 0x20, 0xd3, 0x08, 0xac, 0xa7, - 0x8d, 0xbf, 0xeb, 0x50, 0xe9, 0x8f, 0xdd, 0x33, 0xca, 0x55, 0x56, 0xa4, 0x46, 0x02, 0x1e, 0x27, - 0x74, 0xe0, 0xbf, 0x50, 0x86, 0xab, 0x46, 0x32, 0xe8, 0xcb, 0x68, 0xeb, 0x06, 0x0e, 0x93, 0xd9, - 0x75, 0x5d, 0x04, 0x7d, 0x04, 0xee, 0x08, 0x98, 0x48, 0x83, 0x18, 0x93, 0xf6, 0x5a, 0xb7, 0xc4, - 0x4f, 0x01, 0x71, 0xdc, 0x00, 0x85, 0x51, 0xb7, 0xc4, 0x4f, 0x11, 0xf7, 0x1d, 0xd7, 0xa5, 0x8c, - 0xe1, 0xcd, 0x52, 0x93, 0x5d, 0x3c, 0x09, 0x11, 0x97, 0xcb, 0x06, 0x2c, 0x32, 0xea, 0x26, 0x94, - 0xdb, 0x19, 0xaa, 0x3a, 0x52, 0x75, 0x24, 0x62, 0x2b, 0xa5, 0x5d, 0x87, 0xee, 0x20, 0x4a, 0x5c, - 0x6a, 0x0b, 0x61, 0xd8, 0x8c, 0x9f, 0x07, 0x54, 0xc5, 0xf1, 0x36, 0xc2, 0x8f, 0x1c, 0x3e, 0x3c, - 0x16, 0x50, 0x72, 0x1b, 0xda, 0x8c, 0x51, 0xfb, 0x6c, 0x84, 0xeb, 0x89, 0x18, 0x23, 0x43, 0x7b, - 0x83, 0x31, 0xfa, 0x78, 0x24, 0x16, 0x3b, 0xf0, 0x84, 0x8f, 0x27, 0x51, 0x40, 0x6d, 0x27, 0x91, - 0x1d, 0xc4, 0xba, 0x55, 0x15, 0xe3, 0xad, 0x44, 0xde, 0x66, 0x2f, 0x38, 0x4d, 0x42, 0x59, 0xef, - 0xb5, 0x10, 0x0b, 0x1a, 0x74, 0xe0, 0x91, 0x4d, 0x58, 0x8a, 0xfa, 0x3f, 0xa7, 0x2e, 0xb7, 0x45, - 0x9d, 0x96, 0xf6, 0x81, 0xda, 0xc8, 0xcd, 0xa2, 0x44, 0x3d, 0x89, 0xdc, 0x33, 0xdd, 0x04, 0x12, - 0xe2, 0xd4, 0x2e, 0x1e, 0x9d, 0x51, 0x19, 0xa7, 0x85, 0x38, 0x95, 0x1b, 0x0b, 0x98, 0xd0, 0x6b, - 0x9c, 0x44, 0x13, 0xdf, 0xa3, 0x09, 0xf6, 0xc7, 0xea, 0x56, 0x3a, 0x16, 0x59, 0x69, 0x9c, 0x44, - 0xa2, 0x14, 0x57, 0x5d, 0x30, 0x3d, 0x34, 0x7f, 0x6d, 0x40, 0xf1, 0x93, 0x9d, 0xe3, 0x97, 0x59, - 0x85, 0xd2, 0x7e, 0xe1, 0x12, 0xed, 0x17, 0xaf, 0xd6, 0x7e, 0x69, 0x8e, 0xf6, 0xdf, 0x85, 0x76, - 0x9c, 0x50, 0x8f, 0x0e, 0xfc, 0x90, 0x7a, 0xb6, 0x50, 0xbb, 0xb4, 0x91, 0xd6, 0x14, 0xba, 0xe5, - 0x06, 0xa2, 0x08, 0x73, 0x05, 0x20, 0xe4, 0xbe, 0x13, 0x30, 0x74, 0x1a, 0x65, 0x31, 0x9d, 0x0c, - 0x5c, 0xb8, 0x85, 0x39, 0x82, 0x2e, 0xfa, 0xcd, 0xce, 0x98, 0xf1, 0x68, 0x84, 0x59, 0x8e, 0xd8, - 0x25, 0x93, 0x67, 0xe9, 0xf4, 0xb3, 0x6e, 0xb5, 0xa6, 0x50, 0x41, 0x76, 0x0f, 0xae, 0xe5, 0xc9, - 0xec, 0x4c, 0x41, 0x5c, 0xb7, 0x96, 0x72, 0xd4, 0xc7, 0x88, 0x12, 0x61, 0xac, 0x3b, 0xeb, 0xa7, - 0xbf, 0x7b, 0x31, 0xbe, 0x0d, 0x4d, 0xc7, 0x75, 0xa3, 0x71, 0xc8, 0x6d, 0xbc, 0x40, 0xa4, 0x10, - 0x1b, 0x0a, 0xf6, 0x54, 0xdc, 0x23, 0x37, 0x01, 0xd8, 0xd0, 0x49, 0xa8, 0xcc, 0xce, 0xa4, 0xf0, - 0xea, 0x12, 0x22, 0xce, 0x3e, 0x75, 0x31, 0xe6, 0x9f, 0xe6, 0x5d, 0xec, 0xd8, 0x3f, 0x15, 0x0a, - 0xc8, 0x88, 0x86, 0xb9, 0x51, 0x4c, 0xb5, 0x87, 0x4d, 0xe1, 0xc7, 0x02, 0x4c, 0x3e, 0xbe, 0x20, - 0x6c, 0x98, 0x13, 0xd6, 0x32, 0xea, 0x99, 0x51, 0x83, 0xf9, 0x2b, 0x03, 0x2a, 0xdb, 0x52, 0x28, - 0xaf, 0x16, 0xa5, 0x8a, 0x97, 0x44, 0xa9, 0xd2, 0x25, 0x02, 0x2e, 0x5f, 0x2d, 0xe0, 0xca, 0x45, - 0x01, 0x8b, 0xb2, 0xad, 0x99, 0x0d, 0xfa, 0xe4, 0x4e, 0xba, 0x8b, 0xa1, 0x2a, 0x26, 0x9d, 0xa6, - 0x20, 0x34, 0xdd, 0xf5, 0x36, 0xb4, 0xb4, 0xff, 0x49, 0xd5, 0x48, 0xad, 0x37, 0x35, 0x10, 0x75, - 0xf3, 0x63, 0x28, 0x3b, 0x9c, 0x27, 0xba, 0xb2, 0xbd, 0x35, 0xef, 0x9a, 0xd9, 0xdc, 0x12, 0x14, - 0x7b, 0x21, 0x4f, 0xce, 0x2d, 0x49, 0xbd, 0xf2, 0x10, 0x60, 0x0a, 0x14, 0x61, 0x73, 0x6a, 0xd9, - 0xe2, 0x27, 0x59, 0x86, 0xf2, 0xc4, 0x09, 0xc6, 0x7a, 0x4f, 0x39, 0xf8, 0x83, 0xc2, 0x43, 0xc3, - 0x5c, 0x85, 0x92, 0xb8, 0x8e, 0xa4, 0x0c, 0x47, 0x11, 0xd7, 0xf5, 0xb8, 0x1a, 0x99, 0xff, 0x6c, - 0x40, 0x7b, 0xe6, 0x55, 0xe9, 0xb6, 0x7e, 0xf5, 0x31, 0xf2, 0x17, 0x6f, 0xee, 0xd1, 0xe7, 0xfb, - 0x15, 0x07, 0xaf, 0xf2, 0xd6, 0x32, 0xd3, 0xa2, 0x2f, 0xbf, 0x52, 0x8b, 0xde, 0xbc, 0x2b, 0x6a, - 0x76, 0xea, 0x84, 0xd3, 0xea, 0x26, 0x97, 0x34, 0x1a, 0xf9, 0xa4, 0xd1, 0x3c, 0x82, 0x4e, 0x4a, - 0xfe, 0x3a, 0xc7, 0xee, 0x41, 0x95, 0x8d, 0xd1, 0x57, 0xf0, 0xd0, 0x35, 0x4b, 0x0f, 0xcd, 0x87, - 0xd0, 0x56, 0x2f, 0x6f, 0x9a, 0x81, 0x3b, 0xd0, 0x61, 0xce, 0x84, 0xda, 0x3c, 0xb2, 0xb3, 0xf9, - 0x64, 0xcd, 0x6a, 0x09, 0xf0, 0x49, 0xa4, 0x62, 0x88, 0xf9, 0xb7, 0x06, 0x74, 0xd2, 0xa9, 0xaf, - 0xa9, 0x83, 0xe9, 0x09, 0x0b, 0x33, 0x69, 0xf1, 0x0f, 0x81, 0xb8, 0x51, 0x10, 0x88, 0x4b, 0x07, - 0x9f, 0xae, 0x30, 0x3e, 0xa8, 0x24, 0xb4, 0xab, 0x30, 0x42, 0xec, 0x3b, 0x02, 0x2e, 0x2e, 0xd6, - 0x1c, 0x35, 0x76, 0x8d, 0x65, 0xe5, 0xd6, 0xc9, 0x10, 0x1f, 0xfb, 0x5f, 0x52, 0x73, 0x09, 0x16, - 0x77, 0x86, 0xd4, 0x3d, 0xdb, 0xf2, 0x46, 0x7e, 0xa8, 0x0e, 0x6b, 0x7e, 0x65, 0x00, 0xc9, 0x42, - 0x5f, 0xe7, 0x1c, 0xaf, 0xfa, 0x1c, 0xb9, 0x01, 0x8b, 0x43, 0x87, 0xd9, 0x31, 0x0d, 0x3d, 0x3f, - 0x3c, 0xb5, 0x1d, 0xb1, 0x13, 0x9e, 0xa8, 0x66, 0x75, 0x86, 0x0e, 0x3b, 0x92, 0x70, 0x64, 0xc0, - 0xfc, 0x37, 0x03, 0x6e, 0xee, 0xa9, 0x1b, 0x58, 0x09, 0xda, 0xa2, 0x42, 0x0d, 0xa9, 0x7a, 0xe6, - 0x54, 0x88, 0xc6, 0x6b, 0x55, 0x88, 0xb7, 0xa0, 0xa1, 0x6e, 0xf5, 0x8c, 0xbb, 0x83, 0x04, 0x3d, - 0x55, 0x09, 0x7d, 0x22, 0xf7, 0x94, 0x14, 0x32, 0x7a, 0x35, 0x14, 0x0c, 0x49, 0xde, 0x85, 0x36, - 0xd6, 0x26, 0x21, 0xb7, 0x03, 0x1a, 0x9e, 0xf2, 0xa1, 0x12, 0x7a, 0x4b, 0x41, 0x9f, 0x20, 0xd0, - 0x5c, 0x83, 0xd5, 0xcb, 0x0e, 0x23, 0x05, 0x6d, 0xfe, 0x95, 0x01, 0x2b, 0x33, 0x24, 0xc7, 0xce, - 0xe4, 0x77, 0x78, 0xd8, 0x8b, 0x27, 0x29, 0xce, 0x3b, 0xc9, 0x4d, 0x78, 0x73, 0x2e, 0x9b, 0xea, - 0x18, 0xbf, 0x54, 0xef, 0x0f, 0x9e, 0xc3, 0x1d, 0xb2, 0xa1, 0xa3, 0x85, 0x91, 0x6f, 0x03, 0xee, - 0xaa, 0x77, 0x04, 0xac, 0x70, 0x55, 0xd4, 0x78, 0x00, 0x0d, 0x34, 0xdc, 0xd3, 0x24, 0x1a, 0xc7, - 0xba, 0xe9, 0x7f, 0x6d, 0x76, 0xc6, 0x27, 0x02, 0x6b, 0xe1, 0x5b, 0x2e, 0xfe, 0x64, 0xb2, 0x74, - 0x13, 0x1a, 0x4a, 0x7b, 0xa9, 0x58, 0xd5, 0x09, 0x0f, 0xba, 0x05, 0x42, 0x55, 0x51, 0x30, 0xa1, - 0x99, 0xfa, 0x0d, 0x34, 0x48, 0xd6, 0x76, 0x23, 0xe7, 0x85, 0xc0, 0x49, 0xa5, 0x95, 0x47, 0xce, - 0x0b, 0x05, 0xf6, 0x43, 0x01, 0x2e, 0x2b, 0xb0, 0x1f, 0x9e, 0x08, 0x0e, 0xf1, 0x43, 0x86, 0x34, - 0xb0, 0x55, 0x55, 0x60, 0xcb, 0xbc, 0x69, 0xea, 0xc0, 0xd6, 0x18, 0x4d, 0x07, 0xe6, 0x7f, 0x18, - 0xd0, 0xca, 0xf1, 0x3f, 0x2f, 0xd9, 0x27, 0x3f, 0x85, 0xce, 0xf4, 0xf9, 0x45, 0x76, 0x05, 0x0a, - 0x57, 0x48, 0xad, 0x95, 0xbe, 0xc5, 0x60, 0xc9, 0x3b, 0x65, 0xb9, 0x98, 0x65, 0xf9, 0x92, 0x03, - 0xde, 0x81, 0x8e, 0xa0, 0xce, 0x0a, 0x47, 0x9e, 0xb4, 0x25, 0x5d, 0x5f, 0xcb, 0xe7, 0x3a, 0x54, - 0x94, 0x29, 0xc8, 0x37, 0x30, 0x35, 0x32, 0xff, 0xa5, 0x02, 0xcd, 0x2c, 0x37, 0x99, 0x07, 0x09, - 0x23, 0xf7, 0x20, 0xa1, 0x0f, 0x5a, 0xc8, 0x1c, 0x74, 0x03, 0x16, 0xc3, 0xf1, 0xa8, 0x4f, 0x13, - 0x3b, 0x1a, 0xd8, 0x34, 0xe4, 0x89, 0x4f, 0x25, 0xd7, 0x45, 0xab, 0x23, 0x11, 0xcf, 0x06, 0x7b, - 0x12, 0x9c, 0x39, 0x56, 0x69, 0xfe, 0xb1, 0xca, 0xd9, 0x63, 0xcd, 0xe8, 0xbb, 0x72, 0x41, 0xdf, - 0x6f, 0x42, 0x5d, 0x75, 0x50, 0x7d, 0x0f, 0xd5, 0x57, 0xb4, 0x6a, 0x12, 0x30, 0xdb, 0x2d, 0xab, - 0x5d, 0x7e, 0x21, 0xd6, 0xe7, 0xb4, 0x9e, 0xa7, 0x0f, 0x76, 0xef, 0x40, 0x09, 0x8b, 0xfa, 0x06, - 0x1a, 0x47, 0x37, 0x7b, 0x3f, 0x62, 0x35, 0x8f, 0x58, 0xb1, 0x9c, 0xcf, 0x6c, 0x61, 0x24, 0x58, - 0x8a, 0xd4, 0xac, 0x8a, 0xcf, 0xf0, 0x63, 0x8a, 0x37, 0xa0, 0x26, 0x5b, 0x08, 0xaa, 0x0c, 0x29, - 0x5a, 0x55, 0x1c, 0x1f, 0x78, 0x19, 0x65, 0xb4, 0xb3, 0xca, 0x20, 0xbf, 0x0f, 0x2b, 0x42, 0x46, - 0x7d, 0x7a, 0x8a, 0x92, 0xb2, 0xfd, 0xd0, 0xf6, 0xe8, 0xc0, 0x19, 0x07, 0xdc, 0x76, 0x07, 0x58, - 0x78, 0x94, 0xac, 0x6b, 0x23, 0x3f, 0xdc, 0x16, 0x04, 0x27, 0xec, 0x20, 0xdc, 0x95, 0xd8, 0x9d, - 0x01, 0xc6, 0x37, 0x7c, 0xee, 0x8f, 0x06, 0x03, 0x46, 0x39, 0x56, 0x21, 0x25, 0xab, 0x81, 0xb0, - 0x67, 0x08, 0x9a, 0x92, 0xa8, 0xbd, 0x17, 0x33, 0x24, 0x32, 0x22, 0xcc, 0xed, 0x69, 0x90, 0xd7, - 0xec, 0x69, 0x64, 0x1f, 0x85, 0x96, 0x66, 0x1e, 0x85, 0xd6, 0xa1, 0xab, 0xb4, 0x36, 0xd5, 0xcf, - 0x32, 0x2a, 0xa1, 0x2d, 0xe1, 0xc7, 0x5a, 0x4b, 0xef, 0x40, 0x5b, 0x77, 0xc8, 0x95, 0xb2, 0xae, - 0x21, 0x9d, 0xea, 0x9b, 0xef, 0x49, 0x95, 0x3d, 0x98, 0xf6, 0xd1, 0xe3, 0xc8, 0x1d, 0xaa, 0xa7, - 0xf8, 0xa5, 0xfc, 0x9d, 0xb5, 0x27, 0x50, 0x69, 0x2b, 0x5d, 0x0c, 0x88, 0x05, 0xcb, 0x18, 0xa1, - 0x32, 0x29, 0x33, 0xba, 0xe9, 0x0d, 0x8c, 0xc3, 0x6b, 0xf9, 0x16, 0xae, 0x50, 0xf8, 0xb4, 0x17, - 0x8c, 0x2e, 0x4b, 0x06, 0x17, 0x60, 0xe6, 0xd7, 0x06, 0x2c, 0x66, 0xbb, 0x35, 0x7b, 0x3a, 0x2f, - 0x18, 0x3a, 0x71, 0x4c, 0x43, 0xdb, 0xd1, 0xef, 0x15, 0x35, 0x09, 0xd8, 0xc2, 0xa6, 0x2f, 0xde, - 0xba, 0xb6, 0x1b, 0x79, 0x3a, 0x8e, 0xd7, 0x11, 0xb2, 0x13, 0x79, 0xe2, 0xc2, 0x96, 0x5f, 0x5f, - 0xd9, 0x23, 0xca, 0x98, 0x48, 0x59, 0xe4, 0xa5, 0xd5, 0x44, 0xe0, 0xa1, 0x84, 0xe5, 0x82, 0xa6, - 0x7e, 0x0d, 0x94, 0x41, 0xd3, 0x7c, 0x00, 0xa5, 0xe3, 0xd8, 0xc1, 0xdc, 0x5c, 0x59, 0x85, 0x64, - 0x40, 0x8d, 0x32, 0x66, 0x58, 0xc8, 0xc5, 0x84, 0x3d, 0x68, 0x88, 0x79, 0xec, 0xd9, 0x40, 0x3f, - 0xe5, 0x5f, 0x08, 0x71, 0x26, 0x94, 0x99, 0x20, 0x99, 0x7d, 0x5c, 0x16, 0xf3, 0x2c, 0x89, 0x32, - 0xbf, 0x2e, 0x42, 0xef, 0x49, 0x74, 0x8a, 0xb9, 0xca, 0xb8, 0x2f, 0xcc, 0xc4, 0x71, 0x55, 0x37, - 0xdd, 0x49, 0x5f, 0xc3, 0x8d, 0xfc, 0x6b, 0xf8, 0xd4, 0xa7, 0x25, 0x4b, 0x53, 0x9f, 0x9e, 0x79, - 0x18, 0x22, 0x6b, 0xd0, 0xf4, 0xc3, 0x78, 0xcc, 0xed, 0x5c, 0x54, 0x04, 0x84, 0x1d, 0x62, 0x0c, - 0x99, 0x52, 0x64, 0x6f, 0x00, 0x45, 0x81, 0xc1, 0xe7, 0x0e, 0x74, 0x14, 0x5b, 0xf6, 0x20, 0x89, - 0x46, 0xd3, 0x48, 0xd3, 0x52, 0xe0, 0x47, 0x49, 0x34, 0x3a, 0xc1, 0xef, 0xc4, 0x34, 0xdd, 0x38, - 0xe4, 0x7e, 0x60, 0xab, 0xd7, 0xc6, 0x92, 0xd5, 0x56, 0xf0, 0xcf, 0x04, 0xf8, 0x84, 0x89, 0x68, - 0x20, 0x76, 0x9b, 0xc6, 0x1d, 0x11, 0xf4, 0x54, 0xd4, 0x11, 0x8c, 0x66, 0xa2, 0xce, 0xc8, 0x79, - 0x21, 0x10, 0x6b, 0xf8, 0xdd, 0x18, 0x5c, 0x12, 0x63, 0x0a, 0xfc, 0x3c, 0x17, 0x48, 0x1a, 0xf9, - 0x40, 0x72, 0x17, 0xaa, 0x2c, 0x1a, 0x27, 0x2e, 0x65, 0xbd, 0x66, 0xfe, 0x69, 0x3d, 0xa3, 0x40, - 0x4b, 0xd3, 0x98, 0xff, 0x60, 0xc0, 0xf2, 0x3c, 0x8d, 0x90, 0x0f, 0xa1, 0x84, 0x11, 0xcc, 0x50, - 0xf6, 0x9f, 0xb6, 0xf7, 0xe6, 0x6b, 0xcf, 0x42, 0x6a, 0x72, 0x17, 0x1a, 0x8c, 0x71, 0x3b, 0x1a, - 0xf3, 0x78, 0xcc, 0xe7, 0x7f, 0x67, 0x00, 0x8c, 0xf1, 0x67, 0x12, 0x4f, 0xb6, 0x61, 0x51, 0xa9, - 0x17, 0xef, 0xde, 0xa1, 0x1f, 0x72, 0x5d, 0x7b, 0xa5, 0x99, 0x8f, 0xf4, 0x58, 0xb1, 0xc7, 0xbe, - 0x1f, 0x72, 0xab, 0x93, 0xe4, 0xc6, 0xcc, 0xfc, 0x53, 0x68, 0xe7, 0x49, 0xbe, 0xe7, 0x33, 0xe3, - 0x6c, 0xe0, 0x90, 0x3d, 0xcb, 0x97, 0x06, 0x0e, 0xf3, 0x4f, 0xe0, 0xda, 0x3c, 0xa1, 0x30, 0xb2, - 0x0b, 0x6d, 0x96, 0x83, 0xa8, 0x44, 0xe9, 0xad, 0xab, 0x64, 0x69, 0xcd, 0xcc, 0x31, 0xbf, 0x2e, - 0xc0, 0xa2, 0x22, 0xdc, 0x99, 0x6a, 0x07, 0xcb, 0x07, 0x3d, 0x4a, 0x2d, 0xd5, 0xd0, 0xe5, 0x83, - 0xc6, 0x28, 0x63, 0xdd, 0x84, 0xa5, 0x0c, 0x75, 0x6a, 0xaf, 0xd2, 0x9f, 0x16, 0xa7, 0x28, 0x6d, - 0xb2, 0xba, 0xfd, 0x5d, 0xcc, 0xb4, 0xbf, 0x45, 0x0c, 0x8f, 0x46, 0x23, 0x1a, 0x72, 0xdd, 0xf9, - 0x48, 0xc7, 0xe4, 0x2d, 0xa8, 0x3b, 0x09, 0xf7, 0x07, 0x8e, 0xcb, 0x75, 0x6f, 0x71, 0x0a, 0x10, - 0xa9, 0x67, 0x3a, 0xb0, 0x87, 0x0e, 0xd3, 0xf9, 0x46, 0x2b, 0x85, 0xee, 0x3b, 0x6c, 0x48, 0x7e, - 0x00, 0x9d, 0x53, 0x1a, 0xd2, 0xc4, 0xe1, 0xd4, 0x53, 0x9f, 0xa9, 0xc8, 0xce, 0x63, 0x3b, 0x05, - 0x63, 0x46, 0x64, 0xfe, 0x93, 0x21, 0x93, 0xd0, 0x3d, 0xcf, 0xe7, 0x73, 0x23, 0xd1, 0x3d, 0xb8, - 0xe6, 0xd1, 0x80, 0x72, 0x6a, 0xa7, 0xdf, 0x79, 0x4c, 0x3f, 0x7b, 0xa9, 0x5b, 0x4b, 0x12, 0x79, - 0xa4, 0x70, 0xf2, 0x93, 0x97, 0xc7, 0xb0, 0xac, 0xe6, 0x04, 0xd1, 0x69, 0x66, 0x8a, 0x34, 0xc6, - 0x37, 0xd2, 0x2c, 0x0d, 0x69, 0xb2, 0x9e, 0x44, 0xe4, 0xb4, 0x27, 0x72, 0x96, 0x5c, 0xec, 0x36, - 0xb4, 0x3c, 0xca, 0x78, 0x32, 0x76, 0xb9, 0xcd, 0x68, 0x30, 0x50, 0x1f, 0x5b, 0x36, 0x35, 0xf0, - 0x98, 0x06, 0x03, 0xf3, 0x39, 0x2c, 0x5e, 0x58, 0xed, 0xfb, 0x06, 0x56, 0x91, 0x76, 0x3d, 0x1f, - 0x46, 0xf2, 0x71, 0x82, 0xe6, 0x33, 0xfc, 0x0e, 0x22, 0xc4, 0xea, 0x2a, 0xc7, 0xff, 0x55, 0x01, - 0xea, 0x87, 0xfe, 0x69, 0x82, 0x5f, 0xb6, 0xe1, 0xdb, 0x79, 0x42, 0x1d, 0xae, 0x9e, 0x9c, 0xeb, - 0x96, 0x1e, 0x92, 0x7b, 0xd3, 0x6f, 0x32, 0xe5, 0x23, 0x46, 0xda, 0x38, 0x4a, 0x67, 0xeb, 0x8c, - 0x38, 0xfd, 0x5a, 0xf3, 0x2e, 0xd4, 0xa9, 0xe7, 0x73, 0x5b, 0x85, 0x8e, 0xe2, 0xec, 0x67, 0x81, - 0x42, 0x67, 0x56, 0x4d, 0x90, 0x60, 0xc8, 0x7f, 0x1b, 0x9a, 0x3c, 0x19, 0x87, 0x2e, 0xea, 0x9c, - 0x47, 0xca, 0x22, 0x1b, 0x29, 0xec, 0x24, 0x22, 0x1f, 0x41, 0x23, 0xeb, 0x42, 0x33, 0xfa, 0xb8, - 0xe0, 0x19, 0x56, 0x96, 0x5a, 0xd8, 0x54, 0xaa, 0x88, 0xb4, 0x33, 0x2e, 0x6c, 0xa0, 0xad, 0xc1, - 0x47, 0x08, 0xdd, 0x78, 0x0a, 0x6b, 0x2f, 0xfb, 0x90, 0x98, 0x74, 0xa0, 0xf1, 0x19, 0xbe, 0xa2, - 0xe0, 0xf7, 0xb2, 0xdd, 0x05, 0xd2, 0x82, 0xfa, 0xcf, 0x1c, 0x9f, 0x6f, 0xc5, 0x71, 0x70, 0xde, - 0x35, 0x08, 0x40, 0xe5, 0x91, 0x1f, 0xfa, 0x6c, 0xd8, 0x2d, 0x6c, 0x7c, 0x0a, 0xab, 0x57, 0x7f, - 0xe8, 0x4b, 0x16, 0xa1, 0x95, 0x4e, 0xde, 0x8d, 0x42, 0xb1, 0xde, 0x35, 0x58, 0xcc, 0x6c, 0x20, - 0x3f, 0x89, 0xec, 0x1a, 0x1b, 0x7f, 0x08, 0x9d, 0x99, 0x0c, 0x8b, 0x34, 0xa0, 0xfa, 0xd9, 0xd3, - 0xc7, 0x4f, 0x9f, 0xfd, 0xec, 0x69, 0x77, 0x81, 0x54, 0xa1, 0xf8, 0xe4, 0x8b, 0x0f, 0x25, 0x03, - 0xc7, 0x4f, 0xb7, 0x8e, 0x8e, 0xfe, 0xb8, 0x5b, 0x20, 0x35, 0x28, 0x7d, 0x71, 0x7c, 0xb2, 0xdb, - 0x2d, 0x6e, 0xac, 0xa5, 0xdf, 0xf3, 0x8a, 0x04, 0xa2, 0x06, 0xa5, 0xe3, 0x9d, 0x2d, 0x31, 0xad, - 0x06, 0xa5, 0x47, 0x07, 0x4f, 0xf6, 0xba, 0xc6, 0xc6, 0x4d, 0x68, 0x64, 0xca, 0x1b, 0x52, 0x81, - 0xc2, 0xe7, 0x1f, 0x74, 0x17, 0xf0, 0xef, 0xbd, 0xae, 0xb1, 0x71, 0x0b, 0x6a, 0xfa, 0xf2, 0x11, - 0x5b, 0x48, 0xa3, 0x95, 0xfb, 0x1e, 0x8d, 0x05, 0x83, 0x26, 0x74, 0x67, 0x2d, 0x42, 0x4c, 0x3e, - 0x7c, 0x5f, 0x2e, 0x72, 0xf8, 0x41, 0xd7, 0xb8, 0xf7, 0xbf, 0x05, 0xa8, 0x48, 0x36, 0xc8, 0x47, - 0xa0, 0x3e, 0x2c, 0x27, 0xd7, 0x66, 0xbe, 0xfa, 0x92, 0xc2, 0x5e, 0xb9, 0x3e, 0x0b, 0x56, 0xd5, - 0xe7, 0xc2, 0xfb, 0x06, 0x39, 0x82, 0x25, 0xec, 0x63, 0x64, 0xbb, 0x09, 0xcf, 0x62, 0x92, 0x1a, - 0xc4, 0x85, 0xd6, 0xc7, 0xca, 0xca, 0x3c, 0x54, 0x66, 0xc5, 0x21, 0x5c, 0x9b, 0xab, 0x2a, 0xf2, - 0xce, 0xab, 0x7c, 0x62, 0xbe, 0xf2, 0xee, 0x4b, 0xa8, 0xe4, 0x4e, 0xeb, 0xc6, 0xfb, 0x06, 0xf9, - 0x29, 0x54, 0x63, 0x49, 0x44, 0xae, 0xcf, 0xcc, 0xd2, 0xab, 0xdd, 0xb8, 0x00, 0xd7, 0x9c, 0x8a, - 0xd9, 0xae, 0xec, 0x89, 0x91, 0xcc, 0x57, 0x28, 0xd9, 0x9e, 0xda, 0x74, 0xf6, 0x4c, 0xf3, 0xcc, - 0x5c, 0xb8, 0xf7, 0x8f, 0x06, 0x74, 0x66, 0x2a, 0x7b, 0xf2, 0x05, 0x54, 0x55, 0xb3, 0x83, 0xa4, - 0xa7, 0xb8, 0xb2, 0x29, 0xb3, 0x72, 0xe7, 0x65, 0x64, 0x29, 0xb7, 0x7f, 0x04, 0x25, 0xe6, 0x4c, - 0x28, 0x31, 0x2f, 0x99, 0x91, 0xe9, 0x7e, 0xac, 0xdc, 0xbe, 0x92, 0x46, 0x2f, 0xb9, 0x7d, 0xef, - 0x37, 0x7f, 0x5d, 0x33, 0x7e, 0xfd, 0xed, 0xaa, 0xf1, 0xcd, 0xb7, 0xab, 0xc6, 0x7f, 0x7d, 0xbb, - 0x6a, 0xfc, 0xf2, 0xbb, 0xd5, 0x85, 0xbf, 0xfc, 0x6e, 0x75, 0xe1, 0x9b, 0xef, 0x56, 0x17, 0x7e, - 0xf3, 0xdd, 0xea, 0x02, 0x74, 0xa3, 0xe4, 0x74, 0x93, 0xfb, 0x67, 0x93, 0xcd, 0xb3, 0x09, 0xfe, - 0x4f, 0x41, 0xbf, 0x82, 0x7f, 0xee, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a, 0xa7, 0x03, - 0x23, 0xd7, 0x30, 0x00, 0x00, + // 4710 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7b, 0xcd, 0x6f, 0x1c, 0x47, + 0x76, 0x38, 0x7b, 0xbe, 0xe7, 0xcd, 0x27, 0x8b, 0x94, 0x34, 0xa6, 0x2d, 0x8a, 0x6e, 0x59, 0x5a, + 0xfe, 0xb8, 0x2b, 0xae, 0x56, 0xf2, 0x6a, 0xf5, 0x8b, 0x37, 0x58, 0xf0, 0x4b, 0x26, 0x57, 0xa2, + 0xc4, 0x34, 0x69, 0x2f, 0x62, 0x20, 0xe8, 0xf4, 0x74, 0xd7, 0x90, 0xbd, 0xec, 0xe9, 0xee, 0xed, + 0xaa, 0xa1, 0x44, 0x1f, 0x72, 0xc8, 0xdd, 0xf0, 0x26, 0xc8, 0x21, 0xff, 0x40, 0x80, 0x1c, 0x12, + 0x20, 0xd7, 0x9c, 0x92, 0x43, 0x82, 0x6c, 0x90, 0x00, 0xf1, 0x21, 0x07, 0x1f, 0x03, 0x1b, 0xc9, + 0x7f, 0x11, 0x20, 0xa8, 0x57, 0x55, 0xfd, 0x31, 0x1c, 0x52, 0x92, 0x13, 0xec, 0x89, 0x53, 0xef, + 0xbd, 0xaa, 0x7e, 0xf5, 0xbe, 0xea, 0xbd, 0x57, 0x45, 0x80, 0x61, 0x12, 0x0f, 0xd7, 0xe3, 0x24, + 0xe2, 0x11, 0xa9, 0x0d, 0x1d, 0xf7, 0x74, 0x12, 0x2f, 0x75, 0x4e, 0xcf, 0x92, 0xd8, 0xd5, 0xe0, + 0xa5, 0x0e, 0x4d, 0x92, 0x28, 0xa5, 0x5a, 0x6a, 0x8f, 0x29, 0x77, 0xd2, 0x11, 0xa1, 0xa1, 0x9b, + 0x9c, 0xc7, 0xdc, 0x8f, 0xc2, 0x14, 0xb6, 0x78, 0x1c, 0x1d, 0x47, 0xf8, 0xf3, 0x87, 0xe2, 0x97, + 0x82, 0xf6, 0x92, 0x09, 0xe3, 0xf8, 0x53, 0x02, 0xcc, 0xbf, 0x32, 0xe0, 0xbd, 0x83, 0x84, 0xc6, + 0x4e, 0x42, 0x0f, 0x43, 0x27, 0x66, 0x27, 0x11, 0xdf, 0x44, 0x06, 0x2c, 0xfa, 0xab, 0x09, 0x65, + 0x9c, 0x3c, 0x86, 0x12, 0x3f, 0x1f, 0x18, 0x2b, 0xc6, 0x6a, 0xf7, 0xc1, 0xea, 0xba, 0x64, 0x6e, + 0xfd, 0xaa, 0x19, 0x47, 0xe7, 0x31, 0xb5, 0x4a, 0xfc, 0x9c, 0xac, 0x42, 0x3d, 0xa1, 0xc7, 0x7e, + 0x14, 0xb2, 0x41, 0x69, 0xa5, 0xbc, 0xda, 0x7a, 0xd0, 0x5d, 0x57, 0x5c, 0x5b, 0x08, 0xb6, 0x34, + 0x9a, 0xac, 0x42, 0x3f, 0xa0, 0x0e, 0xa3, 0xb6, 0x1f, 0xda, 0x8c, 0xba, 0x51, 0xe8, 0xb1, 0x41, + 0x79, 0xc5, 0x58, 0xad, 0x58, 0x5d, 0x84, 0xef, 0x85, 0x87, 0x12, 0x6a, 0xfe, 0xbb, 0x01, 0x37, + 0x2f, 0xf9, 0x38, 0x8b, 0xa3, 0x90, 0x51, 0xf2, 0x28, 0xc7, 0xef, 0xdd, 0x2b, 0xf9, 0xdd, 0x39, + 0xa3, 0x61, 0xc6, 0xed, 0x5d, 0xa8, 0x49, 0x76, 0x06, 0xa5, 0x15, 0x63, 0x06, 0xb3, 0x0a, 0x4b, + 0x3e, 0x80, 0x2a, 0xaa, 0x02, 0x19, 0x14, 0x64, 0x5a, 0x31, 0x3b, 0xe2, 0xaf, 0x25, 0x91, 0xe4, + 0x1e, 0x2c, 0x04, 0x0e, 0xe3, 0xb6, 0xda, 0x16, 0xb3, 0xcf, 0x9c, 0xc0, 0xf7, 0x06, 0x95, 0x15, + 0x63, 0xb5, 0x61, 0xf5, 0x05, 0xea, 0x19, 0x6e, 0x8c, 0x7d, 0x2a, 0xe0, 0xe6, 0x7f, 0xd6, 0x01, + 0x24, 0x53, 0xfb, 0x94, 0x3b, 0xe4, 0x26, 0x80, 0x1b, 0x4c, 0x18, 0xa7, 0x89, 0xed, 0x7b, 0xb8, + 0x97, 0x8a, 0xd5, 0x54, 0x90, 0x3d, 0x8f, 0x7c, 0x0f, 0x7a, 0x1a, 0x7d, 0x46, 0x13, 0xa6, 0x79, + 0x6e, 0x5a, 0x5d, 0x05, 0xfe, 0x54, 0x42, 0xc5, 0x3a, 0xc3, 0x8c, 0xa6, 0x85, 0x34, 0xcd, 0x61, + 0x8a, 0x1e, 0x40, 0x5d, 0xe3, 0xda, 0x2b, 0xc6, 0x6a, 0xd5, 0xd2, 0x43, 0x62, 0x42, 0x75, 0xe4, + 0x07, 0x94, 0x0d, 0x2a, 0xa8, 0xb8, 0xb6, 0x96, 0xe3, 0x13, 0x3f, 0xa0, 0x96, 0x44, 0x91, 0x1f, + 0x02, 0x88, 0x1f, 0xb6, 0x1f, 0x7a, 0xf4, 0xd5, 0xa0, 0x83, 0xd2, 0xe8, 0x6b, 0x42, 0xb1, 0x0d, + 0x24, 0x6e, 0x0a, 0x9a, 0x3d, 0x41, 0x42, 0x6e, 0x43, 0x87, 0x71, 0x27, 0xe1, 0x29, 0x43, 0x55, + 0xdc, 0x58, 0x1b, 0x81, 0x9a, 0xa7, 0x5b, 0xd0, 0xa2, 0xa1, 0x97, 0x92, 0xd4, 0x90, 0x04, 0x68, + 0xe8, 0x69, 0x82, 0x55, 0xa8, 0x33, 0xf7, 0x84, 0x8e, 0x1d, 0x36, 0xa8, 0x2b, 0xab, 0x52, 0xdf, + 0x3c, 0x44, 0xb0, 0xa5, 0xd1, 0xe4, 0x21, 0xb4, 0xe5, 0x4f, 0xc5, 0x62, 0xf7, 0x12, 0x16, 0x5b, + 0x92, 0x4a, 0x32, 0xb9, 0x04, 0x4d, 0x9f, 0xd9, 0x89, 0xf3, 0xd2, 0x3e, 0x3d, 0x1b, 0x34, 0x50, + 0x5d, 0x75, 0x9f, 0x59, 0xce, 0xcb, 0xa7, 0x67, 0x62, 0xc7, 0x02, 0x91, 0x38, 0xe1, 0x31, 0x65, + 0x83, 0x26, 0x7e, 0x3d, 0x5d, 0xce, 0x72, 0x5e, 0x5a, 0x02, 0x61, 0x35, 0x13, 0xf5, 0x8b, 0x91, + 0xc7, 0xd0, 0x4b, 0x27, 0x28, 0x26, 0x7a, 0x97, 0x30, 0xd1, 0xd1, 0xb3, 0x24, 0x1b, 0x04, 0x2a, + 0x9e, 0x17, 0xb0, 0x01, 0xac, 0x18, 0xab, 0x6d, 0x0b, 0x7f, 0x93, 0x1f, 0x41, 0xcb, 0xf3, 0x02, + 0xb9, 0x0e, 0x65, 0x83, 0xfe, 0x25, 0x2b, 0x81, 0xe7, 0x05, 0x7b, 0x92, 0x46, 0x88, 0x5c, 0xa2, + 0xed, 0x84, 0xb2, 0x49, 0xc0, 0x07, 0xf3, 0x68, 0x03, 0xed, 0xa1, 0xf6, 0x99, 0x49, 0xc0, 0xc9, + 0x87, 0xd0, 0x72, 0x62, 0x3f, 0x15, 0x39, 0x41, 0xd7, 0x59, 0x58, 0xd7, 0xf1, 0x67, 0xe3, 0x60, + 0x4f, 0xc9, 0xde, 0x02, 0x27, 0xf6, 0xb5, 0x1e, 0x1e, 0x42, 0x23, 0x8e, 0x02, 0xdf, 0xf5, 0x29, + 0x1b, 0x2c, 0xa0, 0x28, 0x6e, 0xa4, 0xde, 0x16, 0x38, 0x2e, 0x1d, 0xd3, 0x90, 0x1f, 0x08, 0x82, + 0x73, 0x2b, 0x25, 0x24, 0x1f, 0xc2, 0xf5, 0x90, 0xbe, 0xb4, 0xdd, 0x28, 0x08, 0x1c, 0x11, 0xad, + 0x98, 0x4d, 0x43, 0x67, 0x18, 0x50, 0x6f, 0xb0, 0x88, 0x8c, 0x2d, 0x86, 0xf4, 0xe5, 0x56, 0x8a, + 0xdc, 0x91, 0x38, 0xa5, 0x13, 0xfe, 0x2a, 0x14, 0x3a, 0xb9, 0xa6, 0x75, 0x72, 0xf4, 0x2a, 0x7c, + 0x7a, 0x46, 0xd6, 0xa0, 0xee, 0x0d, 0xed, 0xb1, 0x13, 0xb3, 0xc1, 0x75, 0xe4, 0x62, 0x3e, 0xe5, + 0xc2, 0xe7, 0xc9, 0xf6, 0xe6, 0xbe, 0x13, 0x5b, 0x35, 0x6f, 0xb8, 0xef, 0xc4, 0x8c, 0xdc, 0x85, + 0xca, 0x38, 0xf2, 0xe8, 0xe0, 0x06, 0xee, 0x90, 0x68, 0x42, 0xe5, 0x78, 0x91, 0x47, 0x2d, 0xc4, + 0x93, 0xef, 0x43, 0x4d, 0xe9, 0x78, 0x80, 0x4b, 0x2e, 0x14, 0x29, 0xa5, 0x9a, 0x15, 0x89, 0x30, + 0x58, 0x25, 0x62, 0xe6, 0x7f, 0x4e, 0x07, 0xef, 0x48, 0x83, 0x95, 0xa0, 0x43, 0xff, 0x73, 0xfa, + 0xf3, 0x4a, 0xa3, 0xdc, 0xaf, 0x58, 0x95, 0xd8, 0xe1, 0x27, 0xe6, 0x31, 0xb4, 0x72, 0x6b, 0x90, + 0x77, 0xa1, 0x29, 0x3d, 0xe2, 0x94, 0xca, 0x90, 0xd5, 0xb6, 0x1a, 0x08, 0x78, 0x4a, 0xcf, 0xc9, + 0x0d, 0xa8, 0x0b, 0x4f, 0x10, 0xa8, 0x12, 0xa2, 0x6a, 0x34, 0xf4, 0x04, 0x22, 0x75, 0xce, 0xf2, + 0xa5, 0xce, 0x69, 0xfe, 0x73, 0x09, 0x2a, 0x62, 0x2c, 0x0c, 0x29, 0x74, 0xc6, 0x14, 0x57, 0x6f, + 0x5a, 0xf8, 0x9b, 0x5c, 0x87, 0x1a, 0x3b, 0x71, 0x1e, 0xfc, 0xf8, 0x91, 0x5e, 0x58, 0x8e, 0x8a, + 0xec, 0x94, 0x2f, 0x67, 0xa7, 0x52, 0x60, 0xe7, 0xff, 0xc6, 0xad, 0x97, 0xa0, 0xe1, 0x26, 0xee, + 0xa3, 0x0f, 0x5f, 0x45, 0xc9, 0xa0, 0x8e, 0xd8, 0x74, 0x2c, 0xf8, 0xe2, 0x11, 0x77, 0x02, 0xfb, + 0xf4, 0x8c, 0xa1, 0x4f, 0x56, 0xac, 0x06, 0x02, 0x9e, 0x9e, 0xa1, 0xfc, 0x25, 0x72, 0x78, 0xce, + 0xd1, 0x2b, 0x71, 0x65, 0x04, 0x6d, 0x0a, 0x08, 0xe9, 0x42, 0xc9, 0x1d, 0xa1, 0x23, 0x35, 0xad, + 0x92, 0x3b, 0x12, 0x12, 0x41, 0x4d, 0xb5, 0x90, 0x12, 0x7f, 0x8b, 0x2f, 0xb8, 0x7e, 0x7c, 0x22, + 0xe2, 0xed, 0x19, 0xc6, 0xc2, 0xb6, 0xd5, 0x90, 0x80, 0xbd, 0x33, 0xf3, 0x8b, 0x12, 0x34, 0xb4, + 0x77, 0x91, 0xef, 0x03, 0x88, 0x73, 0xc1, 0x96, 0x1a, 0x30, 0x66, 0x68, 0xa0, 0x39, 0x56, 0xb4, + 0x4c, 0x10, 0x7b, 0x4e, 0x4a, 0x5c, 0x9a, 0x45, 0x2c, 0xf0, 0x92, 0x38, 0x17, 0xd8, 0xca, 0x57, + 0x07, 0xb6, 0x62, 0x1c, 0xaa, 0xbc, 0x49, 0x1c, 0x4a, 0xc3, 0x80, 0x9c, 0x53, 0xbb, 0xdc, 0xae, + 0x75, 0x6c, 0x90, 0x33, 0x75, 0x1c, 0xaa, 0xae, 0x94, 0x75, 0x1c, 0x32, 0xef, 0x40, 0x6f, 0xca, + 0xc3, 0x05, 0x99, 0x1f, 0x8e, 0x22, 0x65, 0xc3, 0xf8, 0xdb, 0x7c, 0x06, 0x70, 0xc8, 0x1d, 0xce, + 0x36, 0x83, 0xc8, 0x3d, 0x15, 0x6a, 0x8a, 0x4f, 0xce, 0x99, 0xef, 0x3a, 0x81, 0x3e, 0xd3, 0xca, + 0x16, 0x68, 0xd0, 0x9e, 0x27, 0xce, 0xaa, 0x5f, 0xb2, 0x28, 0xb4, 0xb9, 0xf0, 0x79, 0x65, 0x98, + 0x4d, 0x01, 0x39, 0x12, 0x00, 0xf3, 0x27, 0xd0, 0xc4, 0xd5, 0x50, 0x09, 0x6b, 0x50, 0x1b, 0x8a, + 0x55, 0xb5, 0x02, 0x52, 0x57, 0xce, 0x3e, 0x68, 0x29, 0x0a, 0xf3, 0x6f, 0x0c, 0xe8, 0xa6, 0x33, + 0xd3, 0xe0, 0xfa, 0xc6, 0x3e, 0xf1, 0x0e, 0x34, 0x84, 0x85, 0xd8, 0x34, 0x74, 0x55, 0x4a, 0x52, + 0x17, 0xe3, 0x9d, 0xd0, 0x4d, 0x51, 0x51, 0xe2, 0xa3, 0x4b, 0x28, 0xd4, 0x8b, 0xc4, 0x2f, 0xda, + 0x53, 0xb5, 0x68, 0x4f, 0x42, 0x14, 0x7e, 0x18, 0xf8, 0x21, 0xb5, 0x85, 0xf2, 0xd1, 0x17, 0xda, + 0x16, 0x48, 0xd0, 0xb6, 0xc3, 0x1d, 0xf3, 0x8f, 0x4b, 0x50, 0x93, 0x3a, 0x17, 0xc6, 0xeb, 0x0d, + 0x95, 0x58, 0x4b, 0xde, 0x90, 0x2c, 0x42, 0x35, 0x2f, 0x20, 0x39, 0x28, 0x38, 0x4f, 0xf9, 0x2a, + 0xe7, 0xa9, 0x5c, 0xed, 0x3c, 0xd5, 0x0b, 0xce, 0xf3, 0xff, 0xa0, 0xcf, 0xfd, 0x51, 0xe0, 0xb0, + 0x13, 0x3b, 0xa1, 0x71, 0xe0, 0xbb, 0x0e, 0x43, 0x86, 0x3b, 0x56, 0x4f, 0xc1, 0x2d, 0x05, 0x16, + 0xac, 0x31, 0x21, 0x67, 0x74, 0xdf, 0xb6, 0x25, 0x07, 0xe4, 0x27, 0xd0, 0xc2, 0x1f, 0xea, 0xf8, + 0x6b, 0xa0, 0xbe, 0xae, 0x17, 0xf4, 0x95, 0x2a, 0xc6, 0x02, 0x24, 0xc5, 0xdf, 0xe6, 0x3e, 0x54, + 0xf7, 0xb6, 0xf7, 0x9d, 0x58, 0xf0, 0x38, 0x89, 0x19, 0x4f, 0xa8, 0x33, 0xce, 0x59, 0x8e, 0x06, + 0xed, 0x79, 0x22, 0x00, 0x79, 0xd1, 0xcb, 0x30, 0x23, 0x29, 0x21, 0x49, 0x3b, 0x03, 0xee, 0x79, + 0xe6, 0x4b, 0x68, 0x8b, 0x03, 0x01, 0x8d, 0x49, 0xac, 0x3a, 0xcb, 0x06, 0x3e, 0x80, 0x9a, 0xef, + 0x89, 0xb3, 0x44, 0xa5, 0x80, 0x1d, 0xcd, 0x26, 0x32, 0x62, 0x55, 0x7d, 0x4f, 0xcc, 0xbc, 0x07, + 0x10, 0x3b, 0x09, 0xf7, 0xf1, 0x88, 0x52, 0xae, 0x3a, 0x45, 0x99, 0x23, 0x30, 0x19, 0x34, 0xd3, + 0x93, 0xe8, 0x7f, 0xf1, 0xd5, 0x1f, 0x40, 0x0d, 0x75, 0xad, 0xbf, 0xb8, 0x98, 0x3f, 0xe6, 0xf4, + 0xae, 0x2c, 0x45, 0x63, 0x1e, 0x40, 0x43, 0xc7, 0x81, 0xef, 0x78, 0xc8, 0xc8, 0xa8, 0x59, 0xd6, + 0x51, 0xd3, 0xdc, 0x86, 0xee, 0x96, 0x4a, 0x40, 0xb7, 0x31, 0xd3, 0x15, 0xd9, 0xa3, 0x3b, 0x49, + 0x12, 0x1a, 0x72, 0x95, 0xa1, 0xea, 0xa1, 0xc0, 0x24, 0xb2, 0x16, 0xc0, 0x45, 0x2b, 0x96, 0x1e, + 0x9a, 0xff, 0x6a, 0x40, 0x55, 0xce, 0xee, 0x43, 0x79, 0xcc, 0x8e, 0x95, 0x20, 0xc4, 0x4f, 0xb2, + 0x09, 0xfd, 0x2c, 0xe9, 0xb5, 0xf3, 0x39, 0x76, 0x6a, 0x2e, 0x45, 0x0e, 0x76, 0xe7, 0xd2, 0x84, + 0x77, 0xcf, 0x93, 0xab, 0xae, 0x43, 0xe3, 0xf4, 0x4c, 0xcd, 0xad, 0xe0, 0xdc, 0xf9, 0x34, 0x8f, + 0x79, 0x4a, 0xcf, 0xf5, 0xb4, 0xfa, 0xe9, 0x99, 0xa4, 0x7f, 0x08, 0x6d, 0x99, 0xd6, 0xab, 0x39, + 0xd5, 0x59, 0x39, 0xfd, 0xee, 0x9c, 0xd5, 0x92, 0x54, 0x38, 0xdc, 0x6c, 0x40, 0xcd, 0xa3, 0xdc, + 0xf1, 0x03, 0xf3, 0x6f, 0x0d, 0x58, 0x3e, 0x44, 0x0b, 0x93, 0x11, 0xf4, 0xc8, 0x61, 0xa7, 0x87, + 0xd4, 0x9d, 0x24, 0x3e, 0x3f, 0xdf, 0x8a, 0xc2, 0x91, 0x2f, 0x76, 0x45, 0xe2, 0xc0, 0xf1, 0x43, + 0x4e, 0x5f, 0x71, 0xf4, 0xf7, 0x54, 0x0d, 0xb9, 0xb0, 0xb5, 0x25, 0x43, 0x43, 0x38, 0x8a, 0x76, + 0xe7, 0xac, 0x7e, 0x4a, 0x2f, 0x82, 0x81, 0xd0, 0xc5, 0x0e, 0xcc, 0x8f, 0x1d, 0x14, 0xcc, 0x29, + 0x3d, 0xb7, 0x5d, 0x5c, 0x58, 0x19, 0x4b, 0x9a, 0x73, 0xed, 0x23, 0xc1, 0x53, 0xaa, 0xbe, 0xbb, + 0x3b, 0x67, 0xf5, 0xc6, 0x45, 0xd0, 0x66, 0x1b, 0x20, 0xab, 0x13, 0xcd, 0x00, 0x20, 0xfb, 0x2c, + 0xf9, 0x19, 0xb4, 0x54, 0xc0, 0xe2, 0xe7, 0x31, 0x55, 0xe5, 0xd3, 0xf2, 0x7a, 0xa1, 0xae, 0xdc, + 0x49, 0x07, 0xfb, 0x94, 0x9f, 0x44, 0x9e, 0x05, 0x72, 0x8a, 0x28, 0xa1, 0xb0, 0x64, 0x91, 0x0b, + 0x64, 0xb6, 0xa4, 0x62, 0xe0, 0x53, 0x7a, 0x6e, 0xfe, 0x99, 0x01, 0xbd, 0x29, 0x16, 0xc9, 0xc7, + 0xd0, 0xcb, 0xd6, 0x7f, 0x9b, 0xef, 0x76, 0x33, 0x34, 0x7e, 0xfb, 0x31, 0xb4, 0x32, 0xf9, 0xe8, + 0x73, 0xf6, 0x46, 0x71, 0x91, 0xf4, 0xe3, 0x16, 0xa4, 0x72, 0x61, 0xe6, 0x17, 0x35, 0xe8, 0x14, + 0xcb, 0xdd, 0xd7, 0x94, 0x5e, 0x05, 0x67, 0x2a, 0x5d, 0xee, 0x4c, 0xe5, 0xab, 0x53, 0xa4, 0xca, + 0xeb, 0x53, 0xa4, 0xea, 0x85, 0x14, 0xe9, 0xa6, 0x38, 0xf6, 0x39, 0xb5, 0x03, 0x7f, 0xec, 0x73, + 0x95, 0x24, 0x35, 0x05, 0xe4, 0x99, 0x00, 0x90, 0x15, 0x68, 0xb9, 0x51, 0x28, 0x7d, 0xd0, 0x3d, + 0xc7, 0x3c, 0xa9, 0x63, 0xe5, 0x41, 0xe4, 0x67, 0xd0, 0x63, 0x3c, 0x4a, 0x9c, 0x63, 0x6a, 0x0b, + 0xab, 0xa1, 0xa1, 0x87, 0xe9, 0x52, 0x21, 0x1e, 0x23, 0x7a, 0x53, 0x62, 0xad, 0x2e, 0x2b, 0x8c, + 0x8b, 0xc5, 0x11, 0x14, 0x8b, 0x23, 0x19, 0x30, 0x5a, 0x69, 0x9a, 0x25, 0xdc, 0x39, 0x1a, 0xc7, + 0x09, 0x65, 0x2c, 0x55, 0x6f, 0x1b, 0xd5, 0x9b, 0xda, 0xec, 0x56, 0x86, 0xc7, 0x32, 0xbc, 0xe7, + 0x16, 0x01, 0xe4, 0xfb, 0x30, 0x9f, 0x5f, 0x23, 0xa0, 0x67, 0x34, 0xc0, 0x4a, 0xb3, 0x6a, 0xe5, + 0x17, 0x7f, 0x26, 0xe0, 0xe4, 0x61, 0x6a, 0xc2, 0x98, 0x8a, 0x74, 0x2f, 0x73, 0x31, 0x6d, 0xb6, + 0x68, 0xf7, 0x1f, 0x41, 0xcf, 0x63, 0xdc, 0xce, 0xd7, 0x3f, 0xbd, 0xcb, 0xeb, 0x9f, 0x8e, 0xc7, + 0xf8, 0x46, 0x56, 0x02, 0xdd, 0x07, 0x60, 0x93, 0xa1, 0xce, 0xa9, 0xfa, 0xaa, 0xfc, 0xc8, 0xc5, + 0x1b, 0x95, 0x88, 0xb1, 0xc9, 0x50, 0xa5, 0x53, 0xef, 0x8b, 0x78, 0x83, 0xe7, 0xa5, 0x9d, 0x50, + 0xc7, 0xc3, 0x72, 0xac, 0x21, 0xa2, 0x0b, 0xc2, 0x2c, 0xea, 0x78, 0x69, 0x91, 0x42, 0x5e, 0x53, + 0xa4, 0xbc, 0x0b, 0xcd, 0x49, 0xe8, 0xff, 0x6a, 0x42, 0x85, 0x9d, 0x2e, 0xa0, 0xd8, 0x1b, 0x12, + 0xb0, 0xe7, 0x89, 0xaa, 0xc8, 0x8d, 0x30, 0x86, 0x60, 0x61, 0x25, 0xd2, 0x43, 0xcd, 0xd6, 0x96, + 0x84, 0x5b, 0x9a, 0xe0, 0xe7, 0x95, 0x46, 0xad, 0x5f, 0x57, 0xf5, 0xc9, 0x7f, 0x95, 0x60, 0x71, + 0x3a, 0xa0, 0xa1, 0x9c, 0xee, 0x43, 0x5d, 0xd9, 0x82, 0x8a, 0x5d, 0x97, 0x99, 0x8c, 0x26, 0xc3, + 0xec, 0x08, 0x6d, 0x9e, 0x33, 0x7d, 0x0a, 0xe0, 0xf8, 0x88, 0x91, 0x6b, 0x20, 0x1c, 0x43, 0x20, + 0x64, 0xb2, 0x52, 0xa5, 0xa1, 0x77, 0xc4, 0xd2, 0xc3, 0xb1, 0x92, 0x3b, 0x1c, 0xdf, 0x87, 0x36, + 0x1e, 0x69, 0x22, 0x85, 0xe6, 0x34, 0xc1, 0x3c, 0xb4, 0x69, 0xb5, 0x10, 0xf6, 0x04, 0x41, 0x33, + 0x0d, 0xad, 0xf6, 0x96, 0x86, 0xf6, 0x02, 0x7a, 0x4c, 0xc5, 0x6d, 0x1d, 0x5f, 0xeb, 0xb8, 0xcd, + 0xbb, 0xd9, 0x36, 0xaf, 0x0a, 0xf3, 0x56, 0x97, 0x4d, 0x8d, 0xb1, 0xfb, 0x33, 0x89, 0x3d, 0xe1, + 0xb0, 0x9c, 0xe9, 0x6a, 0xd1, 0xaa, 0x89, 0x0c, 0x67, 0xc2, 0xcc, 0xaf, 0x4a, 0x22, 0x2b, 0x2d, + 0x38, 0x97, 0x09, 0x95, 0x30, 0x8a, 0x62, 0x25, 0xdf, 0xb4, 0x4c, 0x78, 0x1e, 0x45, 0xf1, 0xee, + 0x9c, 0x85, 0x38, 0x72, 0x07, 0xaa, 0x41, 0xe4, 0x3a, 0xc1, 0x74, 0xaa, 0xf0, 0x4c, 0x00, 0x77, + 0xe7, 0x2c, 0x89, 0x25, 0xef, 0x41, 0x89, 0x3d, 0x54, 0x87, 0x27, 0xa4, 0x3b, 0x78, 0xb8, 0x3b, + 0x67, 0x95, 0xd8, 0x43, 0x72, 0x0b, 0xca, 0xc7, 0x2e, 0x53, 0xe7, 0x63, 0x4b, 0xa3, 0x3f, 0xde, + 0x3a, 0xdc, 0x9d, 0xb3, 0x04, 0x86, 0x7c, 0x04, 0x1d, 0x37, 0x88, 0x26, 0x9e, 0xed, 0x9d, 0x87, + 0xce, 0xd8, 0x77, 0xd5, 0xb1, 0xb8, 0x98, 0x1d, 0xc3, 0xd1, 0xc4, 0xdb, 0x96, 0xb8, 0xdd, 0x39, + 0xab, 0xed, 0xe6, 0xc6, 0x62, 0x1b, 0x27, 0xde, 0x48, 0x66, 0x89, 0xb9, 0x6d, 0xec, 0x6e, 0x3f, + 0x11, 0xeb, 0x23, 0x8e, 0xec, 0x02, 0x71, 0x3e, 0x9f, 0x24, 0xd4, 0x1e, 0x06, 0xd1, 0xd0, 0xd6, + 0x86, 0x25, 0x25, 0x3e, 0xd0, 0x33, 0x36, 0x04, 0xc5, 0x66, 0x10, 0x0d, 0x95, 0x9c, 0xc4, 0xd1, + 0xe8, 0x4c, 0xc1, 0x36, 0x9b, 0x50, 0x57, 0xa1, 0xcc, 0xac, 0x41, 0x45, 0xc8, 0xca, 0x7c, 0x17, + 0xaa, 0x28, 0x0e, 0x61, 0x4f, 0xc2, 0xa8, 0x75, 0xb2, 0x85, 0x06, 0xfe, 0xa7, 0x15, 0x28, 0x1d, + 0x3e, 0x14, 0x09, 0x33, 0x0d, 0xbd, 0x38, 0xf2, 0x55, 0xf2, 0xd2, 0xb4, 0xd2, 0xb1, 0xa8, 0x04, + 0x72, 0x8d, 0xc0, 0x66, 0xda, 0xf8, 0xbb, 0x0e, 0xb5, 0xe1, 0xc4, 0x3d, 0xa5, 0x5c, 0x65, 0x45, + 0x6a, 0x24, 0xe0, 0x71, 0x42, 0x47, 0xfe, 0x2b, 0x65, 0xb8, 0x6a, 0x24, 0x83, 0xbe, 0x8c, 0xb6, + 0x6e, 0xe0, 0x30, 0x99, 0x5d, 0x37, 0x45, 0xd0, 0x47, 0xe0, 0x96, 0x80, 0x89, 0x34, 0x88, 0x31, + 0x69, 0xaf, 0x4d, 0x4b, 0xfc, 0x14, 0x10, 0xc7, 0x0d, 0x50, 0x18, 0x4d, 0x4b, 0xfc, 0x14, 0x71, + 0xdf, 0x71, 0x5d, 0xca, 0x18, 0x9e, 0x2c, 0x0d, 0xd9, 0xc5, 0x93, 0x10, 0x71, 0xb8, 0xac, 0xc1, + 0x3c, 0xa3, 0x6e, 0x42, 0xb9, 0x9d, 0xa3, 0x6a, 0x22, 0x55, 0x4f, 0x22, 0x36, 0x52, 0xda, 0x55, + 0xe8, 0x8f, 0xa2, 0xc4, 0xa5, 0xb6, 0x10, 0x86, 0xcd, 0xf8, 0x79, 0x40, 0x55, 0x1c, 0xef, 0x22, + 0xfc, 0xc0, 0xe1, 0x27, 0x87, 0x02, 0x4a, 0x6e, 0x43, 0x97, 0x31, 0x6a, 0x9f, 0x8e, 0x71, 0x3d, + 0x11, 0x63, 0x64, 0x68, 0x6f, 0x31, 0x46, 0x9f, 0x8e, 0xc5, 0x62, 0x7b, 0x9e, 0xf0, 0xf1, 0x24, + 0x0a, 0xa8, 0xed, 0x24, 0xb2, 0x83, 0xd8, 0xb4, 0xea, 0x62, 0xbc, 0x91, 0xc8, 0xd3, 0xec, 0x15, + 0xa7, 0x49, 0x28, 0xeb, 0xbd, 0x0e, 0x62, 0x41, 0x83, 0xf6, 0x3c, 0xb2, 0x0e, 0x0b, 0xd1, 0xf0, + 0x97, 0xd4, 0xe5, 0xb6, 0xa8, 0xd3, 0xd2, 0x3e, 0x50, 0x17, 0xb9, 0x99, 0x97, 0xa8, 0x67, 0x91, + 0x7b, 0xaa, 0x9b, 0x40, 0x42, 0x9c, 0xda, 0xc5, 0xa3, 0x53, 0x2a, 0xe3, 0xb4, 0x10, 0xa7, 0x72, + 0x63, 0x01, 0x13, 0x7a, 0x8d, 0x93, 0xe8, 0xcc, 0xf7, 0x68, 0x82, 0xfd, 0xb1, 0xa6, 0x95, 0x8e, + 0x45, 0x56, 0x1a, 0x27, 0x91, 0x28, 0xc5, 0x55, 0x17, 0x4c, 0x0f, 0xcd, 0xdf, 0x18, 0x50, 0xfe, + 0x78, 0xeb, 0xf0, 0x75, 0x56, 0xa1, 0xb4, 0x5f, 0xba, 0x44, 0xfb, 0xe5, 0xab, 0xb5, 0x5f, 0x99, + 0xa1, 0xfd, 0x3b, 0xd0, 0x8d, 0x13, 0xea, 0xd1, 0x91, 0x1f, 0x52, 0xcf, 0x16, 0x6a, 0x97, 0x36, + 0xd2, 0xc9, 0xa0, 0x1b, 0x6e, 0x20, 0x8a, 0x30, 0x57, 0x00, 0x42, 0xee, 0x3b, 0x01, 0x43, 0xa7, + 0x51, 0x16, 0xd3, 0xcb, 0xc1, 0x85, 0x5b, 0x98, 0x63, 0xe8, 0xa3, 0xdf, 0x6c, 0x4d, 0x18, 0x8f, + 0xc6, 0x98, 0xe5, 0x88, 0xaf, 0xe4, 0xf2, 0x2c, 0x9d, 0x7e, 0x36, 0xad, 0x4e, 0x06, 0x15, 0x64, + 0x0f, 0xe0, 0x5a, 0x91, 0xcc, 0xce, 0x15, 0xc4, 0x4d, 0x6b, 0xa1, 0x40, 0x7d, 0x88, 0x28, 0x11, + 0xc6, 0xfa, 0xd3, 0x7e, 0xfa, 0xdb, 0x17, 0xe3, 0xfb, 0xd0, 0x76, 0x5c, 0x37, 0x9a, 0x84, 0xdc, + 0xc6, 0x03, 0x44, 0x0a, 0xb1, 0xa5, 0x60, 0xcf, 0xc5, 0x39, 0x72, 0x13, 0x80, 0x9d, 0x38, 0x09, + 0x95, 0xd9, 0x99, 0x14, 0x5e, 0x53, 0x42, 0xc4, 0xde, 0x33, 0x17, 0x63, 0xfe, 0x71, 0xd1, 0xc5, + 0x0e, 0xfd, 0x63, 0xa1, 0x80, 0x9c, 0x68, 0x98, 0x1b, 0xc5, 0x54, 0x7b, 0x58, 0x06, 0x3f, 0x14, + 0x60, 0xf2, 0xb3, 0x0b, 0xc2, 0x86, 0x19, 0x61, 0x2d, 0xa7, 0x9e, 0x29, 0x35, 0x98, 0x7f, 0x62, + 0x40, 0x6d, 0x53, 0x0a, 0xe5, 0xcd, 0xa2, 0x54, 0xf9, 0x92, 0x28, 0x55, 0xb9, 0x44, 0xc0, 0xd5, + 0xab, 0x05, 0x5c, 0xbb, 0x28, 0x60, 0x51, 0xb6, 0xb5, 0xf3, 0x41, 0x9f, 0xdc, 0x4d, 0xbf, 0x62, + 0xa8, 0x8a, 0x49, 0xa7, 0x29, 0x08, 0x4d, 0xbf, 0x7a, 0x1b, 0x3a, 0xda, 0xff, 0xa4, 0x6a, 0xa4, + 0xd6, 0xdb, 0x1a, 0x88, 0xba, 0xf9, 0x31, 0x54, 0x1d, 0xce, 0x13, 0x5d, 0xd9, 0xde, 0x9a, 0x75, + 0xcc, 0xac, 0x6f, 0x08, 0x8a, 0x9d, 0x90, 0x27, 0xe7, 0x96, 0xa4, 0x5e, 0x7a, 0x0c, 0x90, 0x01, + 0x45, 0xd8, 0xcc, 0x2c, 0x5b, 0xfc, 0x24, 0x8b, 0x50, 0x3d, 0x73, 0x82, 0x89, 0xfe, 0xa6, 0x1c, + 0xfc, 0x4e, 0xe9, 0xb1, 0x61, 0x2e, 0x43, 0x45, 0x1c, 0x47, 0x52, 0x86, 0xe3, 0x88, 0xeb, 0x7a, + 0x5c, 0x8d, 0xcc, 0x7f, 0x34, 0xa0, 0x3b, 0x75, 0xab, 0x74, 0x5b, 0xdf, 0xfa, 0x18, 0xc5, 0x83, + 0xb7, 0x70, 0xe9, 0xf3, 0xdd, 0x8a, 0x83, 0x37, 0xb9, 0x6b, 0x99, 0x6a, 0xd1, 0x57, 0xdf, 0xa8, + 0x45, 0x6f, 0xde, 0x13, 0x35, 0x3b, 0x75, 0xc2, 0xac, 0xba, 0x29, 0x24, 0x8d, 0x46, 0x31, 0x69, + 0x34, 0x0f, 0xa0, 0x97, 0x92, 0xbf, 0xcd, 0xb6, 0x07, 0x50, 0x67, 0x13, 0xf4, 0x15, 0xdc, 0x74, + 0xc3, 0xd2, 0x43, 0xf3, 0x31, 0x74, 0xd5, 0xcd, 0x9b, 0x66, 0xe0, 0x2e, 0xf4, 0x98, 0x73, 0x46, + 0x6d, 0x1e, 0xd9, 0xf9, 0x7c, 0xb2, 0x61, 0x75, 0x04, 0xf8, 0x28, 0x52, 0x31, 0xc4, 0xfc, 0x6b, + 0x03, 0x7a, 0xe9, 0xd4, 0xb7, 0xd4, 0x41, 0xb6, 0xc3, 0xd2, 0x54, 0x5a, 0xfc, 0x03, 0x20, 0x6e, + 0x14, 0x04, 0xe2, 0xd0, 0xc1, 0xab, 0x2b, 0x8c, 0x0f, 0x2a, 0x09, 0xed, 0x2b, 0x8c, 0x10, 0xfb, + 0x96, 0x80, 0x8b, 0x83, 0xb5, 0x40, 0x8d, 0x5d, 0x63, 0x59, 0xb9, 0xf5, 0x72, 0xc4, 0x87, 0xfe, + 0xe7, 0xd4, 0x5c, 0x80, 0xf9, 0xad, 0x13, 0xea, 0x9e, 0x6e, 0x78, 0x63, 0x3f, 0x54, 0x9b, 0x35, + 0xbf, 0x30, 0x80, 0xe4, 0xa1, 0x6f, 0xb3, 0x8f, 0x37, 0xbd, 0x8e, 0x5c, 0x83, 0xf9, 0x13, 0x87, + 0xd9, 0x31, 0x0d, 0x3d, 0x3f, 0x3c, 0xb6, 0x1d, 0xf1, 0x25, 0xdc, 0x51, 0xc3, 0xea, 0x9d, 0x38, + 0xec, 0x40, 0xc2, 0x91, 0x01, 0xf3, 0x5f, 0x0c, 0xb8, 0xb9, 0xa3, 0x4e, 0x60, 0x25, 0x68, 0x8b, + 0x0a, 0x35, 0xa4, 0xea, 0x99, 0x51, 0x21, 0x1a, 0x6f, 0x55, 0x21, 0xde, 0x82, 0x96, 0x3a, 0xd5, + 0x73, 0xee, 0x0e, 0x12, 0xf4, 0x5c, 0x25, 0xf4, 0x89, 0xfc, 0xa6, 0xa4, 0x90, 0xd1, 0xab, 0xa5, + 0x60, 0x48, 0x72, 0x07, 0xba, 0x58, 0x9b, 0x84, 0xdc, 0x0e, 0x68, 0x78, 0xcc, 0x4f, 0x94, 0xd0, + 0x3b, 0x0a, 0xfa, 0x0c, 0x81, 0xe6, 0x0a, 0x2c, 0x5f, 0xb6, 0x19, 0x29, 0x68, 0xf3, 0x2f, 0x0c, + 0x58, 0x9a, 0x22, 0x39, 0x74, 0xce, 0x7e, 0x8b, 0x9b, 0xbd, 0xb8, 0x93, 0xf2, 0xac, 0x9d, 0xdc, + 0x84, 0x77, 0x67, 0xb2, 0xa9, 0xb6, 0xf1, 0x6b, 0x75, 0xff, 0xe0, 0x39, 0xdc, 0x21, 0x6b, 0x3a, + 0x5a, 0x18, 0xc5, 0x36, 0xe0, 0xb6, 0xba, 0x47, 0xc0, 0x0a, 0x57, 0x45, 0x8d, 0x47, 0xd0, 0x42, + 0xc3, 0x3d, 0x4e, 0xa2, 0x49, 0xac, 0x9b, 0xfe, 0xd7, 0xa6, 0x67, 0x7c, 0x2c, 0xb0, 0x16, 0xde, + 0xe5, 0xe2, 0x4f, 0x26, 0x4b, 0x37, 0xa1, 0xa1, 0xb4, 0x97, 0x8a, 0x55, 0x9d, 0xf0, 0xa0, 0x5b, + 0x20, 0x54, 0x15, 0x05, 0x67, 0x34, 0x57, 0xbf, 0x81, 0x06, 0xc9, 0xda, 0x6e, 0xec, 0xbc, 0x12, + 0x38, 0xa9, 0xb4, 0xea, 0xd8, 0x79, 0xa5, 0xc0, 0x7e, 0x28, 0xc0, 0x55, 0x05, 0xf6, 0xc3, 0x23, + 0xc1, 0x21, 0x3e, 0x64, 0x48, 0x03, 0x5b, 0x5d, 0x05, 0xb6, 0xdc, 0x9d, 0xa6, 0x0e, 0x6c, 0xad, + 0x71, 0x36, 0x30, 0xff, 0xcd, 0x80, 0x4e, 0x81, 0xff, 0x59, 0xc9, 0x3e, 0xf9, 0x29, 0xf4, 0xb2, + 0xeb, 0x17, 0xd9, 0x15, 0x28, 0x5d, 0x21, 0xb5, 0x4e, 0x7a, 0x17, 0x83, 0x25, 0x6f, 0xc6, 0x72, + 0x39, 0xcf, 0xf2, 0x25, 0x1b, 0xbc, 0x0b, 0x3d, 0x41, 0x9d, 0x17, 0x8e, 0xdc, 0x69, 0x47, 0xba, + 0xbe, 0x96, 0xcf, 0x75, 0xa8, 0x29, 0x53, 0x90, 0x77, 0x60, 0x6a, 0x64, 0xfe, 0x53, 0x0d, 0xda, + 0x79, 0x6e, 0x72, 0x17, 0x12, 0x46, 0xe1, 0x42, 0x42, 0x6f, 0xb4, 0x94, 0xdb, 0xe8, 0x1a, 0xcc, + 0x87, 0x93, 0xf1, 0x90, 0x26, 0x76, 0x34, 0xb2, 0x69, 0xc8, 0x13, 0x9f, 0x4a, 0xae, 0xcb, 0x56, + 0x4f, 0x22, 0x5e, 0x8c, 0x76, 0x24, 0x38, 0xb7, 0xad, 0xca, 0xec, 0x6d, 0x55, 0xf3, 0xdb, 0x9a, + 0xd2, 0x77, 0xed, 0x82, 0xbe, 0xdf, 0x85, 0xa6, 0xea, 0xa0, 0xfa, 0x1e, 0xaa, 0xaf, 0x6c, 0x35, + 0x24, 0x60, 0xba, 0x5b, 0xd6, 0xb8, 0xfc, 0x40, 0x6c, 0xce, 0x68, 0x3d, 0x67, 0x17, 0x76, 0x1f, + 0x40, 0x05, 0x8b, 0xfa, 0x16, 0x1a, 0x47, 0x3f, 0x7f, 0x3e, 0x62, 0x35, 0x8f, 0x58, 0xb1, 0x9c, + 0xcf, 0x6c, 0x61, 0x24, 0x58, 0x8a, 0x34, 0xac, 0x9a, 0xcf, 0xf0, 0x31, 0xc5, 0x3b, 0xd0, 0x90, + 0x2d, 0x04, 0x55, 0x86, 0x94, 0xad, 0x3a, 0x8e, 0xf7, 0xbc, 0x9c, 0x32, 0xba, 0x79, 0x65, 0x90, + 0xff, 0x0f, 0x4b, 0x42, 0x46, 0x43, 0x7a, 0x8c, 0x92, 0xb2, 0xfd, 0xd0, 0xf6, 0xe8, 0xc8, 0x99, + 0x04, 0xdc, 0x76, 0x47, 0x58, 0x78, 0x54, 0xac, 0x6b, 0x63, 0x3f, 0xdc, 0x14, 0x04, 0x47, 0x6c, + 0x2f, 0xdc, 0x96, 0xd8, 0xad, 0x11, 0xc6, 0x37, 0xbc, 0xee, 0x8f, 0x46, 0x23, 0x46, 0x39, 0x56, + 0x21, 0x15, 0xab, 0x85, 0xb0, 0x17, 0x08, 0xca, 0x48, 0xd4, 0xb7, 0xe7, 0x73, 0x24, 0x32, 0x22, + 0xcc, 0xec, 0x69, 0x90, 0xb7, 0xec, 0x69, 0xe4, 0x2f, 0x85, 0x16, 0xa6, 0x2e, 0x85, 0x56, 0xa1, + 0xaf, 0xb4, 0x96, 0xe9, 0x67, 0x11, 0x95, 0xd0, 0x95, 0xf0, 0x43, 0xad, 0xa5, 0x0f, 0xa0, 0xab, + 0x3b, 0xe4, 0x4a, 0x59, 0xd7, 0x90, 0x4e, 0xf5, 0xcd, 0x77, 0xa4, 0xca, 0x1e, 0x65, 0x7d, 0xf4, + 0x38, 0x72, 0x4f, 0xd4, 0x55, 0xfc, 0x42, 0xf1, 0xcc, 0xda, 0x11, 0xa8, 0xb4, 0x95, 0x2e, 0x06, + 0xc4, 0x82, 0x45, 0x8c, 0x50, 0xb9, 0x94, 0x19, 0xdd, 0xf4, 0x06, 0xc6, 0xe1, 0x95, 0x62, 0x0b, + 0x57, 0x28, 0x3c, 0xeb, 0x05, 0xa3, 0xcb, 0x92, 0xd1, 0x05, 0x98, 0xf9, 0xa5, 0x01, 0xf3, 0xf9, + 0x6e, 0xcd, 0x8e, 0xce, 0x0b, 0x4e, 0x9c, 0x38, 0xa6, 0xa1, 0xed, 0xe8, 0xfb, 0x8a, 0x86, 0x04, + 0x6c, 0x60, 0xd3, 0x17, 0x4f, 0x5d, 0xdb, 0x8d, 0x3c, 0x1d, 0xc7, 0x9b, 0x08, 0xd9, 0x8a, 0x3c, + 0x71, 0x60, 0xcb, 0xd7, 0x57, 0xf6, 0x98, 0x32, 0x26, 0x52, 0x16, 0x79, 0x68, 0xb5, 0x11, 0xb8, + 0x2f, 0x61, 0x85, 0xa0, 0xa9, 0x6f, 0x03, 0x65, 0xd0, 0x34, 0x1f, 0x41, 0xe5, 0x30, 0x76, 0x30, + 0x37, 0x57, 0x56, 0x21, 0x19, 0x50, 0xa3, 0x9c, 0x19, 0x96, 0x0a, 0x31, 0x61, 0x07, 0x5a, 0x62, + 0x1e, 0x7b, 0x31, 0xd2, 0x57, 0xf9, 0x17, 0x42, 0x9c, 0x09, 0x55, 0x26, 0x48, 0xa6, 0x2f, 0x97, + 0xc5, 0x3c, 0x4b, 0xa2, 0xcc, 0x2f, 0xcb, 0x30, 0x78, 0x16, 0x1d, 0x63, 0xae, 0x32, 0x19, 0x0a, + 0x33, 0x71, 0x5c, 0xd5, 0x4d, 0x77, 0xd2, 0xdb, 0x70, 0xa3, 0x78, 0x1b, 0x9e, 0xf9, 0xb4, 0x64, + 0x29, 0xf3, 0xe9, 0xa9, 0x8b, 0x21, 0xb2, 0x02, 0x6d, 0x3f, 0x8c, 0x27, 0xdc, 0x2e, 0x44, 0x45, + 0x40, 0xd8, 0x3e, 0xc6, 0x90, 0x8c, 0x22, 0x7f, 0x02, 0x28, 0x0a, 0x0c, 0x3e, 0x77, 0xa1, 0xa7, + 0xd8, 0xb2, 0x47, 0x49, 0x34, 0xce, 0x22, 0x4d, 0x47, 0x81, 0x9f, 0x24, 0xd1, 0xf8, 0x08, 0xdf, + 0x89, 0x69, 0xba, 0x49, 0xc8, 0xfd, 0xc0, 0x56, 0xb7, 0x8d, 0x15, 0xab, 0xab, 0xe0, 0x9f, 0x08, + 0xf0, 0x11, 0x13, 0xd1, 0x40, 0x7c, 0x2d, 0x8b, 0x3b, 0x22, 0xe8, 0xa9, 0xa8, 0x23, 0x18, 0xcd, + 0x45, 0x9d, 0xb1, 0xf3, 0x4a, 0x20, 0x56, 0xf0, 0xdd, 0x18, 0x5c, 0x12, 0x63, 0x4a, 0xfc, 0xbc, + 0x10, 0x48, 0x5a, 0xc5, 0x40, 0x72, 0x0f, 0xea, 0x2c, 0x9a, 0x24, 0x2e, 0x65, 0x83, 0x76, 0xf1, + 0x6a, 0x3d, 0xa7, 0x40, 0x4b, 0xd3, 0x98, 0x7f, 0x67, 0xc0, 0xe2, 0x2c, 0x8d, 0x90, 0x0f, 0xa1, + 0x82, 0x11, 0xcc, 0x50, 0xf6, 0x9f, 0xb6, 0xf7, 0x66, 0x6b, 0xcf, 0x42, 0x6a, 0x72, 0x0f, 0x5a, + 0x8c, 0x71, 0x3b, 0x9a, 0xf0, 0x78, 0xc2, 0x67, 0xbf, 0x33, 0x00, 0xc6, 0xf8, 0x0b, 0x89, 0x27, + 0x9b, 0x30, 0xaf, 0xd4, 0x8b, 0x67, 0xef, 0x89, 0x1f, 0x72, 0x5d, 0x7b, 0xa5, 0x99, 0x8f, 0xf4, + 0x58, 0xf1, 0x8d, 0x5d, 0x3f, 0xe4, 0x56, 0x2f, 0x29, 0x8c, 0x99, 0xf9, 0x47, 0xd0, 0x2d, 0x92, + 0x7c, 0xc7, 0x6b, 0xc6, 0xe9, 0xc0, 0x21, 0x7b, 0x96, 0xaf, 0x0d, 0x1c, 0xe6, 0x1f, 0xc0, 0xb5, + 0x59, 0x42, 0x61, 0x64, 0x1b, 0xba, 0xac, 0x00, 0x51, 0x89, 0xd2, 0x7b, 0x57, 0xc9, 0xd2, 0x9a, + 0x9a, 0x63, 0x7e, 0x59, 0x82, 0x79, 0x45, 0xb8, 0x95, 0x69, 0x07, 0xcb, 0x07, 0x3d, 0x4a, 0x2d, + 0xd5, 0xd0, 0xe5, 0x83, 0xc6, 0x28, 0x63, 0x5d, 0x87, 0x85, 0x1c, 0x75, 0x6a, 0xaf, 0xd2, 0x9f, + 0xe6, 0x33, 0x94, 0x36, 0x59, 0xdd, 0xfe, 0x2e, 0xe7, 0xda, 0xdf, 0x22, 0x86, 0x47, 0xe3, 0x31, + 0x0d, 0xb9, 0xee, 0x7c, 0xa4, 0x63, 0xf2, 0x1e, 0x34, 0x9d, 0x84, 0xfb, 0x23, 0xc7, 0xe5, 0xba, + 0xb7, 0x98, 0x01, 0x44, 0xea, 0x99, 0x0e, 0xec, 0x13, 0x87, 0xe9, 0x7c, 0xa3, 0x93, 0x42, 0x77, + 0x1d, 0x76, 0x42, 0xbe, 0x07, 0xbd, 0x63, 0x1a, 0xd2, 0xc4, 0xe1, 0xd4, 0x53, 0xcf, 0x54, 0x64, + 0xe7, 0xb1, 0x9b, 0x82, 0x31, 0x23, 0x32, 0xff, 0xc1, 0x90, 0x49, 0xe8, 0x8e, 0xe7, 0xf3, 0x99, + 0x91, 0xe8, 0x01, 0x5c, 0xf3, 0x68, 0x40, 0x39, 0xb5, 0xd3, 0x77, 0x1e, 0xd9, 0xb3, 0x97, 0xa6, + 0xb5, 0x20, 0x91, 0x07, 0x0a, 0x27, 0x9f, 0xbc, 0x3c, 0x85, 0x45, 0x35, 0x27, 0x88, 0x8e, 0x73, + 0x53, 0xa4, 0x31, 0xbe, 0x93, 0x66, 0x69, 0x48, 0x93, 0xf7, 0x24, 0x22, 0xa7, 0x3d, 0x93, 0xb3, + 0xe4, 0x62, 0xb7, 0xa1, 0xe3, 0x51, 0xc6, 0x93, 0x89, 0xcb, 0x6d, 0x46, 0x83, 0x91, 0x7a, 0x6c, + 0xd9, 0xd6, 0xc0, 0x43, 0x1a, 0x8c, 0xcc, 0x3f, 0x84, 0xbe, 0x45, 0x5f, 0x26, 0x3e, 0xe7, 0x54, + 0x3e, 0x2c, 0xd9, 0xdb, 0x26, 0xf7, 0x61, 0x31, 0x7d, 0x60, 0x10, 0x8d, 0x6c, 0xfd, 0x5b, 0x29, + 0x96, 0xe8, 0xf1, 0x8b, 0xd1, 0x27, 0xea, 0x97, 0x50, 0x4b, 0x4a, 0xa5, 0xe2, 0xa3, 0x1e, 0xe3, + 0x4d, 0xe7, 0xce, 0x2b, 0x9e, 0x38, 0x4f, 0x26, 0x41, 0x20, 0x4f, 0x20, 0xb2, 0x25, 0x8e, 0x5b, + 0xf5, 0x55, 0x5b, 0x5d, 0xe3, 0x4b, 0xb3, 0x1c, 0x64, 0x0e, 0x57, 0xe4, 0x4a, 0xb8, 0x5c, 0x1e, + 0xc2, 0xb2, 0x3e, 0x41, 0xe9, 0xf2, 0x3e, 0xc1, 0x00, 0x1a, 0x0e, 0xb3, 0xfd, 0x51, 0x96, 0xb5, + 0xd6, 0x1c, 0xb6, 0x37, 0x3a, 0x62, 0xe6, 0x4b, 0x98, 0xbf, 0x20, 0xc6, 0xef, 0x7a, 0xa2, 0x88, + 0x7c, 0xf3, 0xe5, 0x49, 0x24, 0x6f, 0x65, 0x68, 0xb1, 0xb4, 0xe9, 0x21, 0x42, 0xac, 0xae, 0x8a, + 0x9b, 0xaf, 0x4b, 0xd0, 0xdc, 0xf7, 0x8f, 0x13, 0x7c, 0xd2, 0x87, 0x8f, 0x06, 0x12, 0xea, 0x70, + 0x75, 0xd7, 0xde, 0xb4, 0xf4, 0x90, 0x3c, 0xc8, 0x1e, 0xa3, 0xca, 0xdb, 0x9b, 0x54, 0x34, 0xe9, + 0x6c, 0x5d, 0x0a, 0xa4, 0xcf, 0x54, 0xef, 0x41, 0x93, 0x7a, 0x3e, 0xb7, 0x55, 0xcc, 0x2c, 0x4f, + 0xbf, 0x87, 0x14, 0xc6, 0x6a, 0x35, 0x04, 0x09, 0x9e, 0x75, 0xef, 0x43, 0x9b, 0x27, 0x93, 0xd0, + 0x45, 0x63, 0xe7, 0x91, 0x52, 0x5d, 0x2b, 0x85, 0x1d, 0x45, 0xe4, 0x23, 0x68, 0xe5, 0x63, 0xc7, + 0x94, 0x21, 0x5e, 0x08, 0x09, 0x56, 0x9e, 0x5a, 0x38, 0x53, 0x6a, 0x81, 0xe9, 0x95, 0x80, 0x30, + 0xfe, 0xae, 0x06, 0x1f, 0xc8, 0xa6, 0xdb, 0x0e, 0x10, 0x2a, 0x4c, 0xc4, 0x1e, 0x4d, 0x82, 0xc0, + 0x96, 0x8b, 0xeb, 0xe7, 0xac, 0x69, 0x82, 0x37, 0x65, 0x44, 0x56, 0x9f, 0x16, 0x01, 0x6c, 0xed, + 0x39, 0xac, 0xbc, 0xee, 0x21, 0x36, 0xe9, 0x41, 0xeb, 0x13, 0xbc, 0x85, 0xc2, 0xf7, 0xc6, 0xfd, + 0x39, 0xd2, 0x81, 0xe6, 0x2f, 0x1c, 0x9f, 0x6f, 0xc4, 0x71, 0x70, 0xde, 0x37, 0x08, 0x40, 0xed, + 0x89, 0x1f, 0xfa, 0xec, 0xa4, 0x5f, 0x5a, 0xfb, 0x39, 0x2c, 0x5f, 0xfd, 0x50, 0x9a, 0xcc, 0x43, + 0x27, 0x9d, 0xbc, 0x1d, 0x85, 0x62, 0xbd, 0x6b, 0x30, 0x9f, 0xfb, 0x80, 0x7c, 0x52, 0xda, 0x37, + 0xd6, 0x7e, 0x17, 0x7a, 0x53, 0x19, 0x2a, 0x69, 0x41, 0xfd, 0x93, 0xe7, 0x4f, 0x9f, 0xbf, 0xf8, + 0xc5, 0xf3, 0xfe, 0x1c, 0xa9, 0x43, 0xf9, 0xd9, 0x67, 0x1f, 0x4a, 0x06, 0x0e, 0x9f, 0x6f, 0x1c, + 0x1c, 0xfc, 0x7e, 0xbf, 0x44, 0x1a, 0x50, 0xf9, 0xec, 0xf0, 0x68, 0xbb, 0x5f, 0x5e, 0x5b, 0x49, + 0xdf, 0x43, 0x8b, 0x04, 0xac, 0x01, 0x95, 0xc3, 0xad, 0x0d, 0x31, 0xad, 0x01, 0x95, 0x27, 0x7b, + 0xcf, 0x76, 0xfa, 0xc6, 0xda, 0x4d, 0x68, 0xe5, 0xca, 0x43, 0x52, 0x83, 0xd2, 0xa7, 0x3f, 0xea, + 0xcf, 0xe1, 0xdf, 0x07, 0x7d, 0x63, 0xed, 0x16, 0x34, 0xf4, 0xe1, 0x2d, 0x3e, 0x21, 0x6d, 0x5f, + 0x7e, 0xf7, 0x60, 0x22, 0x18, 0x5c, 0x83, 0xfe, 0xb4, 0x61, 0x89, 0xc9, 0xfb, 0xf7, 0xe5, 0x22, + 0xfb, 0x3f, 0xea, 0x1b, 0xf8, 0xf7, 0x41, 0xbf, 0xf4, 0xe0, 0xbf, 0x4b, 0x50, 0x53, 0xae, 0xfc, + 0x11, 0xa8, 0x07, 0xfa, 0xe4, 0xda, 0xd4, 0xeb, 0x39, 0x29, 0xf4, 0xa5, 0xeb, 0xd3, 0x60, 0x55, + 0xc5, 0xcf, 0xdd, 0x37, 0xc8, 0x01, 0x2c, 0x60, 0x3f, 0x28, 0xdf, 0x95, 0x79, 0x11, 0x93, 0xd4, + 0xbe, 0x2e, 0xb4, 0x90, 0x96, 0x96, 0x66, 0xa1, 0x72, 0x2b, 0x9e, 0xc0, 0xb5, 0x99, 0x2a, 0x23, + 0x1f, 0xbc, 0xc9, 0x53, 0xfd, 0xa5, 0x3b, 0xaf, 0xa1, 0x92, 0x5f, 0x5a, 0x35, 0xee, 0x1b, 0xe4, + 0xa7, 0x50, 0x8f, 0x25, 0x11, 0xb9, 0x3e, 0x35, 0x4b, 0xaf, 0x76, 0xe3, 0x02, 0x5c, 0x73, 0x2a, + 0x66, 0xbb, 0xb2, 0xb7, 0x48, 0x72, 0xaf, 0x79, 0xf2, 0xbd, 0xc9, 0x6c, 0xf6, 0x54, 0x13, 0xd2, + 0x9c, 0x7b, 0xf0, 0xf7, 0x32, 0xa6, 0xe6, 0x3b, 0x24, 0xe4, 0x33, 0xa8, 0xab, 0xa6, 0x11, 0xb9, + 0x93, 0x73, 0x99, 0xcb, 0x9b, 0x5b, 0x4b, 0x77, 0x5f, 0x47, 0x96, 0x72, 0xfb, 0x7b, 0x50, 0x61, + 0xce, 0x19, 0x25, 0xe6, 0x25, 0x33, 0x72, 0x5d, 0xa4, 0xa5, 0xdb, 0x57, 0xd2, 0xe8, 0x25, 0x37, + 0x1f, 0x7c, 0xfd, 0x97, 0x0d, 0xe3, 0x37, 0xdf, 0x2c, 0x1b, 0x5f, 0x7d, 0xb3, 0x6c, 0xfc, 0xc7, + 0x37, 0xcb, 0xc6, 0xaf, 0xbf, 0x5d, 0x9e, 0xfb, 0xf3, 0x6f, 0x97, 0xe7, 0xbe, 0xfa, 0x76, 0x79, + 0xee, 0xeb, 0x6f, 0x97, 0xe7, 0xa0, 0x1f, 0x25, 0xc7, 0xeb, 0xdc, 0x3f, 0x3d, 0x5b, 0x3f, 0x3d, + 0xc3, 0xff, 0xcd, 0x18, 0xd6, 0xf0, 0xcf, 0xc3, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x70, 0x80, + 0x47, 0x9c, 0x1f, 0x32, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9277,6 +9414,95 @@ func (m *MetaEdit) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RewrittenTableID) 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 *RewrittenTableID) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RewrittenTableID) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Upstream != 0 { + i = encodeVarintBrpb(dAtA, i, uint64(m.Upstream)) + i-- + dAtA[i] = 0x10 + } + if m.UpstreamOfUpstream != 0 { + i = encodeVarintBrpb(dAtA, i, uint64(m.UpstreamOfUpstream)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ExtraFullBackup) 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 *ExtraFullBackup) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ExtraFullBackup) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AsIfTs != 0 { + i = encodeVarintBrpb(dAtA, i, uint64(m.AsIfTs)) + i-- + dAtA[i] = 0x18 + } + if len(m.Files) > 0 { + for iNdEx := len(m.Files) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Files[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.RewrittenTables) > 0 { + for iNdEx := len(m.RewrittenTables) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RewrittenTables[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *DeleteSpansOfFile) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -9346,6 +9572,20 @@ func (m *Migration) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.ExtraFullBackups) > 0 { + for iNdEx := len(m.ExtraFullBackups) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExtraFullBackups[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } if m.Version != 0 { i = encodeVarintBrpb(dAtA, i, uint64(m.Version)) i-- @@ -11057,6 +11297,45 @@ func (m *MetaEdit) Size() (n int) { return n } +func (m *RewrittenTableID) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.UpstreamOfUpstream != 0 { + n += 1 + sovBrpb(uint64(m.UpstreamOfUpstream)) + } + if m.Upstream != 0 { + n += 1 + sovBrpb(uint64(m.Upstream)) + } + return n +} + +func (m *ExtraFullBackup) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RewrittenTables) > 0 { + for _, e := range m.RewrittenTables { + l = e.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + } + if len(m.Files) > 0 { + for _, e := range m.Files { + l = e.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + } + if m.AsIfTs != 0 { + n += 1 + sovBrpb(uint64(m.AsIfTs)) + } + return n +} + func (m *DeleteSpansOfFile) Size() (n int) { if m == nil { return 0 @@ -11113,6 +11392,12 @@ func (m *Migration) Size() (n int) { if m.Version != 0 { n += 1 + sovBrpb(uint64(m.Version)) } + if len(m.ExtraFullBackups) > 0 { + for _, e := range m.ExtraFullBackups { + l = e.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + } return n } @@ -21546,6 +21831,231 @@ func (m *MetaEdit) Unmarshal(dAtA []byte) error { } return nil } +func (m *RewrittenTableID) 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 ErrIntOverflowBrpb + } + 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: RewrittenTableID: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RewrittenTableID: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpstreamOfUpstream", wireType) + } + m.UpstreamOfUpstream = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpstreamOfUpstream |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Upstream", wireType) + } + m.Upstream = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Upstream |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipBrpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBrpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExtraFullBackup) 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 ErrIntOverflowBrpb + } + 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: ExtraFullBackup: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraFullBackup: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RewrittenTables", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RewrittenTables = append(m.RewrittenTables, &RewrittenTableID{}) + if err := m.RewrittenTables[len(m.RewrittenTables)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Files", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Files = append(m.Files, &File{}) + if err := m.Files[len(m.Files)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AsIfTs", wireType) + } + m.AsIfTs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AsIfTs |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipBrpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBrpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DeleteSpansOfFile) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -21880,6 +22390,40 @@ func (m *Migration) Unmarshal(dAtA []byte) error { break } } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtraFullBackups", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExtraFullBackups = append(m.ExtraFullBackups, &ExtraFullBackup{}) + if err := m.ExtraFullBackups[len(m.ExtraFullBackups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) diff --git a/pkg/configpb/configpb.pb.gw.go b/pkg/configpb/configpb.pb.gw.go index 9b4675b32..c0385b0e4 100644 --- a/pkg/configpb/configpb.pb.gw.go +++ b/pkg/configpb/configpb.pb.gw.go @@ -20,7 +20,6 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -31,7 +30,6 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage -var _ = metadata.Join var ( filter_Config_Get_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} @@ -57,10 +55,7 @@ func local_request_Config_Get_0(ctx context.Context, marshaler runtime.Marshaler var protoReq GetRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_Get_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Config_Get_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -127,10 +122,7 @@ func local_request_Config_Delete_0(ctx context.Context, marshaler runtime.Marsha var protoReq DeleteRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_Delete_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Config_Delete_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -142,14 +134,11 @@ func local_request_Config_Delete_0(ctx context.Context, marshaler runtime.Marsha // RegisterConfigHandlerServer registers the http handlers for service Config to "mux". // UnaryRPC :call ConfigServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterConfigHandlerFromEndpoint instead. func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ConfigServer) error { mux.Handle("GET", pattern_Config_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -157,7 +146,6 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Get_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -171,8 +159,6 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser mux.Handle("POST", pattern_Config_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -180,7 +166,6 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -194,8 +179,6 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser mux.Handle("DELETE", pattern_Config_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -203,7 +186,6 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/pkg/tikvpb/tikvpb.pb.go b/pkg/tikvpb/tikvpb.pb.go index 966f9c366..e69d632c7 100644 --- a/pkg/tikvpb/tikvpb.pb.go +++ b/pkg/tikvpb/tikvpb.pb.go @@ -1185,6 +1185,8 @@ func (*BatchCommandsResponse_Response) XXX_OneofWrappers() []interface{} { type BatchRaftMessage struct { Msgs []*raft_serverpb.RaftMessage `protobuf:"bytes,1,rep,name=msgs,proto3" json:"msgs,omitempty"` + // Used for measure the send duration. + LastObservedTime uint64 `protobuf:"varint,13,opt,name=last_observed_time,json=lastObservedTime,proto3" json:"last_observed_time,omitempty"` } func (m *BatchRaftMessage) Reset() { *m = BatchRaftMessage{} } @@ -1227,6 +1229,13 @@ func (m *BatchRaftMessage) GetMsgs() []*raft_serverpb.RaftMessage { return nil } +func (m *BatchRaftMessage) GetLastObservedTime() uint64 { + if m != nil { + return m.LastObservedTime + } + return 0 +} + type BatchCommandsEmptyRequest struct { // ID of the test request. TestId uint64 `protobuf:"varint,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"` @@ -1339,180 +1348,182 @@ func init() { func init() { proto.RegisterFile("tikvpb.proto", fileDescriptor_274fe050f0c997b3) } var fileDescriptor_274fe050f0c997b3 = []byte{ - // 2764 bytes of a gzipped FileDescriptorProto + // 2786 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x9a, 0x4b, 0x77, 0xdb, 0xc6, - 0xf5, 0xc0, 0x41, 0x9b, 0xd6, 0x63, 0x64, 0xbd, 0x46, 0x92, 0x05, 0xc1, 0xb2, 0x64, 0xc3, 0xb2, - 0xad, 0x24, 0xe7, 0xaf, 0xbf, 0xed, 0xb8, 0x71, 0xe3, 0xa4, 0xa9, 0x2c, 0xca, 0x7a, 0x84, 0xd2, - 0x09, 0x4b, 0xd2, 0x89, 0xdb, 0xd3, 0x1e, 0x9d, 0x11, 0x39, 0xa2, 0x58, 0x91, 0x00, 0x0b, 0x0c, - 0x29, 0xf3, 0x5b, 0xf4, 0x74, 0xd5, 0x4d, 0xf7, 0xfd, 0x28, 0x5d, 0x66, 0x99, 0x65, 0x8f, 0xfd, - 0x19, 0xba, 0xe8, 0x2a, 0x3d, 0x33, 0x00, 0xe6, 0x85, 0x01, 0xc8, 0xac, 0x04, 0xcd, 0x7d, 0x61, - 0x66, 0x30, 0x77, 0x7e, 0xf7, 0x4a, 0xe0, 0x36, 0x69, 0x5f, 0x0d, 0x7a, 0xe7, 0x3b, 0xbd, 0xc0, - 0x27, 0x3e, 0x9c, 0x88, 0x7e, 0x73, 0x16, 0x1b, 0x7e, 0x2f, 0xf0, 0x1b, 0x38, 0x0c, 0xfd, 0x20, - 0x12, 0x39, 0xb3, 0x57, 0x83, 0xa0, 0xd7, 0x48, 0x34, 0x9d, 0xe9, 0x6e, 0xaf, 0x17, 0x3f, 0x2e, - 0x05, 0xe8, 0x82, 0x9c, 0x85, 0x38, 0x18, 0xe0, 0x80, 0xcb, 0x97, 0x9a, 0xed, 0x10, 0xb5, 0x5a, - 0x01, 0x6e, 0x21, 0x82, 0x9b, 0xf1, 0xe0, 0x72, 0xcb, 0x6f, 0xf9, 0xec, 0xf1, 0xff, 0xe9, 0x53, - 0x3c, 0x3a, 0x1f, 0xf4, 0x43, 0xc2, 0x1e, 0xa3, 0x01, 0xf7, 0x3f, 0x10, 0x2c, 0xef, 0x21, 0xd2, - 0xb8, 0x2c, 0xf9, 0xdd, 0x2e, 0xf2, 0x9a, 0x61, 0x15, 0xff, 0xa5, 0x8f, 0x43, 0x02, 0x77, 0xc1, - 0x54, 0x10, 0x3d, 0x86, 0x76, 0xe1, 0xfe, 0xcd, 0xed, 0x99, 0xe7, 0x5b, 0x3b, 0xf1, 0xfb, 0x9b, - 0xf4, 0x77, 0xe2, 0x9f, 0x55, 0x6e, 0x05, 0x37, 0xc1, 0x4c, 0xfc, 0x7c, 0xd6, 0x6e, 0x86, 0xf6, - 0x8d, 0xfb, 0x37, 0xb7, 0x8b, 0x55, 0x10, 0x0f, 0x1d, 0x37, 0x43, 0xe7, 0xbf, 0x8b, 0x60, 0x32, - 0x09, 0xf7, 0x04, 0xdc, 0x3c, 0xc4, 0xc4, 0x2e, 0xdc, 0x2f, 0x6c, 0xcf, 0x3c, 0x5f, 0xda, 0x49, - 0x16, 0xe0, 0x10, 0x93, 0x58, 0xe3, 0xc8, 0xaa, 0x52, 0x0d, 0xf8, 0x29, 0x28, 0xd6, 0x1a, 0xc8, - 0xb3, 0x6f, 0x30, 0xcd, 0x65, 0xae, 0x49, 0x07, 0x85, 0x2a, 0xd3, 0x81, 0x5f, 0x80, 0xa9, 0x4a, - 0x80, 0xaf, 0x83, 0x36, 0xc1, 0xf6, 0x4d, 0xa6, 0x6f, 0x73, 0xfd, 0x44, 0x20, 0x6c, 0xb8, 0x2e, - 0x7c, 0x0a, 0x26, 0xe8, 0xf4, 0xda, 0xc4, 0x2e, 0x32, 0xab, 0x3b, 0xdc, 0x2a, 0x1a, 0x16, 0x36, - 0xb1, 0x1e, 0xb5, 0x38, 0xee, 0xf6, 0xfc, 0x80, 0xd8, 0xb7, 0x34, 0x8b, 0x68, 0x58, 0xb2, 0x88, - 0x06, 0xe0, 0xe7, 0x60, 0xb2, 0xd4, 0xc1, 0xc8, 0xeb, 0xf7, 0xec, 0x09, 0x66, 0xb2, 0x2a, 0x82, - 0x44, 0xe3, 0xc2, 0x26, 0xd1, 0xa4, 0x13, 0x62, 0x8b, 0x4f, 0x97, 0x6a, 0x52, 0x9b, 0x50, 0x22, - 0x90, 0x26, 0x94, 0x0c, 0xc1, 0x37, 0x60, 0x96, 0x3d, 0x57, 0xfd, 0x4e, 0xe7, 0x1c, 0x35, 0xae, - 0xec, 0x29, 0x66, 0x7c, 0x4f, 0x35, 0x4e, 0xa4, 0xc2, 0x83, 0x6a, 0x45, 0xc3, 0xd3, 0x75, 0x3d, - 0xf1, 0x1b, 0x57, 0xf6, 0xb4, 0x16, 0x3e, 0x11, 0x48, 0xe1, 0x93, 0x21, 0xf8, 0x5b, 0x30, 0x53, - 0xc5, 0xa1, 0xdf, 0x19, 0x60, 0x66, 0x0a, 0x98, 0xe9, 0x5d, 0x6e, 0x2a, 0xc9, 0x84, 0xb5, 0x6c, - 0x01, 0xb7, 0xc0, 0x8d, 0xc3, 0x92, 0x3d, 0xc3, 0xec, 0xa0, 0xf8, 0x38, 0x4a, 0x42, 0xfd, 0xc6, - 0x61, 0x89, 0x86, 0xd9, 0xc7, 0x1d, 0x4c, 0x70, 0x15, 0x79, 0x2d, 0x6c, 0xdf, 0xd6, 0xc2, 0x48, - 0x32, 0x29, 0x8c, 0x34, 0x4a, 0x77, 0xb1, 0x8a, 0xae, 0xe9, 0xe2, 0xce, 0x6a, 0xbb, 0x18, 0x0d, - 0x4b, 0xbb, 0x18, 0x0d, 0xb0, 0x99, 0xa1, 0x6b, 0xbe, 0x27, 0x73, 0xfa, 0xcc, 0x84, 0x4c, 0x9e, - 0x99, 0x18, 0x8d, 0x43, 0x56, 0xfa, 0xc4, 0x9e, 0x4f, 0x87, 0xac, 0xf4, 0xb5, 0x90, 0x95, 0xbe, - 0x12, 0x92, 0x9a, 0x2d, 0x64, 0x84, 0x54, 0x6c, 0x65, 0x0b, 0xf8, 0x25, 0x98, 0xae, 0xa2, 0xeb, - 0x68, 0xde, 0xf6, 0x22, 0x33, 0x5f, 0x93, 0xcd, 0xe3, 0x15, 0xe1, 0xc6, 0x42, 0x1b, 0x1e, 0x81, - 0xb9, 0xc4, 0x53, 0x6c, 0x0f, 0x99, 0xfd, 0x46, 0x2a, 0xbc, 0xee, 0x44, 0xb3, 0xa3, 0x9f, 0x7f, - 0x15, 0x5d, 0xb3, 0x93, 0xbc, 0xa4, 0x7d, 0xfe, 0xf1, 0xb8, 0xf4, 0xf9, 0xc7, 0x23, 0x71, 0x78, - 0x79, 0x8f, 0x97, 0xd3, 0xe1, 0x8d, 0xdb, 0xac, 0xd9, 0xc1, 0x3d, 0x70, 0x3b, 0x79, 0x21, 0xf6, - 0x0e, 0x2b, 0xcc, 0xcf, 0x7a, 0x6a, 0x1a, 0xea, 0x8b, 0x28, 0x36, 0xf0, 0xd7, 0x60, 0xa6, 0x24, - 0x52, 0xb7, 0x7d, 0x27, 0x4e, 0x48, 0x72, 0x3a, 0x97, 0x76, 0x40, 0x52, 0x85, 0x65, 0x30, 0x5f, - 0xc1, 0x61, 0xd8, 0xee, 0xb6, 0x43, 0xd2, 0x6e, 0xb0, 0x33, 0xb1, 0xca, 0xac, 0x37, 0x45, 0x7a, - 0x52, 0xe5, 0xc2, 0x91, 0x6e, 0x09, 0x7f, 0x00, 0x4b, 0xd2, 0x10, 0x3f, 0xe1, 0x36, 0x73, 0xf8, - 0xd0, 0xe4, 0x30, 0x7d, 0xce, 0x4d, 0x1e, 0xe8, 0x6a, 0x97, 0x2e, 0x71, 0xe3, 0xaa, 0xfe, 0xde, - 0xab, 0x11, 0x44, 0xfa, 0xa1, 0xbd, 0xa6, 0xad, 0xb6, 0x2a, 0x96, 0x56, 0x5b, 0x15, 0xd0, 0xd5, - 0xae, 0xbf, 0xf7, 0x8e, 0x30, 0x0a, 0xc8, 0x1e, 0x46, 0xc4, 0x76, 0xb4, 0xd5, 0x96, 0x85, 0xd2, - 0x6a, 0xcb, 0xc3, 0x74, 0x9a, 0xcc, 0x6b, 0x0d, 0x37, 0x7c, 0xaf, 0x89, 0x82, 0x21, 0x9d, 0x7c, - 0x68, 0x3f, 0xd0, 0xa6, 0x69, 0xd0, 0x91, 0xa6, 0x69, 0x90, 0xc6, 0x1f, 0x95, 0xbc, 0x93, 0x6e, - 0xfa, 0xa3, 0x92, 0xc4, 0xea, 0x47, 0x25, 0x6f, 0x6b, 0x1d, 0xc0, 0x83, 0x0e, 0x0a, 0x2f, 0xe9, - 0xea, 0xd5, 0xfd, 0xef, 0x71, 0x10, 0xb6, 0x7d, 0xcf, 0x7e, 0xc8, 0xbc, 0xb9, 0xdc, 0x5b, 0x5a, - 0x45, 0x78, 0x34, 0xd8, 0xc3, 0x36, 0x58, 0xab, 0x04, 0xb8, 0x87, 0x02, 0x6c, 0x70, 0xbe, 0xc5, - 0x9c, 0x7f, 0x22, 0xdf, 0x6a, 0x66, 0x4d, 0x11, 0x23, 0xdb, 0x1b, 0xfc, 0x3f, 0x70, 0xeb, 0xa0, - 0xd3, 0x0f, 0x2f, 0xed, 0x47, 0xcc, 0xed, 0x8a, 0xf4, 0xce, 0xfd, 0xf0, 0x52, 0xb8, 0x88, 0xb4, - 0xe8, 0xca, 0xed, 0xf5, 0x2f, 0x2e, 0x70, 0xc0, 0xf3, 0xdf, 0x63, 0x6d, 0xe5, 0x54, 0xb1, 0xb4, - 0x72, 0xaa, 0x00, 0xfe, 0x0e, 0x2c, 0x1e, 0x62, 0x72, 0x84, 0x51, 0x87, 0x5c, 0x1e, 0x60, 0xdc, - 0x64, 0x5f, 0xf0, 0x13, 0xe6, 0xec, 0x81, 0xcc, 0x02, 0xaa, 0x86, 0xf0, 0x97, 0xb6, 0xa6, 0x9b, - 0xb1, 0x17, 0xf8, 0xa8, 0xd9, 0x40, 0x21, 0x11, 0x5f, 0xf0, 0xb6, 0xb6, 0x19, 0x69, 0x15, 0x69, - 0x33, 0xd2, 0x42, 0xf8, 0x0a, 0xdc, 0x7a, 0xd3, 0xed, 0x91, 0xa1, 0xfd, 0x73, 0x21, 0x7e, 0x3b, - 0x13, 0x13, 0x31, 0x15, 0x69, 0xb9, 0xd8, 0xef, 0x7b, 0xb7, 0xc0, 0xcd, 0x46, 0xb7, 0xf9, 0x6d, - 0x71, 0xea, 0xee, 0xc2, 0x03, 0xf7, 0x6f, 0xcb, 0x60, 0x45, 0xe3, 0xa8, 0xb0, 0xe7, 0x7b, 0x21, - 0x86, 0xfb, 0x60, 0x3a, 0x88, 0x9f, 0x13, 0xf2, 0x7a, 0x9c, 0x41, 0x5e, 0x91, 0xd6, 0x4e, 0xf2, - 0x50, 0x15, 0x86, 0x23, 0xe1, 0x0b, 0x3e, 0x05, 0xcb, 0x24, 0x40, 0x5e, 0x48, 0x61, 0xe4, 0xac, - 0x83, 0x86, 0x38, 0x38, 0xeb, 0xf8, 0xa8, 0xc9, 0x38, 0xa9, 0x58, 0x85, 0x5c, 0x76, 0x42, 0x45, - 0x27, 0x3e, 0x6a, 0xc2, 0x5d, 0x30, 0x7f, 0xc9, 0xd6, 0xf8, 0xec, 0x22, 0xd9, 0xa2, 0xa2, 0x96, - 0xba, 0xb5, 0xfd, 0x99, 0xbb, 0x54, 0x7e, 0x77, 0xfe, 0x01, 0xc1, 0x14, 0x9f, 0xe7, 0xb6, 0x4c, - 0x7c, 0xcb, 0x2a, 0xf1, 0x45, 0x2a, 0x09, 0xf2, 0x7d, 0xa6, 0x20, 0xdf, 0x8a, 0x86, 0x7c, 0x5c, - 0x37, 0x62, 0xbe, 0x97, 0x29, 0xe6, 0x5b, 0x33, 0x30, 0x1f, 0x37, 0x12, 0xd0, 0xf7, 0x4c, 0x83, - 0xbe, 0xd5, 0x14, 0xf4, 0x71, 0xa3, 0x84, 0xfa, 0x9e, 0x69, 0xd4, 0xb7, 0x9a, 0xa2, 0x3e, 0x61, - 0x12, 0x63, 0xdf, 0x0b, 0x1d, 0xfb, 0xec, 0x34, 0xf6, 0x71, 0x23, 0xce, 0x7d, 0x2f, 0x53, 0xdc, - 0xb7, 0x66, 0xe0, 0x3e, 0x31, 0x29, 0x7e, 0xb0, 0x0e, 0xcc, 0xe0, 0xb7, 0x91, 0x05, 0x7e, 0xdc, - 0x85, 0x46, 0x7e, 0x2f, 0x53, 0xe4, 0xb7, 0x66, 0x20, 0x3f, 0xf1, 0x02, 0x1c, 0xfd, 0x76, 0x4d, - 0xe8, 0xb7, 0x6e, 0x46, 0x3f, 0x6e, 0xae, 0xb0, 0xdf, 0x23, 0x89, 0xfd, 0x96, 0x14, 0xf6, 0xe3, - 0xfa, 0x14, 0xfe, 0x76, 0x4d, 0xf0, 0xb7, 0x6e, 0x86, 0x3f, 0x11, 0x48, 0x66, 0x82, 0x67, 0x1a, - 0xfd, 0xad, 0xa6, 0xe8, 0x4f, 0xec, 0x66, 0x8c, 0x7f, 0xbb, 0x26, 0xfc, 0x5b, 0x37, 0xe3, 0x9f, - 0x34, 0x3b, 0x89, 0xff, 0x9e, 0x69, 0xfc, 0xb7, 0x9a, 0xe2, 0x3f, 0x25, 0x28, 0xe5, 0xb7, 0x5d, - 0x13, 0x00, 0xae, 0x9b, 0x01, 0x30, 0x1d, 0x94, 0x7a, 0x78, 0x95, 0x26, 0x40, 0xc7, 0x44, 0x80, - 0xdc, 0x5a, 0x42, 0xc0, 0xe3, 0x0c, 0x04, 0xdc, 0xcc, 0x44, 0x40, 0xee, 0x45, 0x67, 0xc0, 0x17, - 0x3a, 0x03, 0xda, 0x69, 0x06, 0x14, 0x67, 0x21, 0x81, 0xc0, 0xe3, 0x0c, 0x08, 0xdc, 0xcc, 0x84, - 0x40, 0xe5, 0x05, 0xe4, 0x1d, 0x2f, 0x19, 0x29, 0xf0, 0x5e, 0x06, 0x05, 0x72, 0x37, 0x2a, 0x06, - 0x7e, 0x69, 0xc2, 0xc0, 0x15, 0x0d, 0x03, 0xc5, 0x3e, 0xc8, 0xc0, 0x70, 0x92, 0xc5, 0x81, 0xf7, - 0xb3, 0x39, 0x90, 0x7b, 0x4a, 0x81, 0xe0, 0xbb, 0x3c, 0x10, 0xdc, 0xca, 0x07, 0x41, 0xee, 0xd5, - 0x48, 0x82, 0xc7, 0x19, 0x24, 0xb8, 0x99, 0x49, 0x82, 0x62, 0xc9, 0x35, 0x14, 0x2c, 0x19, 0x51, - 0xf0, 0x5e, 0x06, 0x0a, 0x8a, 0x25, 0x57, 0x58, 0xf0, 0x5d, 0x1e, 0x0b, 0x6e, 0xe5, 0xb3, 0xa0, - 0x98, 0xa9, 0x09, 0x06, 0x8f, 0x33, 0x60, 0x70, 0x33, 0x13, 0x06, 0x95, 0x8f, 0x4b, 0xde, 0xdc, - 0xb7, 0x39, 0x34, 0xf8, 0x30, 0x97, 0x06, 0xb9, 0x4b, 0x13, 0x0e, 0xfe, 0x79, 0x34, 0x0e, 0x7e, - 0x3a, 0x0e, 0x0e, 0xf2, 0x20, 0x39, 0x3c, 0xb8, 0xa3, 0xf2, 0xe0, 0x1d, 0x9d, 0x07, 0xb9, 0x8f, - 0x18, 0x08, 0x8f, 0x33, 0x80, 0x70, 0x33, 0x13, 0x08, 0xc5, 0xea, 0x69, 0x44, 0x58, 0xcd, 0x26, - 0x42, 0x37, 0x8f, 0x08, 0xb9, 0x43, 0x03, 0x12, 0xbe, 0xcd, 0x41, 0xc2, 0x87, 0xb9, 0x48, 0x28, - 0x76, 0xc4, 0xc0, 0x84, 0x5f, 0x69, 0x4c, 0xe8, 0xe6, 0x31, 0xa1, 0x58, 0x32, 0x03, 0x14, 0xee, - 0x81, 0x85, 0xe8, 0xda, 0x45, 0x17, 0xe4, 0x14, 0x87, 0x21, 0x6a, 0x61, 0xb8, 0x03, 0x8a, 0xdd, - 0xb0, 0x95, 0x90, 0xa0, 0xb3, 0xa3, 0x36, 0x00, 0x25, 0xcd, 0x2a, 0xd3, 0x73, 0x6b, 0x60, 0x2d, - 0x93, 0x45, 0xe1, 0x2a, 0x98, 0x24, 0x11, 0x12, 0x32, 0xee, 0x2a, 0x56, 0x27, 0x08, 0xc3, 0x41, - 0x78, 0x0f, 0x80, 0x26, 0xee, 0xa0, 0xe1, 0x19, 0x69, 0x77, 0x31, 0x03, 0xad, 0x62, 0x75, 0x9a, - 0x8d, 0xd4, 0xdb, 0x5d, 0xec, 0xfe, 0x0a, 0x38, 0xd9, 0x93, 0xc9, 0xf4, 0xfa, 0xfc, 0xe7, 0xcf, - 0x40, 0xb1, 0xde, 0xbe, 0x1a, 0xc0, 0x17, 0xe0, 0x56, 0x79, 0x40, 0xb7, 0xd5, 0xd4, 0xd9, 0x73, - 0x8c, 0xf0, 0xe7, 0x5a, 0xf0, 0x25, 0x98, 0x28, 0x0f, 0x58, 0x8e, 0x35, 0xb6, 0xf9, 0x1c, 0x33, - 0x09, 0xba, 0x16, 0x2c, 0x01, 0x50, 0x1e, 0x70, 0xb0, 0xcb, 0xec, 0xf9, 0x39, 0xd9, 0x64, 0xe8, - 0x5a, 0xf0, 0x1d, 0x58, 0x2c, 0x0f, 0xf4, 0x1c, 0x3b, 0xaa, 0x40, 0x77, 0x46, 0x66, 0x6e, 0xd7, - 0x82, 0x4d, 0xb0, 0x52, 0xfe, 0xde, 0x94, 0x67, 0xc7, 0xa9, 0xd6, 0x9d, 0xb1, 0x32, 0xb9, 0x6b, - 0xc1, 0xef, 0xc0, 0x5c, 0x79, 0xa0, 0xa4, 0xcd, 0xdc, 0x82, 0xdb, 0xc9, 0xcf, 0xc1, 0xae, 0x05, - 0xdf, 0x82, 0x85, 0xf2, 0x40, 0x4b, 0xe7, 0x23, 0x7a, 0x01, 0xce, 0xa8, 0x1b, 0x22, 0x5e, 0x8d, - 0x81, 0x29, 0x17, 0x8f, 0x53, 0xd4, 0x3b, 0x63, 0x65, 0x7b, 0xd7, 0x82, 0xbf, 0x01, 0x53, 0xe5, - 0x41, 0x8c, 0xed, 0x19, 0xed, 0x5c, 0x27, 0x8b, 0xf8, 0x13, 0xf3, 0x18, 0xe1, 0x33, 0x7a, 0xbb, - 0x4e, 0x16, 0xfd, 0xbb, 0x16, 0xdc, 0x05, 0xd3, 0xe5, 0x41, 0x02, 0xf3, 0x59, 0x8d, 0x5e, 0x27, - 0xb3, 0x14, 0x48, 0x3e, 0x69, 0x9e, 0x1d, 0x33, 0xbb, 0xbe, 0x4e, 0x76, 0x5d, 0xe0, 0x5a, 0xb0, - 0x0a, 0xe6, 0x63, 0x27, 0xfc, 0x93, 0xcb, 0x6f, 0x01, 0x3b, 0x23, 0x0a, 0x85, 0xe4, 0xc5, 0x38, - 0xee, 0x67, 0xf6, 0x83, 0x9d, 0xec, 0x7a, 0xc1, 0xb5, 0xe0, 0x09, 0x98, 0x2d, 0x0f, 0x64, 0xe8, - 0xcf, 0x6b, 0x0e, 0x3b, 0xb9, 0xe5, 0x83, 0x6b, 0xc1, 0x67, 0xa0, 0x58, 0x1e, 0x1c, 0x96, 0xa0, - 0xa1, 0x53, 0xec, 0x98, 0x2a, 0x88, 0xe4, 0x05, 0x64, 0x34, 0xcc, 0x6b, 0x1b, 0x3b, 0xb9, 0x65, - 0x85, 0x6b, 0xc1, 0x01, 0xb8, 0xcb, 0xf2, 0x4f, 0xc6, 0xb5, 0x3a, 0x7e, 0xbb, 0xc6, 0xf9, 0x05, - 0x57, 0xb9, 0x6b, 0x41, 0x04, 0x96, 0xcb, 0x03, 0x43, 0xc0, 0x31, 0x9a, 0x4f, 0xce, 0x38, 0x48, - 0xe2, 0x5a, 0xf0, 0x15, 0x98, 0xa4, 0x21, 0xe8, 0x6d, 0x6f, 0x6e, 0x0f, 0x39, 0x19, 0x94, 0x90, - 0x24, 0x10, 0xed, 0x9e, 0x1f, 0xd1, 0x2b, 0x72, 0x46, 0xa1, 0x83, 0x6b, 0xc1, 0xaf, 0x92, 0xba, - 0x0d, 0x66, 0xf4, 0xeb, 0x9d, 0xac, 0x4a, 0xce, 0xb5, 0xe0, 0xb7, 0x4a, 0x05, 0x07, 0xf3, 0x5a, - 0xf7, 0x4e, 0x6e, 0x61, 0xc7, 0x5f, 0x84, 0x16, 0x58, 0x19, 0x5d, 0x7c, 0x27, 0xab, 0xba, 0x53, - 0x5f, 0x84, 0x7a, 0xc8, 0x6b, 0xe8, 0x3b, 0xb9, 0xc5, 0x9e, 0x6b, 0xc1, 0x7d, 0xa9, 0xbe, 0x83, - 0xd9, 0xbd, 0x7d, 0x27, 0xa7, 0xe8, 0x73, 0x2d, 0x58, 0xd3, 0x2b, 0x3d, 0x38, 0xa2, 0xcd, 0xef, - 0x8c, 0xaa, 0x01, 0x5d, 0x0b, 0x7e, 0xc3, 0x6b, 0x3e, 0x98, 0xd5, 0xf1, 0x77, 0x32, 0xcb, 0x40, - 0xfe, 0x52, 0xf2, 0x49, 0x1d, 0xd1, 0xfc, 0x77, 0x46, 0xd5, 0x85, 0xae, 0x05, 0x4f, 0xd5, 0x3a, - 0x10, 0xe6, 0xfe, 0x1d, 0xc0, 0xc9, 0xaf, 0x0f, 0xb9, 0xbb, 0x43, 0x4c, 0xca, 0x78, 0x58, 0xaf, - 0x9f, 0xa8, 0xee, 0xf8, 0xb0, 0xd1, 0x9d, 0x24, 0xe5, 0xee, 0x0e, 0xc0, 0x22, 0x2b, 0x2d, 0xba, - 0xf4, 0xfc, 0xbf, 0xf6, 0x9a, 0xb5, 0x6b, 0xd4, 0x53, 0xbf, 0xb0, 0xd2, 0xeb, 0x9a, 0xf1, 0x0b, - 0x63, 0xe3, 0xda, 0x17, 0xc6, 0xae, 0xc9, 0xb0, 0xdf, 0x55, 0xbf, 0xb0, 0x64, 0xd4, 0xf8, 0x85, - 0x09, 0x21, 0xf7, 0x75, 0x06, 0xe0, 0x5b, 0x2f, 0x44, 0x17, 0x78, 0x1f, 0x87, 0x24, 0xf0, 0x87, - 0xd1, 0x56, 0x88, 0x3c, 0x93, 0x16, 0xa6, 0xf3, 0x8c, 0x49, 0x87, 0x07, 0xc0, 0x60, 0xb9, 0x8a, - 0x5b, 0xed, 0x90, 0xe0, 0x80, 0x66, 0xf7, 0xef, 0xce, 0x23, 0xe4, 0x85, 0x5b, 0x52, 0xee, 0x4f, - 0x8b, 0x93, 0x20, 0x8f, 0x46, 0x68, 0xf1, 0x30, 0x7f, 0x04, 0x8b, 0x6c, 0x76, 0x4a, 0x8c, 0x07, - 0x2a, 0x53, 0x98, 0x02, 0xb8, 0x79, 0x2a, 0xf2, 0x2a, 0x55, 0x71, 0xd7, 0x8f, 0x2e, 0x28, 0xee, - 0xde, 0x95, 0x5e, 0x4e, 0x17, 0xa6, 0x57, 0xc9, 0xa4, 0xc3, 0x03, 0xfc, 0x1e, 0x2c, 0x54, 0x2e, - 0x87, 0x61, 0xbb, 0x81, 0x3a, 0xfc, 0x0a, 0x96, 0x08, 0x54, 0x13, 0x25, 0xce, 0x1f, 0xe4, 0x68, - 0x70, 0xd7, 0x5f, 0x2b, 0x6d, 0x0d, 0x68, 0xfc, 0xbb, 0x96, 0x63, 0x6e, 0x73, 0xb0, 0x0c, 0xb4, - 0x28, 0x59, 0xd7, 0x48, 0x80, 0x51, 0xf7, 0x17, 0xfa, 0x78, 0x5a, 0x80, 0xa7, 0x71, 0x3d, 0x24, - 0xbf, 0xc8, 0x9a, 0xa2, 0x1e, 0x51, 0x09, 0x4f, 0x67, 0x06, 0x91, 0xe4, 0xae, 0xa6, 0x17, 0xf7, - 0x70, 0xc4, 0xdf, 0x78, 0x9c, 0x51, 0x65, 0x3f, 0x4b, 0xfa, 0x45, 0x5a, 0x84, 0xc1, 0x9c, 0xca, - 0xcc, 0x59, 0xd2, 0x64, 0xfb, 0xbe, 0x87, 0x5d, 0x6b, 0xbb, 0x00, 0xbf, 0x01, 0xd3, 0xbc, 0xe0, - 0x83, 0xb6, 0x52, 0x37, 0x8e, 0x65, 0xff, 0x1a, 0x4c, 0xd5, 0x3c, 0xd4, 0x0b, 0x2f, 0x7d, 0x4a, - 0xf7, 0xaa, 0x52, 0x22, 0x28, 0x5d, 0xf6, 0xbd, 0xab, 0x6c, 0x17, 0x0d, 0x30, 0x57, 0x47, 0xe7, - 0x1d, 0x4c, 0xb8, 0xa3, 0x2d, 0x4d, 0x55, 0x15, 0x8b, 0x23, 0x96, 0xaf, 0x95, 0x2c, 0xd0, 0x76, - 0xe1, 0x69, 0x81, 0xa6, 0x9e, 0x5a, 0xaf, 0x43, 0x89, 0xba, 0x45, 0x79, 0x44, 0xa4, 0x1e, 0x69, - 0x34, 0x9d, 0x7a, 0x14, 0xa1, 0x72, 0xb9, 0x61, 0xd4, 0x3c, 0xf6, 0x9a, 0xf8, 0xbd, 0x7c, 0xb9, - 0x25, 0x63, 0x86, 0xcb, 0x4d, 0x88, 0xe4, 0x1c, 0x7d, 0x3a, 0x68, 0x34, 0x0e, 0x31, 0xd9, 0x1b, - 0x96, 0xf1, 0x50, 0xca, 0xd1, 0xf2, 0x70, 0x3a, 0x47, 0xab, 0x52, 0xf9, 0x20, 0x72, 0x49, 0x8d, - 0xa0, 0x80, 0xd4, 0x43, 0xe9, 0x20, 0xea, 0xa2, 0xf4, 0x41, 0x4c, 0x6b, 0x48, 0xd0, 0x3e, 0xab, - 0xd4, 0xde, 0x70, 0x3d, 0xef, 0xff, 0x70, 0x9c, 0x7b, 0xb9, 0x7f, 0x2b, 0x8a, 0xf7, 0xe3, 0x08, - 0xcc, 0xef, 0xb7, 0xc3, 0x1e, 0xd5, 0x38, 0xad, 0x54, 0xea, 0x28, 0xa4, 0xe4, 0xde, 0xed, 0xf5, - 0x76, 0x92, 0x51, 0x3a, 0x24, 0xc8, 0x3d, 0x2d, 0xe1, 0x6f, 0xb7, 0x07, 0x66, 0x4b, 0xc8, 0x6b, - 0xe0, 0x4e, 0xe2, 0xe7, 0x0e, 0xd3, 0x8e, 0xc6, 0x64, 0x2f, 0xab, 0xa9, 0x71, 0xee, 0xa3, 0x0e, - 0xee, 0xbc, 0x09, 0x09, 0x3a, 0xef, 0xb4, 0x43, 0xfa, 0x3a, 0x25, 0xdf, 0xf3, 0x70, 0x83, 0x44, - 0xe0, 0x4a, 0x8d, 0xcc, 0xc2, 0xc4, 0x31, 0x64, 0x3a, 0xa7, 0x95, 0xca, 0x3e, 0x22, 0xa8, 0x82, - 0x1a, 0x57, 0x98, 0xb0, 0xd3, 0xfe, 0x05, 0x98, 0x3c, 0x0e, 0x5f, 0x77, 0xda, 0x03, 0x0c, 0x97, - 0x98, 0x4a, 0xfc, 0x9b, 0xe8, 0x3a, 0x28, 0x83, 0xd2, 0xdb, 0x2c, 0x55, 0x31, 0xad, 0xdf, 0xe2, - 0x19, 0xc5, 0x95, 0xee, 0x3a, 0x53, 0x8f, 0x24, 0x62, 0x58, 0xac, 0xba, 0x59, 0xca, 0xbd, 0x1e, - 0x81, 0x99, 0xe8, 0xa6, 0xc0, 0xa8, 0x89, 0x03, 0xe9, 0x04, 0x48, 0xa3, 0xe9, 0x13, 0xa0, 0x08, - 0xe3, 0x6e, 0x4b, 0x19, 0xcc, 0x1d, 0x62, 0x52, 0x23, 0x7e, 0x80, 0x6b, 0xe8, 0x02, 0xd7, 0x6b, - 0xf2, 0x71, 0x12, 0xa3, 0x86, 0xe3, 0x24, 0x0b, 0x63, 0x67, 0x75, 0x30, 0x7f, 0x88, 0x09, 0x4d, - 0xfd, 0x3f, 0xa0, 0x36, 0x39, 0xf6, 0x2e, 0x7c, 0xa9, 0xc5, 0xa1, 0x49, 0xd2, 0x2d, 0x8e, 0x94, - 0x42, 0xec, 0xf5, 0x6b, 0x30, 0xc9, 0x70, 0xa5, 0x41, 0xa0, 0x52, 0x53, 0xd3, 0x11, 0x43, 0xb1, - 0x9b, 0x08, 0x62, 0xeb, 0x3f, 0x01, 0x28, 0x39, 0x3e, 0x6a, 0x87, 0xc4, 0x0f, 0x86, 0xd0, 0x35, - 0x45, 0x8d, 0x85, 0xe9, 0x5b, 0xd3, 0xa4, 0x13, 0xbb, 0x3f, 0x07, 0x2b, 0x87, 0x98, 0xd4, 0xdb, - 0xac, 0xcc, 0xa9, 0x0d, 0x43, 0x82, 0xbb, 0x2c, 0x77, 0x49, 0x11, 0xd2, 0xc2, 0x74, 0x04, 0x93, - 0x8e, 0x44, 0xa9, 0x80, 0x04, 0xc3, 0xd7, 0xcd, 0x66, 0x7c, 0x23, 0xab, 0xff, 0xa0, 0x57, 0xe7, - 0x22, 0x91, 0x08, 0xb2, 0x35, 0x24, 0x56, 0x99, 0x25, 0xc1, 0xf0, 0x14, 0x05, 0x57, 0x31, 0x8e, - 0x3f, 0x4c, 0x5b, 0x09, 0xa9, 0x68, 0x90, 0xe4, 0x2a, 0x71, 0xef, 0x1e, 0x58, 0xe2, 0xe7, 0x6c, - 0x9f, 0x59, 0xb0, 0xe3, 0xfc, 0x89, 0x66, 0x6e, 0xd0, 0x11, 0xb5, 0xea, 0x18, 0xaa, 0x12, 0xe0, - 0x2d, 0x44, 0xc9, 0x40, 0x0a, 0xf6, 0x58, 0xf3, 0xa0, 0x2b, 0x24, 0x91, 0x9e, 0x8c, 0xd4, 0xe3, - 0x61, 0xfe, 0x00, 0x16, 0x0e, 0x30, 0x2d, 0x44, 0x98, 0xb0, 0x82, 0x5a, 0x38, 0x4c, 0x85, 0xd1, - 0x15, 0xc4, 0x0d, 0xa2, 0xea, 0x31, 0xa1, 0x94, 0x61, 0xce, 0xd9, 0xe1, 0x89, 0x0c, 0x4b, 0xbe, - 0x77, 0xd1, 0x6e, 0xc1, 0x47, 0x9a, 0x89, 0x26, 0x4f, 0x3c, 0x3f, 0x1e, 0xa5, 0x26, 0x03, 0x6a, - 0xba, 0x91, 0x3d, 0xfa, 0x7f, 0x22, 0x9c, 0x31, 0x9a, 0xe4, 0x11, 0xa0, 0x1a, 0x1a, 0xda, 0x63, - 0xfc, 0x7b, 0x84, 0x33, 0x4e, 0xbf, 0xdc, 0xb5, 0xf6, 0x9e, 0xff, 0xf4, 0xcf, 0xa9, 0xc2, 0xbf, - 0x3e, 0x6c, 0x14, 0x7e, 0xfc, 0xb0, 0x51, 0xf8, 0xf7, 0x87, 0x8d, 0xc2, 0x5f, 0x3f, 0x6e, 0x58, - 0x7f, 0xff, 0xb8, 0x61, 0xfd, 0xf8, 0x71, 0xc3, 0xfa, 0xe9, 0xe3, 0x86, 0x05, 0x16, 0xfc, 0xa0, - 0xc5, 0xae, 0xac, 0x9d, 0xab, 0x01, 0xfb, 0x97, 0xd4, 0xf3, 0x09, 0xf6, 0xe3, 0xf3, 0xff, 0x05, - 0x00, 0x00, 0xff, 0xff, 0x1e, 0x86, 0x89, 0x5f, 0x2f, 0x2b, 0x00, 0x00, + 0x15, 0x80, 0x41, 0x9b, 0xd6, 0x63, 0x14, 0xbd, 0x46, 0x92, 0x05, 0xc1, 0xb2, 0x64, 0xc3, 0xb2, + 0xad, 0x24, 0xad, 0x6a, 0x3b, 0x6e, 0xdc, 0x38, 0x69, 0x2a, 0x8b, 0xb2, 0x1e, 0xa1, 0x74, 0xc2, + 0x92, 0x74, 0xe2, 0xf6, 0xb4, 0x47, 0x67, 0x44, 0x8e, 0x28, 0x56, 0x24, 0xc0, 0x02, 0x43, 0xca, + 0xfc, 0x17, 0x3d, 0x5d, 0x75, 0xd3, 0x7d, 0x7f, 0x4a, 0x97, 0x59, 0x66, 0xd9, 0x63, 0xff, 0x86, + 0x2e, 0xba, 0x4a, 0xcf, 0x0c, 0x80, 0x79, 0x61, 0x00, 0x32, 0x2b, 0x51, 0x73, 0x5f, 0x98, 0x19, + 0xcc, 0x9d, 0xef, 0x5e, 0x12, 0x7c, 0x44, 0xda, 0x57, 0x83, 0xde, 0xf9, 0x4e, 0x2f, 0xf0, 0x89, + 0x0f, 0x27, 0xa2, 0xff, 0x9c, 0xc5, 0x86, 0xdf, 0x0b, 0xfc, 0x06, 0x0e, 0x43, 0x3f, 0x88, 0x44, + 0xce, 0xec, 0xd5, 0x20, 0xe8, 0x35, 0x12, 0x4d, 0x67, 0xba, 0xdb, 0xeb, 0xc5, 0x1f, 0x97, 0x02, + 0x74, 0x41, 0xce, 0x42, 0x1c, 0x0c, 0x70, 0xc0, 0xe5, 0x4b, 0xcd, 0x76, 0x88, 0x5a, 0xad, 0x00, + 0xb7, 0x10, 0xc1, 0xcd, 0x78, 0x70, 0xb9, 0xe5, 0xb7, 0x7c, 0xf6, 0xf1, 0x57, 0xf4, 0x53, 0x3c, + 0x3a, 0x1f, 0xf4, 0x43, 0xc2, 0x3e, 0x46, 0x03, 0xee, 0x7f, 0x21, 0x58, 0xde, 0x43, 0xa4, 0x71, + 0x59, 0xf2, 0xbb, 0x5d, 0xe4, 0x35, 0xc3, 0x2a, 0xfe, 0x6b, 0x1f, 0x87, 0x04, 0xee, 0x82, 0xa9, + 0x20, 0xfa, 0x18, 0xda, 0x85, 0x7b, 0x37, 0xb7, 0x67, 0x9e, 0x6d, 0xed, 0xc4, 0xcf, 0x6f, 0xd2, + 0xdf, 0x89, 0xff, 0x56, 0xb9, 0x15, 0xdc, 0x04, 0x33, 0xf1, 0xe7, 0xb3, 0x76, 0x33, 0xb4, 0x6f, + 0xdc, 0xbb, 0xb9, 0x5d, 0xac, 0x82, 0x78, 0xe8, 0xb8, 0x19, 0x3a, 0xff, 0x5b, 0x04, 0x93, 0x49, + 0xb8, 0xc7, 0xe0, 0xe6, 0x21, 0x26, 0x76, 0xe1, 0x5e, 0x61, 0x7b, 0xe6, 0xd9, 0xd2, 0x4e, 0xb2, + 0x00, 0x87, 0x98, 0xc4, 0x1a, 0x47, 0x56, 0x95, 0x6a, 0xc0, 0x4f, 0x40, 0xb1, 0xd6, 0x40, 0x9e, + 0x7d, 0x83, 0x69, 0x2e, 0x73, 0x4d, 0x3a, 0x28, 0x54, 0x99, 0x0e, 0xfc, 0x1c, 0x4c, 0x55, 0x02, + 0x7c, 0x1d, 0xb4, 0x09, 0xb6, 0x6f, 0x32, 0x7d, 0x9b, 0xeb, 0x27, 0x02, 0x61, 0xc3, 0x75, 0xe1, + 0x13, 0x30, 0x41, 0xa7, 0xd7, 0x26, 0x76, 0x91, 0x59, 0xdd, 0xe6, 0x56, 0xd1, 0xb0, 0xb0, 0x89, + 0xf5, 0xa8, 0xc5, 0x71, 0xb7, 0xe7, 0x07, 0xc4, 0xbe, 0xa5, 0x59, 0x44, 0xc3, 0x92, 0x45, 0x34, + 0x00, 0x3f, 0x03, 0x93, 0xa5, 0x0e, 0x46, 0x5e, 0xbf, 0x67, 0x4f, 0x30, 0x93, 0x55, 0x11, 0x24, + 0x1a, 0x17, 0x36, 0x89, 0x26, 0x9d, 0x10, 0x5b, 0x7c, 0xba, 0x54, 0x93, 0xda, 0x84, 0x12, 0x81, + 0x34, 0xa1, 0x64, 0x08, 0xbe, 0x06, 0xb3, 0xec, 0x73, 0xd5, 0xef, 0x74, 0xce, 0x51, 0xe3, 0xca, + 0x9e, 0x62, 0xc6, 0x77, 0x55, 0xe3, 0x44, 0x2a, 0x3c, 0xa8, 0x56, 0x34, 0x3c, 0x5d, 0xd7, 0x13, + 0xbf, 0x71, 0x65, 0x4f, 0x6b, 0xe1, 0x13, 0x81, 0x14, 0x3e, 0x19, 0x82, 0xbf, 0x03, 0x33, 0x55, + 0x1c, 0xfa, 0x9d, 0x01, 0x66, 0xa6, 0x80, 0x99, 0xde, 0xe1, 0xa6, 0x92, 0x4c, 0x58, 0xcb, 0x16, + 0x70, 0x0b, 0xdc, 0x38, 0x2c, 0xd9, 0x33, 0xcc, 0x0e, 0x8a, 0x97, 0xa3, 0x24, 0xd4, 0x6f, 0x1c, + 0x96, 0x68, 0x98, 0x7d, 0xdc, 0xc1, 0x04, 0x57, 0x91, 0xd7, 0xc2, 0xf6, 0x47, 0x5a, 0x18, 0x49, + 0x26, 0x85, 0x91, 0x46, 0xe9, 0x2e, 0x56, 0xd1, 0x35, 0x5d, 0xdc, 0x59, 0x6d, 0x17, 0xa3, 0x61, + 0x69, 0x17, 0xa3, 0x01, 0x36, 0x33, 0x74, 0xcd, 0xf7, 0x64, 0x4e, 0x9f, 0x99, 0x90, 0xc9, 0x33, + 0x13, 0xa3, 0x71, 0xc8, 0x4a, 0x9f, 0xd8, 0xf3, 0xe9, 0x90, 0x95, 0xbe, 0x16, 0xb2, 0xd2, 0x57, + 0x42, 0x52, 0xb3, 0x85, 0x8c, 0x90, 0x8a, 0xad, 0x6c, 0x01, 0xbf, 0x00, 0xd3, 0x55, 0x74, 0x1d, + 0xcd, 0xdb, 0x5e, 0x64, 0xe6, 0x6b, 0xb2, 0x79, 0xbc, 0x22, 0xdc, 0x58, 0x68, 0xc3, 0x23, 0x30, + 0x97, 0x78, 0x8a, 0xed, 0x21, 0xb3, 0xdf, 0x48, 0x85, 0xd7, 0x9d, 0x68, 0x76, 0xf4, 0xf5, 0xaf, + 0xa2, 0x6b, 0x76, 0x92, 0x97, 0xb4, 0xd7, 0x3f, 0x1e, 0x97, 0x5e, 0xff, 0x78, 0x24, 0x0e, 0x2f, + 0xef, 0xf1, 0x72, 0x3a, 0xbc, 0x71, 0x9b, 0x35, 0x3b, 0xb8, 0x07, 0x3e, 0x4a, 0x1e, 0x88, 0x3d, + 0xc3, 0x0a, 0xf3, 0xb3, 0x9e, 0x9a, 0x86, 0xfa, 0x20, 0x8a, 0x0d, 0xfc, 0x0d, 0x98, 0x29, 0x89, + 0xd4, 0x6d, 0xdf, 0x8e, 0x13, 0x92, 0x9c, 0xce, 0xa5, 0x1d, 0x90, 0x54, 0x61, 0x19, 0xcc, 0x57, + 0x70, 0x18, 0xb6, 0xbb, 0xed, 0x90, 0xb4, 0x1b, 0xec, 0x4c, 0xac, 0x32, 0xeb, 0x4d, 0x91, 0x9e, + 0x54, 0xb9, 0x70, 0xa4, 0x5b, 0xc2, 0xef, 0xc1, 0x92, 0x34, 0xc4, 0x4f, 0xb8, 0xcd, 0x1c, 0x3e, + 0x30, 0x39, 0x4c, 0x9f, 0x73, 0x93, 0x07, 0xba, 0xda, 0xa5, 0x4b, 0xdc, 0xb8, 0xaa, 0xbf, 0xf3, + 0x6a, 0x04, 0x91, 0x7e, 0x68, 0xaf, 0x69, 0xab, 0xad, 0x8a, 0xa5, 0xd5, 0x56, 0x05, 0x74, 0xb5, + 0xeb, 0xef, 0xbc, 0x23, 0x8c, 0x02, 0xb2, 0x87, 0x11, 0xb1, 0x1d, 0x6d, 0xb5, 0x65, 0xa1, 0xb4, + 0xda, 0xf2, 0x30, 0x9d, 0x26, 0xf3, 0x5a, 0xc3, 0x0d, 0xdf, 0x6b, 0xa2, 0x60, 0x48, 0x27, 0x1f, + 0xda, 0xf7, 0xb5, 0x69, 0x1a, 0x74, 0xa4, 0x69, 0x1a, 0xa4, 0xf1, 0x4b, 0x25, 0xef, 0xa4, 0x9b, + 0x7e, 0xa9, 0x24, 0xb1, 0xfa, 0x52, 0xc9, 0xdb, 0x5a, 0x07, 0xf0, 0xa0, 0x83, 0xc2, 0x4b, 0xba, + 0x7a, 0x75, 0xff, 0x3b, 0x1c, 0x84, 0x6d, 0xdf, 0xb3, 0x1f, 0x30, 0x6f, 0x2e, 0xf7, 0x96, 0x56, + 0x11, 0x1e, 0x0d, 0xf6, 0xb0, 0x0d, 0xd6, 0x2a, 0x01, 0xee, 0xa1, 0x00, 0x1b, 0x9c, 0x6f, 0x31, + 0xe7, 0x1f, 0xcb, 0xb7, 0x9a, 0x59, 0x53, 0xc4, 0xc8, 0xf6, 0x06, 0x7f, 0x09, 0x6e, 0x1d, 0x74, + 0xfa, 0xe1, 0xa5, 0xfd, 0x90, 0xb9, 0x5d, 0x91, 0x9e, 0xb9, 0x1f, 0x5e, 0x0a, 0x17, 0x91, 0x16, + 0x5d, 0xb9, 0xbd, 0xfe, 0xc5, 0x05, 0x0e, 0x78, 0xfe, 0x7b, 0xa4, 0xad, 0x9c, 0x2a, 0x96, 0x56, + 0x4e, 0x15, 0xc0, 0xdf, 0x83, 0xc5, 0x43, 0x4c, 0x8e, 0x30, 0xea, 0x90, 0xcb, 0x03, 0x8c, 0x9b, + 0xec, 0x0d, 0x7e, 0xcc, 0x9c, 0xdd, 0x97, 0x59, 0x40, 0xd5, 0x10, 0xfe, 0xd2, 0xd6, 0x74, 0x33, + 0xf6, 0x02, 0x1f, 0x35, 0x1b, 0x28, 0x24, 0xe2, 0x0d, 0xde, 0xd6, 0x36, 0x23, 0xad, 0x22, 0x6d, + 0x46, 0x5a, 0x08, 0x5f, 0x82, 0x5b, 0xaf, 0xbb, 0x3d, 0x32, 0xb4, 0x7f, 0x2a, 0xc4, 0x4f, 0x67, + 0x62, 0x22, 0xa6, 0x22, 0x2d, 0x17, 0xfb, 0x7f, 0xef, 0x16, 0xb8, 0xd9, 0xe8, 0x36, 0xbf, 0x29, + 0x4e, 0xdd, 0x59, 0xb8, 0xef, 0xfe, 0x7d, 0x19, 0xac, 0x68, 0x1c, 0x15, 0xf6, 0x7c, 0x2f, 0xc4, + 0x70, 0x1f, 0x4c, 0x07, 0xf1, 0xe7, 0x84, 0xbc, 0x1e, 0x65, 0x90, 0x57, 0xa4, 0xb5, 0x93, 0x7c, + 0xa8, 0x0a, 0xc3, 0x91, 0xf0, 0x05, 0x9f, 0x80, 0x65, 0x12, 0x20, 0x2f, 0xa4, 0x30, 0x72, 0xd6, + 0x41, 0x43, 0x1c, 0x9c, 0x75, 0x7c, 0xd4, 0x64, 0x9c, 0x54, 0xac, 0x42, 0x2e, 0x3b, 0xa1, 0xa2, + 0x13, 0x1f, 0x35, 0xe1, 0x2e, 0x98, 0xbf, 0x64, 0x6b, 0x7c, 0x76, 0x91, 0x6c, 0x51, 0x51, 0x4b, + 0xdd, 0xda, 0xfe, 0xcc, 0x5d, 0x2a, 0xff, 0x3b, 0xff, 0x84, 0x60, 0x8a, 0xcf, 0x73, 0x5b, 0x26, + 0xbe, 0x65, 0x95, 0xf8, 0x22, 0x95, 0x04, 0xf9, 0x3e, 0x55, 0x90, 0x6f, 0x45, 0x43, 0x3e, 0xae, + 0x1b, 0x31, 0xdf, 0x8b, 0x14, 0xf3, 0xad, 0x19, 0x98, 0x8f, 0x1b, 0x09, 0xe8, 0x7b, 0xaa, 0x41, + 0xdf, 0x6a, 0x0a, 0xfa, 0xb8, 0x51, 0x42, 0x7d, 0x4f, 0x35, 0xea, 0x5b, 0x4d, 0x51, 0x9f, 0x30, + 0x89, 0xb1, 0xef, 0xb9, 0x8e, 0x7d, 0x76, 0x1a, 0xfb, 0xb8, 0x11, 0xe7, 0xbe, 0x17, 0x29, 0xee, + 0x5b, 0x33, 0x70, 0x9f, 0x98, 0x14, 0x3f, 0x58, 0x07, 0x66, 0xf0, 0xdb, 0xc8, 0x02, 0x3f, 0xee, + 0x42, 0x23, 0xbf, 0x17, 0x29, 0xf2, 0x5b, 0x33, 0x90, 0x9f, 0x78, 0x00, 0x8e, 0x7e, 0xbb, 0x26, + 0xf4, 0x5b, 0x37, 0xa3, 0x1f, 0x37, 0x57, 0xd8, 0xef, 0xa1, 0xc4, 0x7e, 0x4b, 0x0a, 0xfb, 0x71, + 0x7d, 0x0a, 0x7f, 0xbb, 0x26, 0xf8, 0x5b, 0x37, 0xc3, 0x9f, 0x08, 0x24, 0x33, 0xc1, 0x53, 0x8d, + 0xfe, 0x56, 0x53, 0xf4, 0x27, 0x76, 0x33, 0xc6, 0xbf, 0x5d, 0x13, 0xfe, 0xad, 0x9b, 0xf1, 0x4f, + 0x9a, 0x9d, 0xc4, 0x7f, 0x4f, 0x35, 0xfe, 0x5b, 0x4d, 0xf1, 0x9f, 0x12, 0x94, 0xf2, 0xdb, 0xae, + 0x09, 0x00, 0xd7, 0xcd, 0x00, 0x98, 0x0e, 0x4a, 0x3d, 0xbc, 0x4c, 0x13, 0xa0, 0x63, 0x22, 0x40, + 0x6e, 0x2d, 0x21, 0xe0, 0x71, 0x06, 0x02, 0x6e, 0x66, 0x22, 0x20, 0xf7, 0xa2, 0x33, 0xe0, 0x73, + 0x9d, 0x01, 0xed, 0x34, 0x03, 0x8a, 0xb3, 0x90, 0x40, 0xe0, 0x71, 0x06, 0x04, 0x6e, 0x66, 0x42, + 0xa0, 0xf2, 0x00, 0xf2, 0x8e, 0x97, 0x8c, 0x14, 0x78, 0x37, 0x83, 0x02, 0xb9, 0x1b, 0x15, 0x03, + 0xbf, 0x30, 0x61, 0xe0, 0x8a, 0x86, 0x81, 0x62, 0x1f, 0x64, 0x60, 0x38, 0xc9, 0xe2, 0xc0, 0x7b, + 0xd9, 0x1c, 0xc8, 0x3d, 0xa5, 0x40, 0xf0, 0x6d, 0x1e, 0x08, 0x6e, 0xe5, 0x83, 0x20, 0xf7, 0x6a, + 0x24, 0xc1, 0xe3, 0x0c, 0x12, 0xdc, 0xcc, 0x24, 0x41, 0xb1, 0xe4, 0x1a, 0x0a, 0x96, 0x8c, 0x28, + 0x78, 0x37, 0x03, 0x05, 0xc5, 0x92, 0x2b, 0x2c, 0xf8, 0x36, 0x8f, 0x05, 0xb7, 0xf2, 0x59, 0x50, + 0xcc, 0xd4, 0x04, 0x83, 0xc7, 0x19, 0x30, 0xb8, 0x99, 0x09, 0x83, 0xca, 0xcb, 0x25, 0x6f, 0xee, + 0x9b, 0x1c, 0x1a, 0x7c, 0x90, 0x4b, 0x83, 0xdc, 0xa5, 0x09, 0x07, 0xff, 0x32, 0x1a, 0x07, 0x3f, + 0x19, 0x07, 0x07, 0x79, 0x90, 0x1c, 0x1e, 0xdc, 0x51, 0x79, 0xf0, 0xb6, 0xce, 0x83, 0xdc, 0x47, + 0x0c, 0x84, 0xc7, 0x19, 0x40, 0xb8, 0x99, 0x09, 0x84, 0x62, 0xf5, 0x34, 0x22, 0xac, 0x66, 0x13, + 0xa1, 0x9b, 0x47, 0x84, 0xdc, 0xa1, 0x01, 0x09, 0xdf, 0xe4, 0x20, 0xe1, 0x83, 0x5c, 0x24, 0x14, + 0x3b, 0x62, 0x60, 0xc2, 0x2f, 0x35, 0x26, 0x74, 0xf3, 0x98, 0x50, 0x2c, 0x99, 0x01, 0x0a, 0x7b, + 0x60, 0x21, 0xba, 0x76, 0xd1, 0x05, 0x39, 0xc5, 0x61, 0x88, 0x5a, 0x18, 0xee, 0x80, 0x62, 0x37, + 0x6c, 0x25, 0x24, 0xe8, 0xec, 0xa8, 0x0d, 0x40, 0x49, 0xb3, 0xca, 0xf4, 0xe0, 0x2f, 0x00, 0xec, + 0xa0, 0x90, 0x9c, 0xf9, 0xe7, 0x4c, 0xa9, 0x79, 0x46, 0xda, 0x5d, 0xcc, 0x6e, 0xb4, 0x62, 0x75, + 0x81, 0x4a, 0xbe, 0x8d, 0x05, 0xf5, 0x76, 0x17, 0xbb, 0x35, 0xb0, 0x96, 0x49, 0xae, 0x70, 0x15, + 0x4c, 0x92, 0x08, 0x20, 0x19, 0xa5, 0x15, 0xab, 0x13, 0x84, 0xc1, 0x23, 0xbc, 0x0b, 0x40, 0x13, + 0x77, 0xd0, 0x30, 0xf2, 0x7d, 0x83, 0xc9, 0xa6, 0xd9, 0x08, 0x73, 0xfa, 0x6b, 0xe0, 0x64, 0x4f, + 0x3d, 0xd3, 0xeb, 0xb3, 0x9f, 0x3e, 0x05, 0xc5, 0x7a, 0xfb, 0x6a, 0x00, 0x9f, 0x83, 0x5b, 0xe5, + 0x01, 0x7d, 0x09, 0x4c, 0x7d, 0x40, 0xc7, 0x88, 0x8a, 0xae, 0x05, 0x5f, 0x80, 0x89, 0xf2, 0x80, + 0x65, 0x64, 0x63, 0x53, 0xd0, 0x31, 0x73, 0xa3, 0x6b, 0xc1, 0x12, 0x00, 0xe5, 0x01, 0xc7, 0xc0, + 0xcc, 0x0e, 0xa1, 0x93, 0xcd, 0x91, 0xae, 0x05, 0xdf, 0x82, 0xc5, 0xf2, 0x40, 0xcf, 0xc8, 0xa3, + 0xca, 0x79, 0x67, 0x64, 0x9e, 0x77, 0x2d, 0xd8, 0x04, 0x2b, 0xe5, 0xef, 0x4c, 0x59, 0x79, 0x9c, + 0xda, 0xde, 0x19, 0x2b, 0xef, 0xbb, 0x16, 0xfc, 0x16, 0xcc, 0x95, 0x07, 0x4a, 0x92, 0xcd, 0x2d, + 0xcf, 0x9d, 0xfc, 0x8c, 0xed, 0x5a, 0xf0, 0x0d, 0x58, 0x28, 0x0f, 0xb4, 0xe4, 0x3f, 0xa2, 0x73, + 0xe0, 0x8c, 0xba, 0x4f, 0xe2, 0xd5, 0x18, 0x98, 0x32, 0xf7, 0x38, 0x2d, 0x00, 0x67, 0xac, 0xbb, + 0xc1, 0xb5, 0xe0, 0x6f, 0xc1, 0x54, 0x79, 0x10, 0x43, 0x7e, 0x46, 0xf3, 0xd7, 0xc9, 0xaa, 0x0f, + 0x12, 0xf3, 0x18, 0xf8, 0x33, 0x3a, 0xc1, 0x4e, 0x56, 0xad, 0xe0, 0x5a, 0x70, 0x17, 0x4c, 0x97, + 0x07, 0x09, 0xfa, 0x67, 0xb5, 0x85, 0x9d, 0xcc, 0xc2, 0x21, 0x79, 0xa5, 0x79, 0x2e, 0xcd, 0xec, + 0x11, 0x3b, 0xd9, 0x55, 0x84, 0x6b, 0xc1, 0x2a, 0x98, 0x8f, 0x9d, 0xf0, 0x57, 0x2e, 0xbf, 0x61, + 0xec, 0x8c, 0x28, 0x2b, 0x92, 0x07, 0xe3, 0xc5, 0x41, 0x66, 0xf7, 0xd8, 0xc9, 0xae, 0x2e, 0x5c, + 0x0b, 0x9e, 0x80, 0xd9, 0xf2, 0x40, 0x2e, 0x11, 0xf2, 0x5a, 0xc9, 0x4e, 0x6e, 0xb1, 0xe1, 0x5a, + 0xf0, 0x29, 0x28, 0x96, 0x07, 0x87, 0x25, 0x68, 0xe8, 0x2b, 0x3b, 0xa6, 0x7a, 0x23, 0x79, 0x00, + 0x19, 0x24, 0xf3, 0x9a, 0xcc, 0x4e, 0x6e, 0x11, 0xe2, 0x5a, 0x70, 0x00, 0xee, 0xb0, 0xfc, 0x93, + 0x71, 0x09, 0x8f, 0xdf, 0xdc, 0x71, 0x7e, 0xc6, 0xc5, 0xef, 0x5a, 0x10, 0x81, 0xe5, 0xf2, 0xc0, + 0x10, 0x70, 0x8c, 0x56, 0x95, 0x33, 0x0e, 0xc0, 0xb8, 0x16, 0x7c, 0x09, 0x26, 0x69, 0x08, 0xca, + 0x06, 0xe6, 0x66, 0x92, 0x93, 0xc1, 0x14, 0x49, 0x02, 0xd1, 0xa8, 0x60, 0x44, 0x67, 0xc9, 0x19, + 0x05, 0x1a, 0xae, 0x05, 0xbf, 0x4c, 0xaa, 0x3c, 0x98, 0xd1, 0xdd, 0x77, 0xb2, 0xea, 0x3e, 0xd7, + 0x82, 0xdf, 0x28, 0xf5, 0x1e, 0xcc, 0x6b, 0xf4, 0x3b, 0xb9, 0x65, 0x20, 0x7f, 0x10, 0x5a, 0x8e, + 0x65, 0xf4, 0xfc, 0x9d, 0xac, 0x5a, 0x50, 0x7d, 0x10, 0xea, 0x21, 0xaf, 0xfd, 0xef, 0xe4, 0x96, + 0x86, 0xae, 0x05, 0xf7, 0xa5, 0x6a, 0x10, 0x66, 0x7f, 0x13, 0xe0, 0xe4, 0x94, 0x88, 0xae, 0x05, + 0x6b, 0x7a, 0x5d, 0x08, 0x47, 0x7c, 0x29, 0xe0, 0x8c, 0xaa, 0x18, 0x5d, 0x0b, 0x7e, 0xcd, 0x2b, + 0x44, 0x98, 0xf5, 0xfd, 0x80, 0x93, 0x59, 0x34, 0xf2, 0x87, 0x92, 0x4f, 0xea, 0x88, 0xaf, 0x0a, + 0x9c, 0x51, 0x55, 0xa4, 0x6b, 0xc1, 0x53, 0xb5, 0x6a, 0x84, 0xb9, 0xdf, 0x1a, 0x38, 0xf9, 0xd5, + 0x24, 0x77, 0x77, 0x88, 0x49, 0x19, 0x0f, 0xeb, 0xf5, 0x13, 0xd5, 0x1d, 0x1f, 0x36, 0xba, 0x93, + 0xa4, 0xdc, 0xdd, 0x01, 0x58, 0x64, 0x85, 0x48, 0x97, 0x9e, 0xff, 0x57, 0x5e, 0xb3, 0x76, 0x8d, + 0x7a, 0xea, 0x1b, 0x56, 0x7a, 0x55, 0x33, 0xbe, 0x61, 0x6c, 0x5c, 0x7b, 0xc3, 0xd8, 0x35, 0x19, + 0xf6, 0xbb, 0xea, 0x1b, 0x96, 0x8c, 0x1a, 0xdf, 0x30, 0x21, 0xe4, 0xbe, 0xce, 0x00, 0x7c, 0xe3, + 0x85, 0xe8, 0x02, 0xef, 0xe3, 0x90, 0x04, 0xfe, 0x30, 0xda, 0x0a, 0x91, 0x67, 0xd2, 0xc2, 0x74, + 0x9e, 0x31, 0xe9, 0xf0, 0x00, 0x18, 0x2c, 0x57, 0x71, 0xab, 0x1d, 0x12, 0x1c, 0xd0, 0xec, 0x1e, + 0x23, 0x6e, 0x00, 0xb7, 0xa4, 0xdc, 0x9f, 0x16, 0x27, 0x41, 0x1e, 0x8e, 0xd0, 0xe2, 0x61, 0xfe, + 0x04, 0x16, 0xd9, 0xec, 0x94, 0x18, 0xf7, 0x55, 0xa6, 0x30, 0x05, 0x70, 0xf3, 0x54, 0xe4, 0x55, + 0xaa, 0xe2, 0xae, 0x1f, 0x5d, 0x50, 0xdc, 0xbd, 0x2b, 0x3d, 0x9c, 0x2e, 0x4c, 0xaf, 0x92, 0x49, + 0x87, 0x07, 0xf8, 0x03, 0x58, 0xa8, 0x5c, 0x0e, 0xc3, 0x76, 0x03, 0x75, 0xf8, 0x15, 0x2c, 0x11, + 0xa8, 0x26, 0x4a, 0x9c, 0xdf, 0xcf, 0xd1, 0xe0, 0xae, 0xbf, 0x52, 0x9a, 0x20, 0xd0, 0xf8, 0x2d, + 0x98, 0x63, 0x6e, 0x8a, 0xb0, 0x0c, 0xb4, 0x28, 0x59, 0xd7, 0x48, 0x80, 0x51, 0xf7, 0x67, 0xfa, + 0x78, 0x52, 0x80, 0xa7, 0x71, 0xf5, 0x24, 0x3f, 0xc8, 0x9a, 0xa2, 0x1e, 0x51, 0x09, 0x4f, 0x67, + 0x06, 0x91, 0xe4, 0xae, 0xa6, 0xb7, 0x02, 0xe0, 0x88, 0x6f, 0x84, 0x9c, 0x51, 0x4d, 0x02, 0x96, + 0xf4, 0x8b, 0xb4, 0x64, 0x83, 0x39, 0x75, 0x9c, 0xb3, 0xa4, 0xc9, 0xf6, 0x7d, 0x0f, 0xbb, 0xd6, + 0x76, 0x01, 0x7e, 0x0d, 0xa6, 0x79, 0x79, 0x08, 0x6d, 0xa5, 0xca, 0x1c, 0xcb, 0xfe, 0x15, 0x98, + 0xaa, 0x79, 0xa8, 0x17, 0x5e, 0xfa, 0x94, 0xee, 0x55, 0xa5, 0x44, 0x50, 0xba, 0xec, 0x7b, 0x57, + 0xd9, 0x2e, 0x1a, 0x60, 0xae, 0x8e, 0xce, 0x3b, 0x98, 0x70, 0x47, 0x5b, 0x9a, 0xaa, 0x2a, 0x16, + 0x47, 0x2c, 0x5f, 0x2b, 0x59, 0xa0, 0xed, 0xc2, 0x93, 0x02, 0x4d, 0x3d, 0xb5, 0x5e, 0x87, 0x12, + 0x75, 0x8b, 0xf2, 0x88, 0x48, 0x3d, 0xd2, 0x68, 0x3a, 0xf5, 0x28, 0x42, 0xe5, 0x72, 0xc3, 0xa8, + 0x79, 0xec, 0x35, 0xf1, 0x3b, 0xf9, 0x72, 0x4b, 0xc6, 0x0c, 0x97, 0x9b, 0x10, 0xc9, 0x39, 0xfa, + 0x74, 0xd0, 0x68, 0x1c, 0x62, 0xb2, 0x37, 0x2c, 0xe3, 0xa1, 0x94, 0xa3, 0xe5, 0xe1, 0x74, 0x8e, + 0x56, 0xa5, 0xf2, 0x41, 0xe4, 0x92, 0x1a, 0x41, 0x01, 0xa9, 0x87, 0xd2, 0x41, 0xd4, 0x45, 0xe9, + 0x83, 0x98, 0xd6, 0x90, 0xa0, 0x7d, 0x56, 0xa9, 0xbd, 0xe1, 0x7a, 0xde, 0xaf, 0x76, 0x9c, 0xbb, + 0xb9, 0xdf, 0x2c, 0xc5, 0xfb, 0x71, 0x04, 0xe6, 0xf7, 0xdb, 0x61, 0x8f, 0x6a, 0x9c, 0x56, 0x2a, + 0x75, 0x14, 0x52, 0x72, 0xef, 0xf6, 0x7a, 0x3b, 0xc9, 0x28, 0x1d, 0x12, 0xe4, 0x9e, 0x96, 0xf0, + 0xa7, 0xdb, 0x03, 0xb3, 0x25, 0xe4, 0x35, 0x70, 0x27, 0xf1, 0x73, 0x9b, 0x69, 0x47, 0x63, 0xb2, + 0x97, 0xd5, 0xd4, 0x38, 0xf7, 0x51, 0x07, 0xb7, 0x5f, 0x87, 0x04, 0x9d, 0x77, 0xda, 0x21, 0x7d, + 0x9c, 0x92, 0xef, 0x79, 0xb8, 0x41, 0x22, 0x70, 0xa5, 0x46, 0x66, 0x61, 0xe2, 0x18, 0x32, 0x9d, + 0xd3, 0x4a, 0x65, 0x1f, 0x11, 0x54, 0x41, 0x8d, 0x2b, 0x4c, 0xd8, 0x69, 0xff, 0x1c, 0x4c, 0x1e, + 0x87, 0xaf, 0x3a, 0xed, 0x01, 0x86, 0x4b, 0x4c, 0x25, 0xfe, 0x4f, 0x74, 0x1d, 0x94, 0x41, 0xe9, + 0x69, 0x96, 0xaa, 0x98, 0xd6, 0x6f, 0xf1, 0x8c, 0xe2, 0x4a, 0x77, 0x9d, 0xa9, 0x47, 0x12, 0x31, + 0x2c, 0x56, 0xdd, 0x2c, 0xe5, 0x5e, 0x8f, 0xc0, 0x4c, 0x74, 0x53, 0x60, 0xd4, 0xc4, 0x81, 0x74, + 0x02, 0xa4, 0xd1, 0xf4, 0x09, 0x50, 0x84, 0x71, 0xb7, 0xa5, 0x0c, 0xe6, 0x0e, 0x31, 0xa9, 0x11, + 0x3f, 0xc0, 0x35, 0x74, 0x81, 0xeb, 0x35, 0xf9, 0x38, 0x89, 0x51, 0xc3, 0x71, 0x92, 0x85, 0xb1, + 0xb3, 0x3a, 0x98, 0x3f, 0xc4, 0x84, 0xa6, 0xfe, 0xef, 0x51, 0x9b, 0x1c, 0x7b, 0x17, 0xbe, 0xd4, + 0xe2, 0xd0, 0x24, 0xe9, 0x16, 0x47, 0x4a, 0x21, 0xf6, 0xfa, 0x15, 0x98, 0x64, 0xb8, 0xd2, 0x20, + 0x50, 0xa9, 0xa9, 0xe9, 0x88, 0xa1, 0xd8, 0x4d, 0x04, 0xb1, 0xf5, 0x9f, 0x01, 0x94, 0x1c, 0x1f, + 0xb5, 0x43, 0xe2, 0x07, 0x43, 0xe8, 0x9a, 0xa2, 0xc6, 0xc2, 0xf4, 0xad, 0x69, 0xd2, 0x89, 0xdd, + 0x9f, 0x83, 0x95, 0x43, 0x4c, 0xea, 0x6d, 0x56, 0xe6, 0xd4, 0x86, 0x21, 0xc1, 0x5d, 0x96, 0xbb, + 0xa4, 0x08, 0x69, 0x61, 0x3a, 0x82, 0x49, 0x47, 0xa2, 0x54, 0x40, 0x82, 0xe1, 0xab, 0x66, 0x33, + 0xbe, 0x91, 0xd5, 0x9f, 0xf3, 0xd5, 0xb9, 0x48, 0x24, 0x82, 0x6c, 0x0d, 0x89, 0x55, 0x66, 0x49, + 0x30, 0x3c, 0x45, 0xc1, 0x55, 0x8c, 0xe3, 0x0f, 0xd2, 0x56, 0x42, 0x2a, 0x1a, 0x24, 0xb9, 0x4a, + 0xdc, 0xbb, 0x07, 0x96, 0xf8, 0x39, 0xdb, 0x67, 0x16, 0xec, 0x38, 0x7f, 0xac, 0x99, 0x1b, 0x74, + 0x44, 0xad, 0x3a, 0x86, 0xaa, 0x04, 0x78, 0x0b, 0x51, 0x32, 0x90, 0x82, 0x3d, 0xd2, 0x3c, 0xe8, + 0x0a, 0x49, 0xa4, 0xc7, 0x23, 0xf5, 0x78, 0x98, 0x3f, 0x82, 0x85, 0x03, 0x4c, 0x0b, 0x11, 0x26, + 0xac, 0xa0, 0x16, 0x0e, 0x53, 0x61, 0x74, 0x05, 0x71, 0x83, 0xa8, 0x7a, 0x4c, 0x28, 0x65, 0x98, + 0x73, 0x76, 0x78, 0x22, 0xc3, 0x92, 0xef, 0x5d, 0xb4, 0x5b, 0xf0, 0xa1, 0x66, 0xa2, 0xc9, 0x13, + 0xcf, 0x8f, 0x46, 0xa9, 0xc9, 0x80, 0x9a, 0x6e, 0x7b, 0x8f, 0xfe, 0x05, 0x85, 0x33, 0x46, 0x4b, + 0x3d, 0x02, 0x54, 0x43, 0xfb, 0x7b, 0x8c, 0x1f, 0x53, 0x38, 0xe3, 0x74, 0xd7, 0x5d, 0x6b, 0xef, + 0xd9, 0x8f, 0xff, 0x9a, 0x2a, 0xfc, 0xfb, 0xfd, 0x46, 0xe1, 0x87, 0xf7, 0x1b, 0x85, 0xff, 0xbc, + 0xdf, 0x28, 0xfc, 0xed, 0xc3, 0x86, 0xf5, 0x8f, 0x0f, 0x1b, 0xd6, 0x0f, 0x1f, 0x36, 0xac, 0x1f, + 0x3f, 0x6c, 0x58, 0x60, 0xc1, 0x0f, 0x5a, 0xec, 0xca, 0xda, 0xb9, 0x1a, 0xb0, 0x1f, 0xb0, 0x9e, + 0x4f, 0xb0, 0x3f, 0x9f, 0xfd, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x2d, 0xc9, 0x4b, 0x5d, 0x2b, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6187,6 +6198,11 @@ func (m *BatchRaftMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.LastObservedTime != 0 { + i = encodeVarintTikvpb(dAtA, i, uint64(m.LastObservedTime)) + i-- + dAtA[i] = 0x68 + } if len(m.Msgs) > 0 { for iNdEx := len(m.Msgs) - 1; iNdEx >= 0; iNdEx-- { { @@ -7203,6 +7219,9 @@ func (m *BatchRaftMessage) Size() (n int) { n += 1 + l + sovTikvpb(uint64(l)) } } + if m.LastObservedTime != 0 { + n += 1 + sovTikvpb(uint64(m.LastObservedTime)) + } return n } @@ -10227,6 +10246,25 @@ func (m *BatchRaftMessage) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LastObservedTime", wireType) + } + m.LastObservedTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTikvpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LastObservedTime |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTikvpb(dAtA[iNdEx:]) diff --git a/proto/brpb.proto b/proto/brpb.proto index 8d577403d..a4f196128 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -865,6 +865,20 @@ message MetaEdit { bool destruct_self = 4; } +message RewrittenTableID { + uint64 upstream_of_upstream = 1; + uint64 upstream = 2; +} + +// ExtraFullBackup is created by BR restoring to a cluster with PITR enabled. +// This is uploaded by the BR CLI. +message ExtraFullBackup { + // The table IDs rewritten during restoring. + repeated RewrittenTableID rewritten_tables = 1; + repeated File files = 2; + uint64 as_if_ts = 3; +} + // An extended version of `SpansOfFile`, added more metadata for the // execution of delayed deletion. message DeleteSpansOfFile { @@ -881,6 +895,8 @@ enum MigrationVersion { M0 = 0; // Added `creator` and `version`. M1 = 1; + // Added `backup`. + M2 = 2; } message Migration { @@ -892,5 +908,8 @@ message Migration { repeated LogFileCompaction compactions = 3; // Delete all files matches this prefix. repeated string destruct_prefix = 4; + + + repeated ExtraFullBackup extra_full_backups = 7; } diff --git a/scripts/proto.lock b/scripts/proto.lock index b7f08518b..784d26716 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -266,6 +266,10 @@ { "name": "M1", "integer": 1 + }, + { + "name": "M2", + "integer": 2 } ] } @@ -1940,6 +1944,43 @@ } ] }, + { + "name": "RewrittenTableID", + "fields": [ + { + "id": 1, + "name": "upstream_of_upstream", + "type": "uint64" + }, + { + "id": 2, + "name": "upstream", + "type": "uint64" + } + ] + }, + { + "name": "ExtraFullBackup", + "fields": [ + { + "id": 1, + "name": "rewritten_tables", + "type": "RewrittenTableID", + "is_repeated": true + }, + { + "id": 2, + "name": "files", + "type": "File", + "is_repeated": true + }, + { + "id": 3, + "name": "as_if_ts", + "type": "uint64" + } + ] + }, { "name": "DeleteSpansOfFile", "fields": [ @@ -1996,6 +2037,12 @@ "name": "destruct_prefix", "type": "string", "is_repeated": true + }, + { + "id": 7, + "name": "extra_full_backups", + "type": "ExtraFullBackup", + "is_repeated": true } ] } From be2e12233a90a38532a90d6293d2155812993e1f Mon Sep 17 00:00:00 2001 From: hillium Date: Mon, 25 Nov 2024 15:01:01 +0800 Subject: [PATCH 02/10] added hint of prefix Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 151 ++++++++++++++++++++++++++++++-------------- proto/brpb.proto | 8 +-- scripts/proto.lock | 9 ++- 3 files changed, 113 insertions(+), 55 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index b68f0a63f..acb611669 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -4729,8 +4729,8 @@ func (m *MetaEdit) GetDestructSelf() bool { } type RewrittenTableID struct { - UpstreamOfUpstream uint64 `protobuf:"varint,1,opt,name=upstream_of_upstream,json=upstreamOfUpstream,proto3" json:"upstream_of_upstream,omitempty"` - Upstream uint64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` + UpstreamOfUpstream int64 `protobuf:"varint,1,opt,name=upstream_of_upstream,json=upstreamOfUpstream,proto3" json:"upstream_of_upstream,omitempty"` + Upstream int64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` } func (m *RewrittenTableID) Reset() { *m = RewrittenTableID{} } @@ -4766,14 +4766,14 @@ func (m *RewrittenTableID) XXX_DiscardUnknown() { var xxx_messageInfo_RewrittenTableID proto.InternalMessageInfo -func (m *RewrittenTableID) GetUpstreamOfUpstream() uint64 { +func (m *RewrittenTableID) GetUpstreamOfUpstream() int64 { if m != nil { return m.UpstreamOfUpstream } return 0 } -func (m *RewrittenTableID) GetUpstream() uint64 { +func (m *RewrittenTableID) GetUpstream() int64 { if m != nil { return m.Upstream } @@ -4787,6 +4787,7 @@ type ExtraFullBackup struct { RewrittenTables []*RewrittenTableID `protobuf:"bytes,1,rep,name=rewritten_tables,json=rewrittenTables,proto3" json:"rewritten_tables,omitempty"` Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` AsIfTs uint64 `protobuf:"varint,3,opt,name=as_if_ts,json=asIfTs,proto3" json:"as_if_ts,omitempty"` + FilesPrefixHint string `protobuf:"bytes,4,opt,name=files_prefix_hint,json=filesPrefixHint,proto3" json:"files_prefix_hint,omitempty"` } func (m *ExtraFullBackup) Reset() { *m = ExtraFullBackup{} } @@ -4843,6 +4844,13 @@ func (m *ExtraFullBackup) GetAsIfTs() uint64 { return 0 } +func (m *ExtraFullBackup) GetFilesPrefixHint() string { + if m != nil { + return m.FilesPrefixHint + } + return "" +} + // An extended version of `SpansOfFile`, added more metadata for the // execution of delayed deletion. type DeleteSpansOfFile struct { @@ -4914,7 +4922,8 @@ type Migration struct { TruncatedTo uint64 `protobuf:"varint,2,opt,name=truncated_to,json=truncatedTo,proto3" json:"truncated_to,omitempty"` Compactions []*LogFileCompaction `protobuf:"bytes,3,rep,name=compactions,proto3" json:"compactions,omitempty"` // Delete all files matches this prefix. - DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` + DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` + // The extra full backups. ExtraFullBackups []*ExtraFullBackup `protobuf:"bytes,7,rep,name=extra_full_backups,json=extraFullBackups,proto3" json:"extra_full_backups,omitempty"` } @@ -5073,7 +5082,7 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4710 bytes of a gzipped FileDescriptorProto + // 4729 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7b, 0xcd, 0x6f, 0x1c, 0x47, 0x76, 0x38, 0x7b, 0xbe, 0xe7, 0xcd, 0x27, 0x8b, 0x94, 0x34, 0xa6, 0x2d, 0x8a, 0x6e, 0x59, 0x5a, 0xfe, 0xb8, 0x2b, 0xae, 0x56, 0xf2, 0x6a, 0xf5, 0x8b, 0x37, 0x58, 0xf0, 0x4b, 0x26, 0x57, 0xa2, @@ -5328,47 +5337,48 @@ var fileDescriptor_483d1f48d58a4885 = []byte{ 0x53, 0xa4, 0x31, 0xbe, 0x93, 0x66, 0x69, 0x48, 0x93, 0xf7, 0x24, 0x22, 0xa7, 0x3d, 0x93, 0xb3, 0xe4, 0x62, 0xb7, 0xa1, 0xe3, 0x51, 0xc6, 0x93, 0x89, 0xcb, 0x6d, 0x46, 0x83, 0x91, 0x7a, 0x6c, 0xd9, 0xd6, 0xc0, 0x43, 0x1a, 0x8c, 0xcc, 0x3f, 0x84, 0xbe, 0x45, 0x5f, 0x26, 0x3e, 0xe7, 0x54, - 0x3e, 0x2c, 0xd9, 0xdb, 0x26, 0xf7, 0x61, 0x31, 0x7d, 0x60, 0x10, 0x8d, 0x6c, 0xfd, 0x5b, 0x29, - 0x96, 0xe8, 0xf1, 0x8b, 0xd1, 0x27, 0xea, 0x97, 0x50, 0x4b, 0x4a, 0xa5, 0xe2, 0xa3, 0x1e, 0xe3, - 0x4d, 0xe7, 0xce, 0x2b, 0x9e, 0x38, 0x4f, 0x26, 0x41, 0x20, 0x4f, 0x20, 0xb2, 0x25, 0x8e, 0x5b, - 0xf5, 0x55, 0x5b, 0x5d, 0xe3, 0x4b, 0xb3, 0x1c, 0x64, 0x0e, 0x57, 0xe4, 0x4a, 0xb8, 0x5c, 0x1e, - 0xc2, 0xb2, 0x3e, 0x41, 0xe9, 0xf2, 0x3e, 0xc1, 0x00, 0x1a, 0x0e, 0xb3, 0xfd, 0x51, 0x96, 0xb5, - 0xd6, 0x1c, 0xb6, 0x37, 0x3a, 0x62, 0xe6, 0x4b, 0x98, 0xbf, 0x20, 0xc6, 0xef, 0x7a, 0xa2, 0x88, - 0x7c, 0xf3, 0xe5, 0x49, 0x24, 0x6f, 0x65, 0x68, 0xb1, 0xb4, 0xe9, 0x21, 0x42, 0xac, 0xae, 0x8a, - 0x9b, 0xaf, 0x4b, 0xd0, 0xdc, 0xf7, 0x8f, 0x13, 0x7c, 0xd2, 0x87, 0x8f, 0x06, 0x12, 0xea, 0x70, - 0x75, 0xd7, 0xde, 0xb4, 0xf4, 0x90, 0x3c, 0xc8, 0x1e, 0xa3, 0xca, 0xdb, 0x9b, 0x54, 0x34, 0xe9, - 0x6c, 0x5d, 0x0a, 0xa4, 0xcf, 0x54, 0xef, 0x41, 0x93, 0x7a, 0x3e, 0xb7, 0x55, 0xcc, 0x2c, 0x4f, - 0xbf, 0x87, 0x14, 0xc6, 0x6a, 0x35, 0x04, 0x09, 0x9e, 0x75, 0xef, 0x43, 0x9b, 0x27, 0x93, 0xd0, - 0x45, 0x63, 0xe7, 0x91, 0x52, 0x5d, 0x2b, 0x85, 0x1d, 0x45, 0xe4, 0x23, 0x68, 0xe5, 0x63, 0xc7, - 0x94, 0x21, 0x5e, 0x08, 0x09, 0x56, 0x9e, 0x5a, 0x38, 0x53, 0x6a, 0x81, 0xe9, 0x95, 0x80, 0x30, - 0xfe, 0xae, 0x06, 0x1f, 0xc8, 0xa6, 0xdb, 0x0e, 0x10, 0x2a, 0x4c, 0xc4, 0x1e, 0x4d, 0x82, 0xc0, - 0x96, 0x8b, 0xeb, 0xe7, 0xac, 0x69, 0x82, 0x37, 0x65, 0x44, 0x56, 0x9f, 0x16, 0x01, 0x6c, 0xed, - 0x39, 0xac, 0xbc, 0xee, 0x21, 0x36, 0xe9, 0x41, 0xeb, 0x13, 0xbc, 0x85, 0xc2, 0xf7, 0xc6, 0xfd, - 0x39, 0xd2, 0x81, 0xe6, 0x2f, 0x1c, 0x9f, 0x6f, 0xc4, 0x71, 0x70, 0xde, 0x37, 0x08, 0x40, 0xed, - 0x89, 0x1f, 0xfa, 0xec, 0xa4, 0x5f, 0x5a, 0xfb, 0x39, 0x2c, 0x5f, 0xfd, 0x50, 0x9a, 0xcc, 0x43, - 0x27, 0x9d, 0xbc, 0x1d, 0x85, 0x62, 0xbd, 0x6b, 0x30, 0x9f, 0xfb, 0x80, 0x7c, 0x52, 0xda, 0x37, - 0xd6, 0x7e, 0x17, 0x7a, 0x53, 0x19, 0x2a, 0x69, 0x41, 0xfd, 0x93, 0xe7, 0x4f, 0x9f, 0xbf, 0xf8, - 0xc5, 0xf3, 0xfe, 0x1c, 0xa9, 0x43, 0xf9, 0xd9, 0x67, 0x1f, 0x4a, 0x06, 0x0e, 0x9f, 0x6f, 0x1c, - 0x1c, 0xfc, 0x7e, 0xbf, 0x44, 0x1a, 0x50, 0xf9, 0xec, 0xf0, 0x68, 0xbb, 0x5f, 0x5e, 0x5b, 0x49, - 0xdf, 0x43, 0x8b, 0x04, 0xac, 0x01, 0x95, 0xc3, 0xad, 0x0d, 0x31, 0xad, 0x01, 0x95, 0x27, 0x7b, - 0xcf, 0x76, 0xfa, 0xc6, 0xda, 0x4d, 0x68, 0xe5, 0xca, 0x43, 0x52, 0x83, 0xd2, 0xa7, 0x3f, 0xea, - 0xcf, 0xe1, 0xdf, 0x07, 0x7d, 0x63, 0xed, 0x16, 0x34, 0xf4, 0xe1, 0x2d, 0x3e, 0x21, 0x6d, 0x5f, - 0x7e, 0xf7, 0x60, 0x22, 0x18, 0x5c, 0x83, 0xfe, 0xb4, 0x61, 0x89, 0xc9, 0xfb, 0xf7, 0xe5, 0x22, - 0xfb, 0x3f, 0xea, 0x1b, 0xf8, 0xf7, 0x41, 0xbf, 0xf4, 0xe0, 0xbf, 0x4b, 0x50, 0x53, 0xae, 0xfc, - 0x11, 0xa8, 0x07, 0xfa, 0xe4, 0xda, 0xd4, 0xeb, 0x39, 0x29, 0xf4, 0xa5, 0xeb, 0xd3, 0x60, 0x55, - 0xc5, 0xcf, 0xdd, 0x37, 0xc8, 0x01, 0x2c, 0x60, 0x3f, 0x28, 0xdf, 0x95, 0x79, 0x11, 0x93, 0xd4, - 0xbe, 0x2e, 0xb4, 0x90, 0x96, 0x96, 0x66, 0xa1, 0x72, 0x2b, 0x9e, 0xc0, 0xb5, 0x99, 0x2a, 0x23, - 0x1f, 0xbc, 0xc9, 0x53, 0xfd, 0xa5, 0x3b, 0xaf, 0xa1, 0x92, 0x5f, 0x5a, 0x35, 0xee, 0x1b, 0xe4, - 0xa7, 0x50, 0x8f, 0x25, 0x11, 0xb9, 0x3e, 0x35, 0x4b, 0xaf, 0x76, 0xe3, 0x02, 0x5c, 0x73, 0x2a, - 0x66, 0xbb, 0xb2, 0xb7, 0x48, 0x72, 0xaf, 0x79, 0xf2, 0xbd, 0xc9, 0x6c, 0xf6, 0x54, 0x13, 0xd2, - 0x9c, 0x7b, 0xf0, 0xf7, 0x32, 0xa6, 0xe6, 0x3b, 0x24, 0xe4, 0x33, 0xa8, 0xab, 0xa6, 0x11, 0xb9, - 0x93, 0x73, 0x99, 0xcb, 0x9b, 0x5b, 0x4b, 0x77, 0x5f, 0x47, 0x96, 0x72, 0xfb, 0x7b, 0x50, 0x61, - 0xce, 0x19, 0x25, 0xe6, 0x25, 0x33, 0x72, 0x5d, 0xa4, 0xa5, 0xdb, 0x57, 0xd2, 0xe8, 0x25, 0x37, - 0x1f, 0x7c, 0xfd, 0x97, 0x0d, 0xe3, 0x37, 0xdf, 0x2c, 0x1b, 0x5f, 0x7d, 0xb3, 0x6c, 0xfc, 0xc7, - 0x37, 0xcb, 0xc6, 0xaf, 0xbf, 0x5d, 0x9e, 0xfb, 0xf3, 0x6f, 0x97, 0xe7, 0xbe, 0xfa, 0x76, 0x79, - 0xee, 0xeb, 0x6f, 0x97, 0xe7, 0xa0, 0x1f, 0x25, 0xc7, 0xeb, 0xdc, 0x3f, 0x3d, 0x5b, 0x3f, 0x3d, - 0xc3, 0xff, 0xcd, 0x18, 0xd6, 0xf0, 0xcf, 0xc3, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x70, 0x80, - 0x47, 0x9c, 0x1f, 0x32, 0x00, 0x00, + 0x3e, 0x2c, 0xd9, 0xdb, 0x26, 0xf7, 0x61, 0x31, 0x7d, 0x60, 0x10, 0x8d, 0x6c, 0xfd, 0x5b, 0xbd, + 0x34, 0x20, 0x7a, 0xfc, 0x62, 0xf4, 0x89, 0xfa, 0x25, 0xd4, 0x92, 0x52, 0xc9, 0x04, 0x39, 0x1d, + 0x9b, 0x7f, 0x6f, 0x40, 0x6f, 0xe7, 0x15, 0x4f, 0x9c, 0x27, 0x93, 0x20, 0x90, 0x27, 0x10, 0xd9, + 0x12, 0xc7, 0xad, 0xfa, 0xaa, 0xad, 0xae, 0xf1, 0xa5, 0x59, 0x0e, 0x32, 0x87, 0x2b, 0x72, 0x25, + 0x5c, 0x2e, 0x0f, 0x61, 0x59, 0x9f, 0xa0, 0x74, 0x79, 0x9f, 0x60, 0x00, 0x0d, 0x87, 0xd9, 0xfe, + 0x28, 0xcb, 0x5a, 0x6b, 0x0e, 0xdb, 0x1b, 0x1d, 0x31, 0x91, 0x22, 0xca, 0x34, 0x58, 0xf6, 0x7d, + 0xd0, 0xeb, 0x95, 0x49, 0xf5, 0x10, 0x71, 0x80, 0x70, 0xe1, 0xca, 0xe6, 0x4b, 0x98, 0xbf, 0x20, + 0xf2, 0xef, 0x7a, 0xfa, 0x88, 0x0f, 0xbf, 0x3c, 0x89, 0xe4, 0x0d, 0x0e, 0x2d, 0x96, 0x41, 0x3d, + 0x44, 0x88, 0xd5, 0x55, 0x21, 0xf4, 0x75, 0x09, 0x9a, 0xfb, 0xfe, 0x71, 0x82, 0xcf, 0xff, 0xf0, + 0x81, 0x41, 0x42, 0x1d, 0xae, 0xee, 0xe5, 0x9b, 0x96, 0x1e, 0x92, 0x07, 0xd9, 0xc3, 0x55, 0x79, + 0xd3, 0x93, 0x8a, 0x31, 0x9d, 0xad, 0xcb, 0x86, 0xf4, 0x49, 0xeb, 0x3d, 0x68, 0x52, 0xcf, 0xe7, + 0xb6, 0x8a, 0xaf, 0xe5, 0xe9, 0xb7, 0x93, 0xc2, 0xb0, 0xad, 0x86, 0x20, 0xc1, 0x73, 0xf1, 0x7d, + 0x68, 0xf3, 0x64, 0x12, 0xba, 0xe8, 0x18, 0x3c, 0x52, 0x6e, 0xdb, 0x4a, 0x61, 0x47, 0x11, 0xf9, + 0x08, 0x5a, 0xf9, 0x38, 0x33, 0x65, 0xb4, 0x17, 0xc2, 0x87, 0x95, 0xa7, 0x16, 0x8e, 0x97, 0x5a, + 0x6b, 0x7a, 0x7d, 0x20, 0x1c, 0xa5, 0xab, 0xc1, 0x52, 0x21, 0x64, 0x07, 0x08, 0x15, 0xe6, 0x64, + 0x8f, 0x26, 0x41, 0x60, 0xcb, 0xc5, 0xf5, 0xd3, 0xd7, 0x34, 0x19, 0x9c, 0x32, 0x38, 0xab, 0x4f, + 0x8b, 0x00, 0xb6, 0xf6, 0x1c, 0x56, 0x5e, 0xf7, 0x68, 0x9b, 0xf4, 0xa0, 0xf5, 0x09, 0xde, 0x58, + 0xe1, 0xdb, 0xe4, 0xfe, 0x1c, 0xe9, 0x40, 0xf3, 0x17, 0x8e, 0xcf, 0x37, 0xe2, 0x38, 0x38, 0xef, + 0x1b, 0x04, 0xa0, 0xf6, 0xc4, 0x0f, 0x7d, 0x76, 0xd2, 0x2f, 0xad, 0xfd, 0x1c, 0x96, 0xaf, 0x7e, + 0x54, 0x4d, 0xe6, 0xa1, 0x93, 0x4e, 0xde, 0x8e, 0x42, 0xb1, 0xde, 0x35, 0x98, 0xcf, 0x7d, 0x40, + 0x3e, 0x3f, 0xed, 0x1b, 0x6b, 0xbf, 0x0b, 0xbd, 0xa9, 0x6c, 0x96, 0xb4, 0xa0, 0xfe, 0xc9, 0xf3, + 0xa7, 0xcf, 0x5f, 0xfc, 0xe2, 0x79, 0x7f, 0x8e, 0xd4, 0xa1, 0xfc, 0xec, 0xb3, 0x0f, 0x25, 0x03, + 0x87, 0xcf, 0x37, 0x0e, 0x0e, 0x7e, 0xbf, 0x5f, 0x22, 0x0d, 0xa8, 0x7c, 0x76, 0x78, 0xb4, 0xdd, + 0x2f, 0xaf, 0xad, 0xa4, 0x6f, 0xa7, 0x45, 0xb2, 0xd6, 0x80, 0xca, 0xe1, 0xd6, 0x86, 0x98, 0xd6, + 0x80, 0xca, 0x93, 0xbd, 0x67, 0x3b, 0x7d, 0x63, 0xed, 0x26, 0xb4, 0x72, 0xa5, 0x24, 0xa9, 0x41, + 0xe9, 0xd3, 0x1f, 0xf5, 0xe7, 0xf0, 0xef, 0x83, 0xbe, 0xb1, 0x76, 0x0b, 0x1a, 0xfa, 0xa0, 0x17, + 0x9f, 0x90, 0xb6, 0x2f, 0xbf, 0x7b, 0x30, 0x11, 0x0c, 0xae, 0x41, 0x7f, 0xda, 0xb0, 0xc4, 0xe4, + 0xfd, 0xfb, 0x72, 0x91, 0xfd, 0x1f, 0xf5, 0x0d, 0xfc, 0xfb, 0xa0, 0x5f, 0x7a, 0xf0, 0xdf, 0x25, + 0xa8, 0x29, 0xb7, 0xff, 0x08, 0xd4, 0x63, 0x7e, 0x72, 0x6d, 0xea, 0xa5, 0x9d, 0x14, 0xfa, 0xd2, + 0xf5, 0x69, 0xb0, 0xaa, 0xf8, 0xe7, 0xee, 0x1b, 0xe4, 0x00, 0x16, 0xb0, 0x77, 0x94, 0xef, 0xe0, + 0xbc, 0x88, 0x49, 0x6a, 0x5f, 0x17, 0xda, 0x4d, 0x4b, 0x4b, 0xb3, 0x50, 0xb9, 0x15, 0x4f, 0xe0, + 0xda, 0x4c, 0x95, 0x91, 0x0f, 0xde, 0xe4, 0x59, 0xff, 0xd2, 0x9d, 0xd7, 0x50, 0xc9, 0x2f, 0xad, + 0x1a, 0xf7, 0x0d, 0xf2, 0x53, 0xa8, 0xc7, 0x92, 0x88, 0x5c, 0x9f, 0x9a, 0xa5, 0x57, 0xbb, 0x71, + 0x01, 0xae, 0x39, 0x15, 0xb3, 0x5d, 0xd9, 0x87, 0x24, 0xb9, 0x97, 0x3f, 0xf9, 0x3e, 0x66, 0x36, + 0x7b, 0xaa, 0x61, 0x69, 0xce, 0x3d, 0x50, 0xf1, 0x37, 0xdf, 0x4d, 0x21, 0x9f, 0x41, 0x5d, 0x35, + 0x98, 0xc8, 0x9d, 0x9c, 0xcb, 0x5c, 0xde, 0x08, 0x5b, 0xba, 0xfb, 0x3a, 0xb2, 0x94, 0xdb, 0xdf, + 0x83, 0x0a, 0x73, 0xce, 0x28, 0x31, 0x2f, 0x99, 0x91, 0xeb, 0x38, 0x2d, 0xdd, 0xbe, 0x92, 0x46, + 0x2f, 0xb9, 0xf9, 0xe0, 0xeb, 0xbf, 0x6c, 0x18, 0xbf, 0xf9, 0x66, 0xd9, 0xf8, 0xea, 0x9b, 0x65, + 0xe3, 0x3f, 0xbe, 0x59, 0x36, 0x7e, 0xfd, 0xed, 0xf2, 0xdc, 0x9f, 0x7f, 0xbb, 0x3c, 0xf7, 0xd5, + 0xb7, 0xcb, 0x73, 0x5f, 0x7f, 0xbb, 0x3c, 0x07, 0xfd, 0x28, 0x39, 0x5e, 0xe7, 0xfe, 0xe9, 0xd9, + 0xfa, 0xe9, 0x19, 0xfe, 0x1f, 0xc7, 0xb0, 0x86, 0x7f, 0x1e, 0xfe, 0x4f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x2d, 0xed, 0x74, 0xc2, 0x4b, 0x32, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9467,6 +9477,13 @@ func (m *ExtraFullBackup) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.FilesPrefixHint) > 0 { + i -= len(m.FilesPrefixHint) + copy(dAtA[i:], m.FilesPrefixHint) + i = encodeVarintBrpb(dAtA, i, uint64(len(m.FilesPrefixHint))) + i-- + dAtA[i] = 0x22 + } if m.AsIfTs != 0 { i = encodeVarintBrpb(dAtA, i, uint64(m.AsIfTs)) i-- @@ -11333,6 +11350,10 @@ func (m *ExtraFullBackup) Size() (n int) { if m.AsIfTs != 0 { n += 1 + sovBrpb(uint64(m.AsIfTs)) } + l = len(m.FilesPrefixHint) + if l > 0 { + n += 1 + l + sovBrpb(uint64(l)) + } return n } @@ -21874,7 +21895,7 @@ func (m *RewrittenTableID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.UpstreamOfUpstream |= uint64(b&0x7F) << shift + m.UpstreamOfUpstream |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -21893,7 +21914,7 @@ func (m *RewrittenTableID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Upstream |= uint64(b&0x7F) << shift + m.Upstream |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -22035,6 +22056,38 @@ func (m *ExtraFullBackup) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FilesPrefixHint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FilesPrefixHint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) diff --git a/proto/brpb.proto b/proto/brpb.proto index a4f196128..124abc468 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -866,8 +866,8 @@ message MetaEdit { } message RewrittenTableID { - uint64 upstream_of_upstream = 1; - uint64 upstream = 2; + int64 upstream_of_upstream = 1; + int64 upstream = 2; } // ExtraFullBackup is created by BR restoring to a cluster with PITR enabled. @@ -877,6 +877,7 @@ message ExtraFullBackup { repeated RewrittenTableID rewritten_tables = 1; repeated File files = 2; uint64 as_if_ts = 3; + string files_prefix_hint = 4; } // An extended version of `SpansOfFile`, added more metadata for the @@ -908,8 +909,7 @@ message Migration { repeated LogFileCompaction compactions = 3; // Delete all files matches this prefix. repeated string destruct_prefix = 4; - - + // The extra full backups. repeated ExtraFullBackup extra_full_backups = 7; } diff --git a/scripts/proto.lock b/scripts/proto.lock index 784d26716..3b5bdbc43 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -1950,12 +1950,12 @@ { "id": 1, "name": "upstream_of_upstream", - "type": "uint64" + "type": "int64" }, { "id": 2, "name": "upstream", - "type": "uint64" + "type": "int64" } ] }, @@ -1978,6 +1978,11 @@ "id": 3, "name": "as_if_ts", "type": "uint64" + }, + { + "id": 4, + "name": "files_prefix_hint", + "type": "string" } ] }, From a51d008f44ca3807a62e46a2de73287d3af07587 Mon Sep 17 00:00:00 2001 From: hillium Date: Fri, 29 Nov 2024 16:16:55 +0800 Subject: [PATCH 03/10] added force flush Signed-off-by: hillium --- pkg/logbackuppb/logbackuppb.pb.go | 392 +++++++++++++++++++++++++++--- proto/logbackuppb.proto | 8 + scripts/proto.lock | 18 ++ 3 files changed, 386 insertions(+), 32 deletions(-) diff --git a/pkg/logbackuppb/logbackuppb.pb.go b/pkg/logbackuppb/logbackuppb.pb.go index 419cbf93e..da14aa759 100644 --- a/pkg/logbackuppb/logbackuppb.pb.go +++ b/pkg/logbackuppb/logbackuppb.pb.go @@ -379,6 +379,86 @@ func (m *FlushEvent) GetCheckpoint() uint64 { return 0 } +type FlushNowRequest struct { +} + +func (m *FlushNowRequest) Reset() { *m = FlushNowRequest{} } +func (m *FlushNowRequest) String() string { return proto.CompactTextString(m) } +func (*FlushNowRequest) ProtoMessage() {} +func (*FlushNowRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9a556fe18b032662, []int{7} +} +func (m *FlushNowRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FlushNowRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FlushNowRequest.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 *FlushNowRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_FlushNowRequest.Merge(m, src) +} +func (m *FlushNowRequest) XXX_Size() int { + return m.Size() +} +func (m *FlushNowRequest) XXX_DiscardUnknown() { + xxx_messageInfo_FlushNowRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_FlushNowRequest proto.InternalMessageInfo + +type FlushNowResponse struct { + ErrorMsg string `protobuf:"bytes,1,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` +} + +func (m *FlushNowResponse) Reset() { *m = FlushNowResponse{} } +func (m *FlushNowResponse) String() string { return proto.CompactTextString(m) } +func (*FlushNowResponse) ProtoMessage() {} +func (*FlushNowResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9a556fe18b032662, []int{8} +} +func (m *FlushNowResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FlushNowResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FlushNowResponse.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 *FlushNowResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_FlushNowResponse.Merge(m, src) +} +func (m *FlushNowResponse) XXX_Size() int { + return m.Size() +} +func (m *FlushNowResponse) XXX_DiscardUnknown() { + xxx_messageInfo_FlushNowResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_FlushNowResponse proto.InternalMessageInfo + +func (m *FlushNowResponse) GetErrorMsg() string { + if m != nil { + return m.ErrorMsg + } + return "" +} + func init() { proto.RegisterType((*RegionIdentity)(nil), "logbackup.RegionIdentity") proto.RegisterType((*RegionCheckpoint)(nil), "logbackup.RegionCheckpoint") @@ -387,43 +467,48 @@ func init() { proto.RegisterType((*SubscribeFlushEventRequest)(nil), "logbackup.SubscribeFlushEventRequest") proto.RegisterType((*SubscribeFlushEventResponse)(nil), "logbackup.SubscribeFlushEventResponse") proto.RegisterType((*FlushEvent)(nil), "logbackup.FlushEvent") + proto.RegisterType((*FlushNowRequest)(nil), "logbackup.FlushNowRequest") + proto.RegisterType((*FlushNowResponse)(nil), "logbackup.FlushNowResponse") } func init() { proto.RegisterFile("logbackuppb.proto", fileDescriptor_9a556fe18b032662) } var fileDescriptor_9a556fe18b032662 = []byte{ - // 485 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, - 0x18, 0xf4, 0x26, 0x28, 0x4d, 0xbe, 0xb4, 0xa1, 0x2c, 0x7f, 0xc1, 0x11, 0x56, 0x64, 0x04, 0x2a, - 0x07, 0x0c, 0xa4, 0x27, 0x0e, 0x5c, 0x8a, 0x02, 0xaa, 0x88, 0x84, 0xe4, 0x56, 0x5c, 0xa3, 0xd8, - 0xfe, 0x70, 0x2c, 0x47, 0xbb, 0x66, 0x77, 0x1d, 0x29, 0x4f, 0xc0, 0x95, 0x23, 0x8f, 0xc0, 0xa3, - 0x70, 0xec, 0xb1, 0x47, 0x94, 0x48, 0x3c, 0x07, 0xf2, 0xda, 0x4e, 0x8c, 0x48, 0x9b, 0x9e, 0x76, - 0x35, 0x33, 0x3b, 0x33, 0xfe, 0x3e, 0x19, 0xee, 0xcc, 0x78, 0xe8, 0x4d, 0xfc, 0x38, 0x4d, 0x12, - 0xcf, 0x49, 0x04, 0x57, 0x9c, 0xb6, 0xd6, 0x90, 0x79, 0x80, 0x42, 0x70, 0x51, 0x32, 0xe6, 0xbd, - 0x90, 0x87, 0x5c, 0x5f, 0x5f, 0x66, 0xb7, 0x02, 0xbd, 0x2d, 0x52, 0xa9, 0xf4, 0x35, 0x07, 0xec, - 0x21, 0x74, 0x5c, 0x0c, 0x23, 0xce, 0x4e, 0x03, 0x64, 0x2a, 0x52, 0x0b, 0xda, 0x81, 0x5a, 0x14, - 0x74, 0x49, 0x9f, 0x1c, 0xdd, 0x72, 0x6b, 0x51, 0x40, 0x9f, 0xc0, 0x01, 0x26, 0xdc, 0x9f, 0x8e, - 0xe7, 0x28, 0x64, 0xc4, 0x59, 0xb7, 0xa6, 0xa9, 0x7d, 0x0d, 0x7e, 0xce, 0x31, 0xfb, 0x1b, 0x81, - 0xc3, 0xdc, 0xe7, 0xdd, 0x14, 0xfd, 0x38, 0xe1, 0x11, 0x53, 0xb4, 0x0f, 0x75, 0x14, 0x42, 0x5b, - 0xb5, 0x07, 0x1d, 0xa7, 0xec, 0x37, 0xcc, 0x4e, 0x37, 0xa3, 0xe8, 0x6b, 0x68, 0x08, 0xfd, 0x4a, - 0x9b, 0xb6, 0x07, 0x8f, 0x9c, 0xf5, 0xf7, 0x38, 0xff, 0xd6, 0x72, 0x0b, 0x21, 0xb5, 0x00, 0xfc, - 0x75, 0x44, 0xb7, 0xae, 0xbb, 0x54, 0x10, 0xfb, 0x1c, 0x1e, 0x7f, 0x40, 0x35, 0x9a, 0x48, 0xf5, - 0x7e, 0x96, 0xca, 0xe9, 0xf9, 0xd9, 0xa7, 0x2f, 0xb9, 0x93, 0x8b, 0x5f, 0x53, 0x94, 0x8a, 0x1e, - 0xc3, 0x5e, 0x6e, 0x25, 0xbb, 0xa4, 0x5f, 0xbf, 0x3e, 0xb4, 0x54, 0xda, 0x63, 0xb0, 0xae, 0x72, - 0x95, 0x09, 0x67, 0x12, 0xe9, 0x5b, 0x68, 0x6f, 0x5a, 0x94, 0xd6, 0xbd, 0xff, 0xac, 0x37, 0xe3, - 0x71, 0xab, 0x7a, 0xfb, 0x0d, 0x98, 0x67, 0xa9, 0x27, 0x7d, 0x11, 0x79, 0xa8, 0x23, 0x86, 0x73, - 0x64, 0xaa, 0xec, 0xdc, 0x83, 0x96, 0x3f, 0x8b, 0x90, 0xa9, 0x71, 0xb1, 0x9a, 0x96, 0xdb, 0xcc, - 0x81, 0xd3, 0xc0, 0x1e, 0x41, 0x6f, 0xeb, 0xd3, 0xa2, 0xd8, 0x0b, 0x68, 0x60, 0x06, 0x94, 0x9d, - 0xee, 0x57, 0x3a, 0x55, 0xe4, 0x85, 0xc8, 0xf6, 0x00, 0x36, 0x68, 0x16, 0x2c, 0xd5, 0x44, 0xa8, - 0x71, 0x8c, 0x0b, 0x1d, 0xbc, 0xef, 0x36, 0x35, 0xf0, 0x11, 0x17, 0xf4, 0x21, 0xec, 0x21, 0x0b, - 0x34, 0x55, 0xd3, 0x54, 0x03, 0x59, 0x90, 0x11, 0x3b, 0x76, 0x34, 0xf8, 0x43, 0xa0, 0x35, 0xe2, - 0xe1, 0x89, 0x2e, 0x41, 0x39, 0x3c, 0xd8, 0x3e, 0x5b, 0x7a, 0x54, 0xa9, 0x7a, 0xed, 0x52, 0xcd, - 0xe7, 0x37, 0x50, 0xe6, 0xf3, 0xb0, 0x0d, 0x3a, 0x85, 0xbb, 0x5b, 0x06, 0x46, 0x9f, 0x56, 0x3c, - 0xae, 0xde, 0x85, 0xf9, 0x6c, 0x97, 0xac, 0xcc, 0x79, 0x45, 0x4e, 0x06, 0x97, 0x3f, 0x9b, 0xe4, - 0xd7, 0xd2, 0x22, 0x17, 0x4b, 0x8b, 0xfc, 0x5e, 0x5a, 0xe4, 0xfb, 0xca, 0x32, 0x7e, 0xac, 0x2c, - 0xe3, 0x62, 0x65, 0x19, 0x97, 0x2b, 0xcb, 0x80, 0x43, 0x2e, 0x42, 0x47, 0x45, 0xf1, 0xdc, 0x89, - 0xe7, 0xfa, 0x8f, 0xf4, 0x1a, 0xfa, 0x38, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x52, 0x14, 0x33, - 0x5f, 0xee, 0x03, 0x00, 0x00, + // 533 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcb, 0x6e, 0xd3, 0x40, + 0x14, 0x8d, 0x1d, 0x94, 0xc6, 0x37, 0x6d, 0x9a, 0x0e, 0xaf, 0x60, 0x0b, 0x2b, 0x32, 0x02, 0x95, + 0x05, 0x2e, 0xa4, 0x2b, 0x16, 0x6c, 0x8a, 0x02, 0xaa, 0x08, 0x20, 0xb9, 0x15, 0x5b, 0x2b, 0xb6, + 0x07, 0xc7, 0x72, 0xf0, 0x98, 0x99, 0x71, 0x50, 0xbe, 0x80, 0x2d, 0x4b, 0x3e, 0x81, 0x0d, 0xff, + 0xc1, 0xb2, 0xcb, 0x2e, 0x51, 0xf2, 0x23, 0xc8, 0x63, 0x4f, 0x6c, 0x20, 0x7d, 0xac, 0x3c, 0x3a, + 0xf7, 0xcc, 0x39, 0xe7, 0xde, 0x3b, 0x32, 0xec, 0xcd, 0x48, 0xe8, 0x4d, 0xfc, 0x38, 0x4b, 0x53, + 0xcf, 0x4e, 0x29, 0xe1, 0x04, 0x69, 0x6b, 0x48, 0xdf, 0xc1, 0x94, 0x12, 0x2a, 0x2b, 0xfa, 0xad, + 0x90, 0x84, 0x44, 0x1c, 0x0f, 0xf2, 0x53, 0x89, 0xee, 0xd2, 0x8c, 0x71, 0x71, 0x2c, 0x00, 0x6b, + 0x04, 0x5d, 0x07, 0x87, 0x11, 0x49, 0x8e, 0x03, 0x9c, 0xf0, 0x88, 0x2f, 0x50, 0x17, 0xd4, 0x28, + 0xe8, 0x2b, 0x03, 0x65, 0xff, 0x86, 0xa3, 0x46, 0x01, 0x7a, 0x00, 0x3b, 0x38, 0x25, 0xfe, 0xd4, + 0x9d, 0x63, 0xca, 0x22, 0x92, 0xf4, 0x55, 0x51, 0xda, 0x16, 0xe0, 0x87, 0x02, 0xb3, 0xbe, 0x2a, + 0xd0, 0x2b, 0x74, 0x5e, 0x4e, 0xb1, 0x1f, 0xa7, 0x24, 0x4a, 0x38, 0x1a, 0x40, 0x13, 0x53, 0x2a, + 0xa4, 0x3a, 0xc3, 0xae, 0x2d, 0xf3, 0x8d, 0xf2, 0xaf, 0x93, 0x97, 0xd0, 0x33, 0x68, 0x51, 0x71, + 0x4b, 0x88, 0x76, 0x86, 0xf7, 0xec, 0x75, 0x3f, 0xf6, 0xdf, 0xb1, 0x9c, 0x92, 0x88, 0x4c, 0x00, + 0x7f, 0x6d, 0xd1, 0x6f, 0x8a, 0x2c, 0x35, 0xc4, 0x3a, 0x85, 0xfb, 0xaf, 0x31, 0x1f, 0x4f, 0x18, + 0x7f, 0x35, 0xcb, 0xd8, 0xf4, 0xf4, 0xe4, 0xfd, 0xc7, 0x42, 0xc9, 0xc1, 0x9f, 0x33, 0xcc, 0x38, + 0x3a, 0x84, 0xad, 0x42, 0x8a, 0xf5, 0x95, 0x41, 0xf3, 0x72, 0x53, 0xc9, 0xb4, 0x5c, 0x30, 0x2f, + 0x52, 0x65, 0x29, 0x49, 0x18, 0x46, 0x2f, 0xa0, 0x53, 0xa5, 0x90, 0xd2, 0xc6, 0x7f, 0xd2, 0xd5, + 0x78, 0x9c, 0x3a, 0xdf, 0x7a, 0x0e, 0xfa, 0x49, 0xe6, 0x31, 0x9f, 0x46, 0x1e, 0x16, 0x16, 0xa3, + 0x39, 0x4e, 0xb8, 0xcc, 0x6c, 0x80, 0xe6, 0xcf, 0x22, 0x9c, 0x70, 0xb7, 0x5c, 0x8d, 0xe6, 0xb4, + 0x0b, 0xe0, 0x38, 0xb0, 0xc6, 0x60, 0x6c, 0xbc, 0x5a, 0x06, 0x7b, 0x02, 0x2d, 0x9c, 0x03, 0x32, + 0xd3, 0xed, 0x5a, 0xa6, 0x1a, 0xbd, 0x24, 0x59, 0x1e, 0x40, 0x85, 0xe6, 0xc6, 0x8c, 0x4f, 0x28, + 0x77, 0x63, 0xbc, 0x10, 0xc6, 0xdb, 0x4e, 0x5b, 0x00, 0x6f, 0xf0, 0x02, 0xdd, 0x85, 0x2d, 0x9c, + 0x04, 0xa2, 0xa4, 0x8a, 0x52, 0x0b, 0x27, 0x41, 0x5e, 0xb8, 0x6a, 0x47, 0x7b, 0xb0, 0x2b, 0x3c, + 0xde, 0x91, 0x2f, 0x65, 0x87, 0xd6, 0x01, 0xf4, 0x2a, 0xa8, 0x4c, 0x6e, 0x80, 0x26, 0xde, 0x8c, + 0xfb, 0x89, 0x85, 0xb2, 0x6b, 0x01, 0xbc, 0x65, 0xe1, 0xf0, 0xa7, 0x0a, 0xda, 0x98, 0x84, 0x47, + 0xa2, 0x11, 0x44, 0xe0, 0xce, 0xe6, 0xfd, 0xa0, 0xfd, 0x5a, 0xbb, 0x97, 0x3e, 0x0c, 0xfd, 0xf1, + 0x35, 0x98, 0x45, 0x32, 0xab, 0x81, 0xa6, 0x70, 0x73, 0xc3, 0xd0, 0xd1, 0xc3, 0x9a, 0xc6, 0xc5, + 0xfb, 0xd4, 0x1f, 0x5d, 0x45, 0x93, 0x3e, 0x4f, 0x15, 0x34, 0x82, 0xb6, 0x9c, 0x0c, 0xd2, 0xff, + 0xdd, 0x5d, 0x35, 0x41, 0xdd, 0xd8, 0x58, 0x93, 0x42, 0x47, 0xc3, 0xf3, 0x1f, 0x6d, 0xe5, 0xd7, + 0xd2, 0x54, 0xce, 0x96, 0xa6, 0xf2, 0x7b, 0x69, 0x2a, 0xdf, 0x56, 0x66, 0xe3, 0xfb, 0xca, 0x6c, + 0x9c, 0xad, 0xcc, 0xc6, 0xf9, 0xca, 0x6c, 0x40, 0x8f, 0xd0, 0xd0, 0xe6, 0x51, 0x3c, 0xb7, 0xe3, + 0xb9, 0xf8, 0x39, 0x78, 0x2d, 0xf1, 0x39, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x03, 0x72, + 0xb9, 0x79, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -440,6 +525,7 @@ const _ = grpc.SupportPackageIsVersion4 type LogBackupClient interface { GetLastFlushTSOfRegion(ctx context.Context, in *GetLastFlushTSOfRegionRequest, opts ...grpc.CallOption) (*GetLastFlushTSOfRegionResponse, error) SubscribeFlushEvent(ctx context.Context, in *SubscribeFlushEventRequest, opts ...grpc.CallOption) (LogBackup_SubscribeFlushEventClient, error) + FlushNow(ctx context.Context, in *FlushNowRequest, opts ...grpc.CallOption) (*FlushNowResponse, error) } type logBackupClient struct { @@ -491,10 +577,20 @@ func (x *logBackupSubscribeFlushEventClient) Recv() (*SubscribeFlushEventRespons return m, nil } +func (c *logBackupClient) FlushNow(ctx context.Context, in *FlushNowRequest, opts ...grpc.CallOption) (*FlushNowResponse, error) { + out := new(FlushNowResponse) + err := c.cc.Invoke(ctx, "/logbackup.LogBackup/FlushNow", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // LogBackupServer is the server API for LogBackup service. type LogBackupServer interface { GetLastFlushTSOfRegion(context.Context, *GetLastFlushTSOfRegionRequest) (*GetLastFlushTSOfRegionResponse, error) SubscribeFlushEvent(*SubscribeFlushEventRequest, LogBackup_SubscribeFlushEventServer) error + FlushNow(context.Context, *FlushNowRequest) (*FlushNowResponse, error) } // UnimplementedLogBackupServer can be embedded to have forward compatible implementations. @@ -507,6 +603,9 @@ func (*UnimplementedLogBackupServer) GetLastFlushTSOfRegion(ctx context.Context, func (*UnimplementedLogBackupServer) SubscribeFlushEvent(req *SubscribeFlushEventRequest, srv LogBackup_SubscribeFlushEventServer) error { return status.Errorf(codes.Unimplemented, "method SubscribeFlushEvent not implemented") } +func (*UnimplementedLogBackupServer) FlushNow(ctx context.Context, req *FlushNowRequest) (*FlushNowResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FlushNow not implemented") +} func RegisterLogBackupServer(s *grpc.Server, srv LogBackupServer) { s.RegisterService(&_LogBackup_serviceDesc, srv) @@ -551,6 +650,24 @@ func (x *logBackupSubscribeFlushEventServer) Send(m *SubscribeFlushEventResponse return x.ServerStream.SendMsg(m) } +func _LogBackup_FlushNow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FlushNowRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LogBackupServer).FlushNow(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/logbackup.LogBackup/FlushNow", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LogBackupServer).FlushNow(ctx, req.(*FlushNowRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _LogBackup_serviceDesc = grpc.ServiceDesc{ ServiceName: "logbackup.LogBackup", HandlerType: (*LogBackupServer)(nil), @@ -559,6 +676,10 @@ var _LogBackup_serviceDesc = grpc.ServiceDesc{ MethodName: "GetLastFlushTSOfRegion", Handler: _LogBackup_GetLastFlushTSOfRegion_Handler, }, + { + MethodName: "FlushNow", + Handler: _LogBackup_FlushNow_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -838,6 +959,59 @@ func (m *FlushEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *FlushNowRequest) 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 *FlushNowRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FlushNowRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *FlushNowResponse) 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 *FlushNowResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FlushNowResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ErrorMsg) > 0 { + i -= len(m.ErrorMsg) + copy(dAtA[i:], m.ErrorMsg) + i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.ErrorMsg))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintLogbackuppb(dAtA []byte, offset int, v uint64) int { offset -= sovLogbackuppb(v) base := offset @@ -962,6 +1136,28 @@ func (m *FlushEvent) Size() (n int) { return n } +func (m *FlushNowRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *FlushNowResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ErrorMsg) + if l > 0 { + n += 1 + l + sovLogbackuppb(uint64(l)) + } + return n +} + func sovLogbackuppb(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1668,6 +1864,138 @@ func (m *FlushEvent) Unmarshal(dAtA []byte) error { } return nil } +func (m *FlushNowRequest) 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 ErrIntOverflowLogbackuppb + } + 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: FlushNowRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlushNowRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipLogbackuppb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLogbackuppb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlushNowResponse) 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 ErrIntOverflowLogbackuppb + } + 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: FlushNowResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlushNowResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ErrorMsg", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbackuppb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLogbackuppb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLogbackuppb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ErrorMsg = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLogbackuppb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLogbackuppb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipLogbackuppb(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/proto/logbackuppb.proto b/proto/logbackuppb.proto index 77784b001..a84a28e35 100644 --- a/proto/logbackuppb.proto +++ b/proto/logbackuppb.proto @@ -52,6 +52,13 @@ message FlushEvent { uint64 checkpoint = 3; } +message FlushNowRequest { +} + +message FlushNowResponse { + string error_msg = 1; +} + // The log backup service. // Generally, most essential interfaces of log backup (say, checkpoint management, task management) are // provided by adding some key in the embed etcd of PD. @@ -59,4 +66,5 @@ message FlushEvent { service LogBackup { rpc GetLastFlushTSOfRegion(GetLastFlushTSOfRegionRequest) returns (GetLastFlushTSOfRegionResponse) {} rpc SubscribeFlushEvent(SubscribeFlushEventRequest) returns (stream SubscribeFlushEventResponse) {} + rpc FlushNow(FlushNowRequest) returns (FlushNowResponse) {} } diff --git a/scripts/proto.lock b/scripts/proto.lock index 3b5bdbc43..08064abe6 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -12789,6 +12789,19 @@ "type": "uint64" } ] + }, + { + "name": "FlushNowRequest" + }, + { + "name": "FlushNowResponse", + "fields": [ + { + "id": 1, + "name": "error_msg", + "type": "string" + } + ] } ], "services": [ @@ -12805,6 +12818,11 @@ "in_type": "SubscribeFlushEventRequest", "out_type": "SubscribeFlushEventResponse", "out_streamed": true + }, + { + "name": "FlushNow", + "in_type": "FlushNowRequest", + "out_type": "FlushNowResponse" } ] } From e6af9662093b5969571318b16c59f8dba30947d9 Mon Sep 17 00:00:00 2001 From: hillium Date: Fri, 29 Nov 2024 16:36:07 +0800 Subject: [PATCH 04/10] make result repeated Signed-off-by: hillium --- pkg/logbackuppb/logbackuppb.pb.go | 364 ++++++++++++++++++++++++++---- proto/logbackuppb.proto | 8 +- scripts/proto.lock | 23 +- 3 files changed, 349 insertions(+), 46 deletions(-) diff --git a/pkg/logbackuppb/logbackuppb.pb.go b/pkg/logbackuppb/logbackuppb.pb.go index da14aa759..c114a1c92 100644 --- a/pkg/logbackuppb/logbackuppb.pb.go +++ b/pkg/logbackuppb/logbackuppb.pb.go @@ -416,7 +416,7 @@ func (m *FlushNowRequest) XXX_DiscardUnknown() { var xxx_messageInfo_FlushNowRequest proto.InternalMessageInfo type FlushNowResponse struct { - ErrorMsg string `protobuf:"bytes,1,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + Results []*FlushResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` } func (m *FlushNowResponse) Reset() { *m = FlushNowResponse{} } @@ -452,9 +452,69 @@ func (m *FlushNowResponse) XXX_DiscardUnknown() { var xxx_messageInfo_FlushNowResponse proto.InternalMessageInfo -func (m *FlushNowResponse) GetErrorMsg() string { +func (m *FlushNowResponse) GetResults() []*FlushResult { if m != nil { - return m.ErrorMsg + return m.Results + } + return nil +} + +type FlushResult struct { + TaskName string `protobuf:"bytes,1,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"` + Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"` + ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` +} + +func (m *FlushResult) Reset() { *m = FlushResult{} } +func (m *FlushResult) String() string { return proto.CompactTextString(m) } +func (*FlushResult) ProtoMessage() {} +func (*FlushResult) Descriptor() ([]byte, []int) { + return fileDescriptor_9a556fe18b032662, []int{9} +} +func (m *FlushResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FlushResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FlushResult.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 *FlushResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_FlushResult.Merge(m, src) +} +func (m *FlushResult) XXX_Size() int { + return m.Size() +} +func (m *FlushResult) XXX_DiscardUnknown() { + xxx_messageInfo_FlushResult.DiscardUnknown(m) +} + +var xxx_messageInfo_FlushResult proto.InternalMessageInfo + +func (m *FlushResult) GetTaskName() string { + if m != nil { + return m.TaskName + } + return "" +} + +func (m *FlushResult) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +func (m *FlushResult) GetErrorMessage() string { + if m != nil { + return m.ErrorMessage } return "" } @@ -469,46 +529,50 @@ func init() { proto.RegisterType((*FlushEvent)(nil), "logbackup.FlushEvent") proto.RegisterType((*FlushNowRequest)(nil), "logbackup.FlushNowRequest") proto.RegisterType((*FlushNowResponse)(nil), "logbackup.FlushNowResponse") + proto.RegisterType((*FlushResult)(nil), "logbackup.FlushResult") } func init() { proto.RegisterFile("logbackuppb.proto", fileDescriptor_9a556fe18b032662) } var fileDescriptor_9a556fe18b032662 = []byte{ - // 533 bytes of a gzipped FileDescriptorProto + // 587 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0x8d, 0x1d, 0x94, 0xc6, 0x37, 0x6d, 0x9a, 0x0e, 0xaf, 0x60, 0x0b, 0x2b, 0x32, 0x02, 0x95, - 0x05, 0x2e, 0xa4, 0x2b, 0x16, 0x6c, 0x8a, 0x02, 0xaa, 0x08, 0x20, 0xb9, 0x15, 0x5b, 0x2b, 0xb6, - 0x07, 0xc7, 0x72, 0xf0, 0x98, 0x99, 0x71, 0x50, 0xbe, 0x80, 0x2d, 0x4b, 0x3e, 0x81, 0x0d, 0xff, - 0xc1, 0xb2, 0xcb, 0x2e, 0x51, 0xf2, 0x23, 0xc8, 0x63, 0x4f, 0x6c, 0x20, 0x7d, 0xac, 0x3c, 0x3a, - 0xf7, 0xcc, 0x39, 0xe7, 0xde, 0x3b, 0x32, 0xec, 0xcd, 0x48, 0xe8, 0x4d, 0xfc, 0x38, 0x4b, 0x53, - 0xcf, 0x4e, 0x29, 0xe1, 0x04, 0x69, 0x6b, 0x48, 0xdf, 0xc1, 0x94, 0x12, 0x2a, 0x2b, 0xfa, 0xad, - 0x90, 0x84, 0x44, 0x1c, 0x0f, 0xf2, 0x53, 0x89, 0xee, 0xd2, 0x8c, 0x71, 0x71, 0x2c, 0x00, 0x6b, - 0x04, 0x5d, 0x07, 0x87, 0x11, 0x49, 0x8e, 0x03, 0x9c, 0xf0, 0x88, 0x2f, 0x50, 0x17, 0xd4, 0x28, - 0xe8, 0x2b, 0x03, 0x65, 0xff, 0x86, 0xa3, 0x46, 0x01, 0x7a, 0x00, 0x3b, 0x38, 0x25, 0xfe, 0xd4, - 0x9d, 0x63, 0xca, 0x22, 0x92, 0xf4, 0x55, 0x51, 0xda, 0x16, 0xe0, 0x87, 0x02, 0xb3, 0xbe, 0x2a, - 0xd0, 0x2b, 0x74, 0x5e, 0x4e, 0xb1, 0x1f, 0xa7, 0x24, 0x4a, 0x38, 0x1a, 0x40, 0x13, 0x53, 0x2a, - 0xa4, 0x3a, 0xc3, 0xae, 0x2d, 0xf3, 0x8d, 0xf2, 0xaf, 0x93, 0x97, 0xd0, 0x33, 0x68, 0x51, 0x71, - 0x4b, 0x88, 0x76, 0x86, 0xf7, 0xec, 0x75, 0x3f, 0xf6, 0xdf, 0xb1, 0x9c, 0x92, 0x88, 0x4c, 0x00, - 0x7f, 0x6d, 0xd1, 0x6f, 0x8a, 0x2c, 0x35, 0xc4, 0x3a, 0x85, 0xfb, 0xaf, 0x31, 0x1f, 0x4f, 0x18, - 0x7f, 0x35, 0xcb, 0xd8, 0xf4, 0xf4, 0xe4, 0xfd, 0xc7, 0x42, 0xc9, 0xc1, 0x9f, 0x33, 0xcc, 0x38, - 0x3a, 0x84, 0xad, 0x42, 0x8a, 0xf5, 0x95, 0x41, 0xf3, 0x72, 0x53, 0xc9, 0xb4, 0x5c, 0x30, 0x2f, - 0x52, 0x65, 0x29, 0x49, 0x18, 0x46, 0x2f, 0xa0, 0x53, 0xa5, 0x90, 0xd2, 0xc6, 0x7f, 0xd2, 0xd5, - 0x78, 0x9c, 0x3a, 0xdf, 0x7a, 0x0e, 0xfa, 0x49, 0xe6, 0x31, 0x9f, 0x46, 0x1e, 0x16, 0x16, 0xa3, - 0x39, 0x4e, 0xb8, 0xcc, 0x6c, 0x80, 0xe6, 0xcf, 0x22, 0x9c, 0x70, 0xb7, 0x5c, 0x8d, 0xe6, 0xb4, - 0x0b, 0xe0, 0x38, 0xb0, 0xc6, 0x60, 0x6c, 0xbc, 0x5a, 0x06, 0x7b, 0x02, 0x2d, 0x9c, 0x03, 0x32, - 0xd3, 0xed, 0x5a, 0xa6, 0x1a, 0xbd, 0x24, 0x59, 0x1e, 0x40, 0x85, 0xe6, 0xc6, 0x8c, 0x4f, 0x28, - 0x77, 0x63, 0xbc, 0x10, 0xc6, 0xdb, 0x4e, 0x5b, 0x00, 0x6f, 0xf0, 0x02, 0xdd, 0x85, 0x2d, 0x9c, - 0x04, 0xa2, 0xa4, 0x8a, 0x52, 0x0b, 0x27, 0x41, 0x5e, 0xb8, 0x6a, 0x47, 0x7b, 0xb0, 0x2b, 0x3c, - 0xde, 0x91, 0x2f, 0x65, 0x87, 0xd6, 0x01, 0xf4, 0x2a, 0xa8, 0x4c, 0x6e, 0x80, 0x26, 0xde, 0x8c, - 0xfb, 0x89, 0x85, 0xb2, 0x6b, 0x01, 0xbc, 0x65, 0xe1, 0xf0, 0xa7, 0x0a, 0xda, 0x98, 0x84, 0x47, - 0xa2, 0x11, 0x44, 0xe0, 0xce, 0xe6, 0xfd, 0xa0, 0xfd, 0x5a, 0xbb, 0x97, 0x3e, 0x0c, 0xfd, 0xf1, - 0x35, 0x98, 0x45, 0x32, 0xab, 0x81, 0xa6, 0x70, 0x73, 0xc3, 0xd0, 0xd1, 0xc3, 0x9a, 0xc6, 0xc5, - 0xfb, 0xd4, 0x1f, 0x5d, 0x45, 0x93, 0x3e, 0x4f, 0x15, 0x34, 0x82, 0xb6, 0x9c, 0x0c, 0xd2, 0xff, - 0xdd, 0x5d, 0x35, 0x41, 0xdd, 0xd8, 0x58, 0x93, 0x42, 0x47, 0xc3, 0xf3, 0x1f, 0x6d, 0xe5, 0xd7, - 0xd2, 0x54, 0xce, 0x96, 0xa6, 0xf2, 0x7b, 0x69, 0x2a, 0xdf, 0x56, 0x66, 0xe3, 0xfb, 0xca, 0x6c, - 0x9c, 0xad, 0xcc, 0xc6, 0xf9, 0xca, 0x6c, 0x40, 0x8f, 0xd0, 0xd0, 0xe6, 0x51, 0x3c, 0xb7, 0xe3, - 0xb9, 0xf8, 0x39, 0x78, 0x2d, 0xf1, 0x39, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x03, 0x72, - 0xb9, 0x79, 0x04, 0x00, 0x00, + 0x14, 0x8d, 0x53, 0x94, 0x26, 0x37, 0x7d, 0x0e, 0x50, 0x82, 0x23, 0xac, 0xca, 0x08, 0x54, 0x16, + 0x84, 0x92, 0xae, 0x58, 0xb0, 0x29, 0x04, 0x54, 0x51, 0x8a, 0x34, 0xad, 0xd8, 0x5a, 0x7e, 0x5c, + 0x1c, 0xcb, 0xa9, 0xc7, 0xcc, 0x8c, 0x83, 0xfa, 0x05, 0x6c, 0x59, 0xf2, 0x09, 0x6c, 0xf8, 0x0f, + 0x96, 0x5d, 0x76, 0x89, 0x92, 0x1f, 0x41, 0x1e, 0x7b, 0x12, 0x53, 0xd2, 0x96, 0xd5, 0x8c, 0xcf, + 0x39, 0x73, 0xee, 0x99, 0xb9, 0x57, 0x86, 0xcd, 0x11, 0x0b, 0x3d, 0xd7, 0x8f, 0xb3, 0x34, 0xf5, + 0x7a, 0x29, 0x67, 0x92, 0x91, 0xd6, 0x0c, 0x32, 0x57, 0x91, 0x73, 0xc6, 0x35, 0x63, 0xde, 0x09, + 0x59, 0xc8, 0xd4, 0xf6, 0x59, 0xbe, 0x2b, 0xd1, 0x75, 0x9e, 0x09, 0xa9, 0xb6, 0x05, 0x60, 0x0f, + 0x60, 0x8d, 0x62, 0x18, 0xb1, 0xe4, 0x20, 0xc0, 0x44, 0x46, 0xf2, 0x8c, 0xac, 0x41, 0x3d, 0x0a, + 0x3a, 0xc6, 0xb6, 0xb1, 0x73, 0x8b, 0xd6, 0xa3, 0x80, 0x3c, 0x84, 0x55, 0x4c, 0x99, 0x3f, 0x74, + 0xc6, 0xc8, 0x45, 0xc4, 0x92, 0x4e, 0x5d, 0x51, 0x2b, 0x0a, 0xfc, 0x58, 0x60, 0xf6, 0x57, 0x03, + 0x36, 0x0a, 0x9f, 0x57, 0x43, 0xf4, 0xe3, 0x94, 0x45, 0x89, 0x24, 0xdb, 0xb0, 0x84, 0x9c, 0x2b, + 0xab, 0x76, 0x7f, 0xad, 0xa7, 0xf3, 0x0d, 0xf2, 0x95, 0xe6, 0x14, 0x79, 0x0e, 0x0d, 0xae, 0x4e, + 0x29, 0xd3, 0x76, 0xff, 0x7e, 0x6f, 0x76, 0x9f, 0xde, 0xdf, 0xb1, 0x68, 0x29, 0x24, 0x16, 0x80, + 0x3f, 0x2b, 0xd1, 0x59, 0x52, 0x59, 0x2a, 0x88, 0x7d, 0x02, 0x0f, 0xde, 0xa2, 0x3c, 0x74, 0x85, + 0x7c, 0x33, 0xca, 0xc4, 0xf0, 0xe4, 0xf8, 0xc3, 0xa7, 0xc2, 0x89, 0xe2, 0xe7, 0x0c, 0x85, 0x24, + 0x7b, 0xb0, 0x5c, 0x58, 0x89, 0x8e, 0xb1, 0xbd, 0x74, 0x7d, 0x51, 0xad, 0xb4, 0x1d, 0xb0, 0xae, + 0x72, 0x15, 0x29, 0x4b, 0x04, 0x92, 0x97, 0xd0, 0x9e, 0xa7, 0xd0, 0xd6, 0xdd, 0x7f, 0xac, 0xe7, + 0xcf, 0x43, 0xab, 0x7a, 0xfb, 0x05, 0x98, 0xc7, 0x99, 0x27, 0x7c, 0x1e, 0x79, 0xa8, 0x4a, 0x0c, + 0xc6, 0x98, 0x48, 0x9d, 0xb9, 0x0b, 0x2d, 0x7f, 0x14, 0x61, 0x22, 0x9d, 0xb2, 0x35, 0x2d, 0xda, + 0x2c, 0x80, 0x83, 0xc0, 0x3e, 0x84, 0xee, 0xc2, 0xa3, 0x65, 0xb0, 0xa7, 0xd0, 0xc0, 0x1c, 0xd0, + 0x99, 0xee, 0x56, 0x32, 0x55, 0xe4, 0xa5, 0xc8, 0xf6, 0x00, 0xe6, 0x68, 0x5e, 0x58, 0x48, 0x97, + 0x4b, 0x27, 0xc6, 0x33, 0x55, 0x78, 0x85, 0x36, 0x15, 0xf0, 0x0e, 0xcf, 0xc8, 0x3d, 0x58, 0xc6, + 0x24, 0x50, 0x54, 0x5d, 0x51, 0x0d, 0x4c, 0x82, 0x9c, 0xb8, 0xa9, 0x47, 0x9b, 0xb0, 0xae, 0x6a, + 0x1c, 0xb1, 0x2f, 0xe5, 0x0d, 0xed, 0xd7, 0xb0, 0x31, 0x87, 0xca, 0xe4, 0xbb, 0x79, 0xa7, 0x44, + 0x36, 0x9a, 0x45, 0xdf, 0xba, 0x1c, 0x9d, 0x2a, 0x9a, 0x6a, 0x99, 0x1d, 0x41, 0xbb, 0x82, 0xe7, + 0xe9, 0xa5, 0x2b, 0x62, 0x27, 0x71, 0x4f, 0x51, 0x3f, 0x5b, 0x0e, 0x1c, 0xb9, 0xa7, 0x48, 0x3a, + 0xb0, 0x2c, 0x32, 0xdf, 0x47, 0x21, 0x54, 0xfa, 0x26, 0xd5, 0x9f, 0x6a, 0xe2, 0xf3, 0x19, 0x75, + 0x4e, 0x51, 0x08, 0x37, 0x44, 0x75, 0x83, 0x16, 0x5d, 0x51, 0xe0, 0xfb, 0x02, 0xeb, 0xff, 0xac, + 0x43, 0xeb, 0x90, 0x85, 0xfb, 0x2a, 0x0d, 0x61, 0xb0, 0xb5, 0x78, 0x3e, 0xc8, 0x4e, 0x25, 0xf3, + 0xb5, 0x83, 0x69, 0x3e, 0xf9, 0x0f, 0x65, 0xf1, 0x32, 0x76, 0x8d, 0x0c, 0xe1, 0xf6, 0x82, 0xa6, + 0x93, 0x47, 0x15, 0x8f, 0xab, 0xe7, 0xc9, 0x7c, 0x7c, 0x93, 0x4c, 0xd7, 0xd9, 0x35, 0xc8, 0x00, + 0x9a, 0xba, 0x33, 0xc4, 0xbc, 0xdc, 0x80, 0x79, 0x07, 0xcd, 0xee, 0x42, 0x4e, 0x1b, 0xed, 0xf7, + 0x2f, 0x7e, 0x34, 0x8d, 0x5f, 0x13, 0xcb, 0x38, 0x9f, 0x58, 0xc6, 0xef, 0x89, 0x65, 0x7c, 0x9b, + 0x5a, 0xb5, 0xef, 0x53, 0xab, 0x76, 0x3e, 0xb5, 0x6a, 0x17, 0x53, 0xab, 0x06, 0x1b, 0x8c, 0x87, + 0x3d, 0x19, 0xc5, 0xe3, 0x5e, 0x3c, 0x56, 0x3f, 0x27, 0xaf, 0xa1, 0x96, 0xbd, 0x3f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xe8, 0x4e, 0x8d, 0x4c, 0xf9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1002,10 +1066,64 @@ func (m *FlushNowResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.ErrorMsg) > 0 { - i -= len(m.ErrorMsg) - copy(dAtA[i:], m.ErrorMsg) - i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.ErrorMsg))) + if len(m.Results) > 0 { + for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLogbackuppb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *FlushResult) 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 *FlushResult) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FlushResult) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ErrorMessage) > 0 { + i -= len(m.ErrorMessage) + copy(dAtA[i:], m.ErrorMessage) + i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.ErrorMessage))) + i-- + dAtA[i] = 0x1a + } + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.TaskName) > 0 { + i -= len(m.TaskName) + copy(dAtA[i:], m.TaskName) + i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.TaskName))) i-- dAtA[i] = 0xa } @@ -1151,7 +1269,29 @@ func (m *FlushNowResponse) Size() (n int) { } var l int _ = l - l = len(m.ErrorMsg) + if len(m.Results) > 0 { + for _, e := range m.Results { + l = e.Size() + n += 1 + l + sovLogbackuppb(uint64(l)) + } + } + return n +} + +func (m *FlushResult) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.TaskName) + if l > 0 { + n += 1 + l + sovLogbackuppb(uint64(l)) + } + if m.Success { + n += 2 + } + l = len(m.ErrorMessage) if l > 0 { n += 1 + l + sovLogbackuppb(uint64(l)) } @@ -1945,7 +2085,143 @@ func (m *FlushNowResponse) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ErrorMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbackuppb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLogbackuppb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLogbackuppb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Results = append(m.Results, &FlushResult{}) + if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLogbackuppb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLogbackuppb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlushResult) 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 ErrIntOverflowLogbackuppb + } + 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: FlushResult: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlushResult: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TaskName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbackuppb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLogbackuppb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLogbackuppb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TaskName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbackuppb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ErrorMessage", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1973,7 +2249,7 @@ func (m *FlushNowResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ErrorMsg = string(dAtA[iNdEx:postIndex]) + m.ErrorMessage = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/proto/logbackuppb.proto b/proto/logbackuppb.proto index a84a28e35..926d3b250 100644 --- a/proto/logbackuppb.proto +++ b/proto/logbackuppb.proto @@ -56,7 +56,13 @@ message FlushNowRequest { } message FlushNowResponse { - string error_msg = 1; + repeated FlushResult results = 1; +} + +message FlushResult { + string task_name = 1; + bool success = 2; + string error_message = 3; } // The log backup service. diff --git a/scripts/proto.lock b/scripts/proto.lock index 08064abe6..5dc78172b 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -12798,7 +12798,28 @@ "fields": [ { "id": 1, - "name": "error_msg", + "name": "results", + "type": "FlushResult", + "is_repeated": true + } + ] + }, + { + "name": "FlushResult", + "fields": [ + { + "id": 1, + "name": "task_name", + "type": "string" + }, + { + "id": 2, + "name": "success", + "type": "bool" + }, + { + "id": 3, + "name": "error_message", "type": "string" } ] From b7173611eabadad06c8b2a2611ebd3717f35c840 Mon Sep 17 00:00:00 2001 From: hillium Date: Thu, 5 Dec 2024 16:30:59 +0800 Subject: [PATCH 05/10] make full backup a reference Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 736 +++++++++++++++++++++++++------------------- proto/brpb.proto | 7 +- scripts/proto.lock | 14 +- 3 files changed, 432 insertions(+), 325 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index acb611669..a1c7044f5 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -4788,6 +4788,10 @@ type ExtraFullBackup struct { Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` AsIfTs uint64 `protobuf:"varint,3,opt,name=as_if_ts,json=asIfTs,proto3" json:"as_if_ts,omitempty"` FilesPrefixHint string `protobuf:"bytes,4,opt,name=files_prefix_hint,json=filesPrefixHint,proto3" json:"files_prefix_hint,omitempty"` + Finished bool `protobuf:"varint,5,opt,name=finished,proto3" json:"finished,omitempty"` + // When checkpoint enabled, one extra full backup + // may be sperated to many batch of files. + BackupUuid []byte `protobuf:"bytes,6,opt,name=backup_uuid,json=backupUuid,proto3" json:"backup_uuid,omitempty"` } func (m *ExtraFullBackup) Reset() { *m = ExtraFullBackup{} } @@ -4851,6 +4855,20 @@ func (m *ExtraFullBackup) GetFilesPrefixHint() string { return "" } +func (m *ExtraFullBackup) GetFinished() bool { + if m != nil { + return m.Finished + } + return false +} + +func (m *ExtraFullBackup) GetBackupUuid() []byte { + if m != nil { + return m.BackupUuid + } + return nil +} + // An extended version of `SpansOfFile`, added more metadata for the // execution of delayed deletion. type DeleteSpansOfFile struct { @@ -4924,7 +4942,8 @@ type Migration struct { // Delete all files matches this prefix. DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` // The extra full backups. - ExtraFullBackups []*ExtraFullBackup `protobuf:"bytes,7,rep,name=extra_full_backups,json=extraFullBackups,proto3" json:"extra_full_backups,omitempty"` + // It is mutable during restoring, hence a reference. + ExtraFullBackupPaths []string `protobuf:"bytes,7,rep,name=extra_full_backup_paths,json=extraFullBackupPaths,proto3" json:"extra_full_backup_paths,omitempty"` } func (m *Migration) Reset() { *m = Migration{} } @@ -5002,9 +5021,9 @@ func (m *Migration) GetDestructPrefix() []string { return nil } -func (m *Migration) GetExtraFullBackups() []*ExtraFullBackup { +func (m *Migration) GetExtraFullBackupPaths() []string { if m != nil { - return m.ExtraFullBackups + return m.ExtraFullBackupPaths } return nil } @@ -5082,303 +5101,305 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4729 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7b, 0xcd, 0x6f, 0x1c, 0x47, - 0x76, 0x38, 0x7b, 0xbe, 0xe7, 0xcd, 0x27, 0x8b, 0x94, 0x34, 0xa6, 0x2d, 0x8a, 0x6e, 0x59, 0x5a, - 0xfe, 0xb8, 0x2b, 0xae, 0x56, 0xf2, 0x6a, 0xf5, 0x8b, 0x37, 0x58, 0xf0, 0x4b, 0x26, 0x57, 0xa2, - 0xc4, 0x34, 0x69, 0x2f, 0x62, 0x20, 0xe8, 0xf4, 0x74, 0xd7, 0x90, 0xbd, 0xec, 0xe9, 0xee, 0xed, - 0xaa, 0xa1, 0x44, 0x1f, 0x72, 0xc8, 0xdd, 0xf0, 0x26, 0xc8, 0x21, 0xff, 0x40, 0x80, 0x1c, 0x12, - 0x20, 0xd7, 0x9c, 0x92, 0x43, 0x82, 0x6c, 0x90, 0x00, 0xf1, 0x21, 0x07, 0x1f, 0x03, 0x1b, 0xc9, - 0x7f, 0x11, 0x20, 0xa8, 0x57, 0x55, 0xfd, 0x31, 0x1c, 0x52, 0x92, 0x13, 0xec, 0x89, 0x53, 0xef, - 0xbd, 0xaa, 0x7e, 0xf5, 0xbe, 0xea, 0xbd, 0x57, 0x45, 0x80, 0x61, 0x12, 0x0f, 0xd7, 0xe3, 0x24, - 0xe2, 0x11, 0xa9, 0x0d, 0x1d, 0xf7, 0x74, 0x12, 0x2f, 0x75, 0x4e, 0xcf, 0x92, 0xd8, 0xd5, 0xe0, - 0xa5, 0x0e, 0x4d, 0x92, 0x28, 0xa5, 0x5a, 0x6a, 0x8f, 0x29, 0x77, 0xd2, 0x11, 0xa1, 0xa1, 0x9b, - 0x9c, 0xc7, 0xdc, 0x8f, 0xc2, 0x14, 0xb6, 0x78, 0x1c, 0x1d, 0x47, 0xf8, 0xf3, 0x87, 0xe2, 0x97, - 0x82, 0xf6, 0x92, 0x09, 0xe3, 0xf8, 0x53, 0x02, 0xcc, 0xbf, 0x32, 0xe0, 0xbd, 0x83, 0x84, 0xc6, - 0x4e, 0x42, 0x0f, 0x43, 0x27, 0x66, 0x27, 0x11, 0xdf, 0x44, 0x06, 0x2c, 0xfa, 0xab, 0x09, 0x65, - 0x9c, 0x3c, 0x86, 0x12, 0x3f, 0x1f, 0x18, 0x2b, 0xc6, 0x6a, 0xf7, 0xc1, 0xea, 0xba, 0x64, 0x6e, - 0xfd, 0xaa, 0x19, 0x47, 0xe7, 0x31, 0xb5, 0x4a, 0xfc, 0x9c, 0xac, 0x42, 0x3d, 0xa1, 0xc7, 0x7e, - 0x14, 0xb2, 0x41, 0x69, 0xa5, 0xbc, 0xda, 0x7a, 0xd0, 0x5d, 0x57, 0x5c, 0x5b, 0x08, 0xb6, 0x34, - 0x9a, 0xac, 0x42, 0x3f, 0xa0, 0x0e, 0xa3, 0xb6, 0x1f, 0xda, 0x8c, 0xba, 0x51, 0xe8, 0xb1, 0x41, - 0x79, 0xc5, 0x58, 0xad, 0x58, 0x5d, 0x84, 0xef, 0x85, 0x87, 0x12, 0x6a, 0xfe, 0xbb, 0x01, 0x37, - 0x2f, 0xf9, 0x38, 0x8b, 0xa3, 0x90, 0x51, 0xf2, 0x28, 0xc7, 0xef, 0xdd, 0x2b, 0xf9, 0xdd, 0x39, - 0xa3, 0x61, 0xc6, 0xed, 0x5d, 0xa8, 0x49, 0x76, 0x06, 0xa5, 0x15, 0x63, 0x06, 0xb3, 0x0a, 0x4b, - 0x3e, 0x80, 0x2a, 0xaa, 0x02, 0x19, 0x14, 0x64, 0x5a, 0x31, 0x3b, 0xe2, 0xaf, 0x25, 0x91, 0xe4, - 0x1e, 0x2c, 0x04, 0x0e, 0xe3, 0xb6, 0xda, 0x16, 0xb3, 0xcf, 0x9c, 0xc0, 0xf7, 0x06, 0x95, 0x15, - 0x63, 0xb5, 0x61, 0xf5, 0x05, 0xea, 0x19, 0x6e, 0x8c, 0x7d, 0x2a, 0xe0, 0xe6, 0x7f, 0xd6, 0x01, - 0x24, 0x53, 0xfb, 0x94, 0x3b, 0xe4, 0x26, 0x80, 0x1b, 0x4c, 0x18, 0xa7, 0x89, 0xed, 0x7b, 0xb8, - 0x97, 0x8a, 0xd5, 0x54, 0x90, 0x3d, 0x8f, 0x7c, 0x0f, 0x7a, 0x1a, 0x7d, 0x46, 0x13, 0xa6, 0x79, - 0x6e, 0x5a, 0x5d, 0x05, 0xfe, 0x54, 0x42, 0xc5, 0x3a, 0xc3, 0x8c, 0xa6, 0x85, 0x34, 0xcd, 0x61, - 0x8a, 0x1e, 0x40, 0x5d, 0xe3, 0xda, 0x2b, 0xc6, 0x6a, 0xd5, 0xd2, 0x43, 0x62, 0x42, 0x75, 0xe4, - 0x07, 0x94, 0x0d, 0x2a, 0xa8, 0xb8, 0xb6, 0x96, 0xe3, 0x13, 0x3f, 0xa0, 0x96, 0x44, 0x91, 0x1f, - 0x02, 0x88, 0x1f, 0xb6, 0x1f, 0x7a, 0xf4, 0xd5, 0xa0, 0x83, 0xd2, 0xe8, 0x6b, 0x42, 0xb1, 0x0d, - 0x24, 0x6e, 0x0a, 0x9a, 0x3d, 0x41, 0x42, 0x6e, 0x43, 0x87, 0x71, 0x27, 0xe1, 0x29, 0x43, 0x55, - 0xdc, 0x58, 0x1b, 0x81, 0x9a, 0xa7, 0x5b, 0xd0, 0xa2, 0xa1, 0x97, 0x92, 0xd4, 0x90, 0x04, 0x68, - 0xe8, 0x69, 0x82, 0x55, 0xa8, 0x33, 0xf7, 0x84, 0x8e, 0x1d, 0x36, 0xa8, 0x2b, 0xab, 0x52, 0xdf, - 0x3c, 0x44, 0xb0, 0xa5, 0xd1, 0xe4, 0x21, 0xb4, 0xe5, 0x4f, 0xc5, 0x62, 0xf7, 0x12, 0x16, 0x5b, - 0x92, 0x4a, 0x32, 0xb9, 0x04, 0x4d, 0x9f, 0xd9, 0x89, 0xf3, 0xd2, 0x3e, 0x3d, 0x1b, 0x34, 0x50, - 0x5d, 0x75, 0x9f, 0x59, 0xce, 0xcb, 0xa7, 0x67, 0x62, 0xc7, 0x02, 0x91, 0x38, 0xe1, 0x31, 0x65, - 0x83, 0x26, 0x7e, 0x3d, 0x5d, 0xce, 0x72, 0x5e, 0x5a, 0x02, 0x61, 0x35, 0x13, 0xf5, 0x8b, 0x91, - 0xc7, 0xd0, 0x4b, 0x27, 0x28, 0x26, 0x7a, 0x97, 0x30, 0xd1, 0xd1, 0xb3, 0x24, 0x1b, 0x04, 0x2a, - 0x9e, 0x17, 0xb0, 0x01, 0xac, 0x18, 0xab, 0x6d, 0x0b, 0x7f, 0x93, 0x1f, 0x41, 0xcb, 0xf3, 0x02, - 0xb9, 0x0e, 0x65, 0x83, 0xfe, 0x25, 0x2b, 0x81, 0xe7, 0x05, 0x7b, 0x92, 0x46, 0x88, 0x5c, 0xa2, - 0xed, 0x84, 0xb2, 0x49, 0xc0, 0x07, 0xf3, 0x68, 0x03, 0xed, 0xa1, 0xf6, 0x99, 0x49, 0xc0, 0xc9, - 0x87, 0xd0, 0x72, 0x62, 0x3f, 0x15, 0x39, 0x41, 0xd7, 0x59, 0x58, 0xd7, 0xf1, 0x67, 0xe3, 0x60, - 0x4f, 0xc9, 0xde, 0x02, 0x27, 0xf6, 0xb5, 0x1e, 0x1e, 0x42, 0x23, 0x8e, 0x02, 0xdf, 0xf5, 0x29, - 0x1b, 0x2c, 0xa0, 0x28, 0x6e, 0xa4, 0xde, 0x16, 0x38, 0x2e, 0x1d, 0xd3, 0x90, 0x1f, 0x08, 0x82, - 0x73, 0x2b, 0x25, 0x24, 0x1f, 0xc2, 0xf5, 0x90, 0xbe, 0xb4, 0xdd, 0x28, 0x08, 0x1c, 0x11, 0xad, - 0x98, 0x4d, 0x43, 0x67, 0x18, 0x50, 0x6f, 0xb0, 0x88, 0x8c, 0x2d, 0x86, 0xf4, 0xe5, 0x56, 0x8a, - 0xdc, 0x91, 0x38, 0xa5, 0x13, 0xfe, 0x2a, 0x14, 0x3a, 0xb9, 0xa6, 0x75, 0x72, 0xf4, 0x2a, 0x7c, - 0x7a, 0x46, 0xd6, 0xa0, 0xee, 0x0d, 0xed, 0xb1, 0x13, 0xb3, 0xc1, 0x75, 0xe4, 0x62, 0x3e, 0xe5, - 0xc2, 0xe7, 0xc9, 0xf6, 0xe6, 0xbe, 0x13, 0x5b, 0x35, 0x6f, 0xb8, 0xef, 0xc4, 0x8c, 0xdc, 0x85, - 0xca, 0x38, 0xf2, 0xe8, 0xe0, 0x06, 0xee, 0x90, 0x68, 0x42, 0xe5, 0x78, 0x91, 0x47, 0x2d, 0xc4, - 0x93, 0xef, 0x43, 0x4d, 0xe9, 0x78, 0x80, 0x4b, 0x2e, 0x14, 0x29, 0xa5, 0x9a, 0x15, 0x89, 0x30, - 0x58, 0x25, 0x62, 0xe6, 0x7f, 0x4e, 0x07, 0xef, 0x48, 0x83, 0x95, 0xa0, 0x43, 0xff, 0x73, 0xfa, - 0xf3, 0x4a, 0xa3, 0xdc, 0xaf, 0x58, 0x95, 0xd8, 0xe1, 0x27, 0xe6, 0x31, 0xb4, 0x72, 0x6b, 0x90, - 0x77, 0xa1, 0x29, 0x3d, 0xe2, 0x94, 0xca, 0x90, 0xd5, 0xb6, 0x1a, 0x08, 0x78, 0x4a, 0xcf, 0xc9, - 0x0d, 0xa8, 0x0b, 0x4f, 0x10, 0xa8, 0x12, 0xa2, 0x6a, 0x34, 0xf4, 0x04, 0x22, 0x75, 0xce, 0xf2, - 0xa5, 0xce, 0x69, 0xfe, 0x73, 0x09, 0x2a, 0x62, 0x2c, 0x0c, 0x29, 0x74, 0xc6, 0x14, 0x57, 0x6f, - 0x5a, 0xf8, 0x9b, 0x5c, 0x87, 0x1a, 0x3b, 0x71, 0x1e, 0xfc, 0xf8, 0x91, 0x5e, 0x58, 0x8e, 0x8a, - 0xec, 0x94, 0x2f, 0x67, 0xa7, 0x52, 0x60, 0xe7, 0xff, 0xc6, 0xad, 0x97, 0xa0, 0xe1, 0x26, 0xee, - 0xa3, 0x0f, 0x5f, 0x45, 0xc9, 0xa0, 0x8e, 0xd8, 0x74, 0x2c, 0xf8, 0xe2, 0x11, 0x77, 0x02, 0xfb, - 0xf4, 0x8c, 0xa1, 0x4f, 0x56, 0xac, 0x06, 0x02, 0x9e, 0x9e, 0xa1, 0xfc, 0x25, 0x72, 0x78, 0xce, - 0xd1, 0x2b, 0x71, 0x65, 0x04, 0x6d, 0x0a, 0x08, 0xe9, 0x42, 0xc9, 0x1d, 0xa1, 0x23, 0x35, 0xad, - 0x92, 0x3b, 0x12, 0x12, 0x41, 0x4d, 0xb5, 0x90, 0x12, 0x7f, 0x8b, 0x2f, 0xb8, 0x7e, 0x7c, 0x22, - 0xe2, 0xed, 0x19, 0xc6, 0xc2, 0xb6, 0xd5, 0x90, 0x80, 0xbd, 0x33, 0xf3, 0x8b, 0x12, 0x34, 0xb4, - 0x77, 0x91, 0xef, 0x03, 0x88, 0x73, 0xc1, 0x96, 0x1a, 0x30, 0x66, 0x68, 0xa0, 0x39, 0x56, 0xb4, - 0x4c, 0x10, 0x7b, 0x4e, 0x4a, 0x5c, 0x9a, 0x45, 0x2c, 0xf0, 0x92, 0x38, 0x17, 0xd8, 0xca, 0x57, - 0x07, 0xb6, 0x62, 0x1c, 0xaa, 0xbc, 0x49, 0x1c, 0x4a, 0xc3, 0x80, 0x9c, 0x53, 0xbb, 0xdc, 0xae, - 0x75, 0x6c, 0x90, 0x33, 0x75, 0x1c, 0xaa, 0xae, 0x94, 0x75, 0x1c, 0x32, 0xef, 0x40, 0x6f, 0xca, - 0xc3, 0x05, 0x99, 0x1f, 0x8e, 0x22, 0x65, 0xc3, 0xf8, 0xdb, 0x7c, 0x06, 0x70, 0xc8, 0x1d, 0xce, - 0x36, 0x83, 0xc8, 0x3d, 0x15, 0x6a, 0x8a, 0x4f, 0xce, 0x99, 0xef, 0x3a, 0x81, 0x3e, 0xd3, 0xca, - 0x16, 0x68, 0xd0, 0x9e, 0x27, 0xce, 0xaa, 0x5f, 0xb2, 0x28, 0xb4, 0xb9, 0xf0, 0x79, 0x65, 0x98, - 0x4d, 0x01, 0x39, 0x12, 0x00, 0xf3, 0x27, 0xd0, 0xc4, 0xd5, 0x50, 0x09, 0x6b, 0x50, 0x1b, 0x8a, - 0x55, 0xb5, 0x02, 0x52, 0x57, 0xce, 0x3e, 0x68, 0x29, 0x0a, 0xf3, 0x6f, 0x0c, 0xe8, 0xa6, 0x33, - 0xd3, 0xe0, 0xfa, 0xc6, 0x3e, 0xf1, 0x0e, 0x34, 0x84, 0x85, 0xd8, 0x34, 0x74, 0x55, 0x4a, 0x52, - 0x17, 0xe3, 0x9d, 0xd0, 0x4d, 0x51, 0x51, 0xe2, 0xa3, 0x4b, 0x28, 0xd4, 0x8b, 0xc4, 0x2f, 0xda, - 0x53, 0xb5, 0x68, 0x4f, 0x42, 0x14, 0x7e, 0x18, 0xf8, 0x21, 0xb5, 0x85, 0xf2, 0xd1, 0x17, 0xda, - 0x16, 0x48, 0xd0, 0xb6, 0xc3, 0x1d, 0xf3, 0x8f, 0x4b, 0x50, 0x93, 0x3a, 0x17, 0xc6, 0xeb, 0x0d, - 0x95, 0x58, 0x4b, 0xde, 0x90, 0x2c, 0x42, 0x35, 0x2f, 0x20, 0x39, 0x28, 0x38, 0x4f, 0xf9, 0x2a, - 0xe7, 0xa9, 0x5c, 0xed, 0x3c, 0xd5, 0x0b, 0xce, 0xf3, 0xff, 0xa0, 0xcf, 0xfd, 0x51, 0xe0, 0xb0, - 0x13, 0x3b, 0xa1, 0x71, 0xe0, 0xbb, 0x0e, 0x43, 0x86, 0x3b, 0x56, 0x4f, 0xc1, 0x2d, 0x05, 0x16, - 0xac, 0x31, 0x21, 0x67, 0x74, 0xdf, 0xb6, 0x25, 0x07, 0xe4, 0x27, 0xd0, 0xc2, 0x1f, 0xea, 0xf8, - 0x6b, 0xa0, 0xbe, 0xae, 0x17, 0xf4, 0x95, 0x2a, 0xc6, 0x02, 0x24, 0xc5, 0xdf, 0xe6, 0x3e, 0x54, - 0xf7, 0xb6, 0xf7, 0x9d, 0x58, 0xf0, 0x38, 0x89, 0x19, 0x4f, 0xa8, 0x33, 0xce, 0x59, 0x8e, 0x06, - 0xed, 0x79, 0x22, 0x00, 0x79, 0xd1, 0xcb, 0x30, 0x23, 0x29, 0x21, 0x49, 0x3b, 0x03, 0xee, 0x79, - 0xe6, 0x4b, 0x68, 0x8b, 0x03, 0x01, 0x8d, 0x49, 0xac, 0x3a, 0xcb, 0x06, 0x3e, 0x80, 0x9a, 0xef, - 0x89, 0xb3, 0x44, 0xa5, 0x80, 0x1d, 0xcd, 0x26, 0x32, 0x62, 0x55, 0x7d, 0x4f, 0xcc, 0xbc, 0x07, - 0x10, 0x3b, 0x09, 0xf7, 0xf1, 0x88, 0x52, 0xae, 0x3a, 0x45, 0x99, 0x23, 0x30, 0x19, 0x34, 0xd3, - 0x93, 0xe8, 0x7f, 0xf1, 0xd5, 0x1f, 0x40, 0x0d, 0x75, 0xad, 0xbf, 0xb8, 0x98, 0x3f, 0xe6, 0xf4, - 0xae, 0x2c, 0x45, 0x63, 0x1e, 0x40, 0x43, 0xc7, 0x81, 0xef, 0x78, 0xc8, 0xc8, 0xa8, 0x59, 0xd6, - 0x51, 0xd3, 0xdc, 0x86, 0xee, 0x96, 0x4a, 0x40, 0xb7, 0x31, 0xd3, 0x15, 0xd9, 0xa3, 0x3b, 0x49, - 0x12, 0x1a, 0x72, 0x95, 0xa1, 0xea, 0xa1, 0xc0, 0x24, 0xb2, 0x16, 0xc0, 0x45, 0x2b, 0x96, 0x1e, - 0x9a, 0xff, 0x6a, 0x40, 0x55, 0xce, 0xee, 0x43, 0x79, 0xcc, 0x8e, 0x95, 0x20, 0xc4, 0x4f, 0xb2, - 0x09, 0xfd, 0x2c, 0xe9, 0xb5, 0xf3, 0x39, 0x76, 0x6a, 0x2e, 0x45, 0x0e, 0x76, 0xe7, 0xd2, 0x84, - 0x77, 0xcf, 0x93, 0xab, 0xae, 0x43, 0xe3, 0xf4, 0x4c, 0xcd, 0xad, 0xe0, 0xdc, 0xf9, 0x34, 0x8f, - 0x79, 0x4a, 0xcf, 0xf5, 0xb4, 0xfa, 0xe9, 0x99, 0xa4, 0x7f, 0x08, 0x6d, 0x99, 0xd6, 0xab, 0x39, - 0xd5, 0x59, 0x39, 0xfd, 0xee, 0x9c, 0xd5, 0x92, 0x54, 0x38, 0xdc, 0x6c, 0x40, 0xcd, 0xa3, 0xdc, - 0xf1, 0x03, 0xf3, 0x6f, 0x0d, 0x58, 0x3e, 0x44, 0x0b, 0x93, 0x11, 0xf4, 0xc8, 0x61, 0xa7, 0x87, - 0xd4, 0x9d, 0x24, 0x3e, 0x3f, 0xdf, 0x8a, 0xc2, 0x91, 0x2f, 0x76, 0x45, 0xe2, 0xc0, 0xf1, 0x43, - 0x4e, 0x5f, 0x71, 0xf4, 0xf7, 0x54, 0x0d, 0xb9, 0xb0, 0xb5, 0x25, 0x43, 0x43, 0x38, 0x8a, 0x76, - 0xe7, 0xac, 0x7e, 0x4a, 0x2f, 0x82, 0x81, 0xd0, 0xc5, 0x0e, 0xcc, 0x8f, 0x1d, 0x14, 0xcc, 0x29, - 0x3d, 0xb7, 0x5d, 0x5c, 0x58, 0x19, 0x4b, 0x9a, 0x73, 0xed, 0x23, 0xc1, 0x53, 0xaa, 0xbe, 0xbb, - 0x3b, 0x67, 0xf5, 0xc6, 0x45, 0xd0, 0x66, 0x1b, 0x20, 0xab, 0x13, 0xcd, 0x00, 0x20, 0xfb, 0x2c, - 0xf9, 0x19, 0xb4, 0x54, 0xc0, 0xe2, 0xe7, 0x31, 0x55, 0xe5, 0xd3, 0xf2, 0x7a, 0xa1, 0xae, 0xdc, - 0x49, 0x07, 0xfb, 0x94, 0x9f, 0x44, 0x9e, 0x05, 0x72, 0x8a, 0x28, 0xa1, 0xb0, 0x64, 0x91, 0x0b, - 0x64, 0xb6, 0xa4, 0x62, 0xe0, 0x53, 0x7a, 0x6e, 0xfe, 0x99, 0x01, 0xbd, 0x29, 0x16, 0xc9, 0xc7, - 0xd0, 0xcb, 0xd6, 0x7f, 0x9b, 0xef, 0x76, 0x33, 0x34, 0x7e, 0xfb, 0x31, 0xb4, 0x32, 0xf9, 0xe8, - 0x73, 0xf6, 0x46, 0x71, 0x91, 0xf4, 0xe3, 0x16, 0xa4, 0x72, 0x61, 0xe6, 0x17, 0x35, 0xe8, 0x14, - 0xcb, 0xdd, 0xd7, 0x94, 0x5e, 0x05, 0x67, 0x2a, 0x5d, 0xee, 0x4c, 0xe5, 0xab, 0x53, 0xa4, 0xca, - 0xeb, 0x53, 0xa4, 0xea, 0x85, 0x14, 0xe9, 0xa6, 0x38, 0xf6, 0x39, 0xb5, 0x03, 0x7f, 0xec, 0x73, - 0x95, 0x24, 0x35, 0x05, 0xe4, 0x99, 0x00, 0x90, 0x15, 0x68, 0xb9, 0x51, 0x28, 0x7d, 0xd0, 0x3d, - 0xc7, 0x3c, 0xa9, 0x63, 0xe5, 0x41, 0xe4, 0x67, 0xd0, 0x63, 0x3c, 0x4a, 0x9c, 0x63, 0x6a, 0x0b, - 0xab, 0xa1, 0xa1, 0x87, 0xe9, 0x52, 0x21, 0x1e, 0x23, 0x7a, 0x53, 0x62, 0xad, 0x2e, 0x2b, 0x8c, - 0x8b, 0xc5, 0x11, 0x14, 0x8b, 0x23, 0x19, 0x30, 0x5a, 0x69, 0x9a, 0x25, 0xdc, 0x39, 0x1a, 0xc7, - 0x09, 0x65, 0x2c, 0x55, 0x6f, 0x1b, 0xd5, 0x9b, 0xda, 0xec, 0x56, 0x86, 0xc7, 0x32, 0xbc, 0xe7, - 0x16, 0x01, 0xe4, 0xfb, 0x30, 0x9f, 0x5f, 0x23, 0xa0, 0x67, 0x34, 0xc0, 0x4a, 0xb3, 0x6a, 0xe5, - 0x17, 0x7f, 0x26, 0xe0, 0xe4, 0x61, 0x6a, 0xc2, 0x98, 0x8a, 0x74, 0x2f, 0x73, 0x31, 0x6d, 0xb6, - 0x68, 0xf7, 0x1f, 0x41, 0xcf, 0x63, 0xdc, 0xce, 0xd7, 0x3f, 0xbd, 0xcb, 0xeb, 0x9f, 0x8e, 0xc7, - 0xf8, 0x46, 0x56, 0x02, 0xdd, 0x07, 0x60, 0x93, 0xa1, 0xce, 0xa9, 0xfa, 0xaa, 0xfc, 0xc8, 0xc5, - 0x1b, 0x95, 0x88, 0xb1, 0xc9, 0x50, 0xa5, 0x53, 0xef, 0x8b, 0x78, 0x83, 0xe7, 0xa5, 0x9d, 0x50, - 0xc7, 0xc3, 0x72, 0xac, 0x21, 0xa2, 0x0b, 0xc2, 0x2c, 0xea, 0x78, 0x69, 0x91, 0x42, 0x5e, 0x53, - 0xa4, 0xbc, 0x0b, 0xcd, 0x49, 0xe8, 0xff, 0x6a, 0x42, 0x85, 0x9d, 0x2e, 0xa0, 0xd8, 0x1b, 0x12, - 0xb0, 0xe7, 0x89, 0xaa, 0xc8, 0x8d, 0x30, 0x86, 0x60, 0x61, 0x25, 0xd2, 0x43, 0xcd, 0xd6, 0x96, - 0x84, 0x5b, 0x9a, 0xe0, 0xe7, 0x95, 0x46, 0xad, 0x5f, 0x57, 0xf5, 0xc9, 0x7f, 0x95, 0x60, 0x71, - 0x3a, 0xa0, 0xa1, 0x9c, 0xee, 0x43, 0x5d, 0xd9, 0x82, 0x8a, 0x5d, 0x97, 0x99, 0x8c, 0x26, 0xc3, - 0xec, 0x08, 0x6d, 0x9e, 0x33, 0x7d, 0x0a, 0xe0, 0xf8, 0x88, 0x91, 0x6b, 0x20, 0x1c, 0x43, 0x20, - 0x64, 0xb2, 0x52, 0xa5, 0xa1, 0x77, 0xc4, 0xd2, 0xc3, 0xb1, 0x92, 0x3b, 0x1c, 0xdf, 0x87, 0x36, - 0x1e, 0x69, 0x22, 0x85, 0xe6, 0x34, 0xc1, 0x3c, 0xb4, 0x69, 0xb5, 0x10, 0xf6, 0x04, 0x41, 0x33, - 0x0d, 0xad, 0xf6, 0x96, 0x86, 0xf6, 0x02, 0x7a, 0x4c, 0xc5, 0x6d, 0x1d, 0x5f, 0xeb, 0xb8, 0xcd, - 0xbb, 0xd9, 0x36, 0xaf, 0x0a, 0xf3, 0x56, 0x97, 0x4d, 0x8d, 0xb1, 0xfb, 0x33, 0x89, 0x3d, 0xe1, - 0xb0, 0x9c, 0xe9, 0x6a, 0xd1, 0xaa, 0x89, 0x0c, 0x67, 0xc2, 0xcc, 0xaf, 0x4a, 0x22, 0x2b, 0x2d, - 0x38, 0x97, 0x09, 0x95, 0x30, 0x8a, 0x62, 0x25, 0xdf, 0xb4, 0x4c, 0x78, 0x1e, 0x45, 0xf1, 0xee, - 0x9c, 0x85, 0x38, 0x72, 0x07, 0xaa, 0x41, 0xe4, 0x3a, 0xc1, 0x74, 0xaa, 0xf0, 0x4c, 0x00, 0x77, - 0xe7, 0x2c, 0x89, 0x25, 0xef, 0x41, 0x89, 0x3d, 0x54, 0x87, 0x27, 0xa4, 0x3b, 0x78, 0xb8, 0x3b, - 0x67, 0x95, 0xd8, 0x43, 0x72, 0x0b, 0xca, 0xc7, 0x2e, 0x53, 0xe7, 0x63, 0x4b, 0xa3, 0x3f, 0xde, - 0x3a, 0xdc, 0x9d, 0xb3, 0x04, 0x86, 0x7c, 0x04, 0x1d, 0x37, 0x88, 0x26, 0x9e, 0xed, 0x9d, 0x87, - 0xce, 0xd8, 0x77, 0xd5, 0xb1, 0xb8, 0x98, 0x1d, 0xc3, 0xd1, 0xc4, 0xdb, 0x96, 0xb8, 0xdd, 0x39, - 0xab, 0xed, 0xe6, 0xc6, 0x62, 0x1b, 0x27, 0xde, 0x48, 0x66, 0x89, 0xb9, 0x6d, 0xec, 0x6e, 0x3f, - 0x11, 0xeb, 0x23, 0x8e, 0xec, 0x02, 0x71, 0x3e, 0x9f, 0x24, 0xd4, 0x1e, 0x06, 0xd1, 0xd0, 0xd6, - 0x86, 0x25, 0x25, 0x3e, 0xd0, 0x33, 0x36, 0x04, 0xc5, 0x66, 0x10, 0x0d, 0x95, 0x9c, 0xc4, 0xd1, - 0xe8, 0x4c, 0xc1, 0x36, 0x9b, 0x50, 0x57, 0xa1, 0xcc, 0xac, 0x41, 0x45, 0xc8, 0xca, 0x7c, 0x17, - 0xaa, 0x28, 0x0e, 0x61, 0x4f, 0xc2, 0xa8, 0x75, 0xb2, 0x85, 0x06, 0xfe, 0xa7, 0x15, 0x28, 0x1d, - 0x3e, 0x14, 0x09, 0x33, 0x0d, 0xbd, 0x38, 0xf2, 0x55, 0xf2, 0xd2, 0xb4, 0xd2, 0xb1, 0xa8, 0x04, - 0x72, 0x8d, 0xc0, 0x66, 0xda, 0xf8, 0xbb, 0x0e, 0xb5, 0xe1, 0xc4, 0x3d, 0xa5, 0x5c, 0x65, 0x45, - 0x6a, 0x24, 0xe0, 0x71, 0x42, 0x47, 0xfe, 0x2b, 0x65, 0xb8, 0x6a, 0x24, 0x83, 0xbe, 0x8c, 0xb6, - 0x6e, 0xe0, 0x30, 0x99, 0x5d, 0x37, 0x45, 0xd0, 0x47, 0xe0, 0x96, 0x80, 0x89, 0x34, 0x88, 0x31, - 0x69, 0xaf, 0x4d, 0x4b, 0xfc, 0x14, 0x10, 0xc7, 0x0d, 0x50, 0x18, 0x4d, 0x4b, 0xfc, 0x14, 0x71, - 0xdf, 0x71, 0x5d, 0xca, 0x18, 0x9e, 0x2c, 0x0d, 0xd9, 0xc5, 0x93, 0x10, 0x71, 0xb8, 0xac, 0xc1, - 0x3c, 0xa3, 0x6e, 0x42, 0xb9, 0x9d, 0xa3, 0x6a, 0x22, 0x55, 0x4f, 0x22, 0x36, 0x52, 0xda, 0x55, - 0xe8, 0x8f, 0xa2, 0xc4, 0xa5, 0xb6, 0x10, 0x86, 0xcd, 0xf8, 0x79, 0x40, 0x55, 0x1c, 0xef, 0x22, - 0xfc, 0xc0, 0xe1, 0x27, 0x87, 0x02, 0x4a, 0x6e, 0x43, 0x97, 0x31, 0x6a, 0x9f, 0x8e, 0x71, 0x3d, - 0x11, 0x63, 0x64, 0x68, 0x6f, 0x31, 0x46, 0x9f, 0x8e, 0xc5, 0x62, 0x7b, 0x9e, 0xf0, 0xf1, 0x24, - 0x0a, 0xa8, 0xed, 0x24, 0xb2, 0x83, 0xd8, 0xb4, 0xea, 0x62, 0xbc, 0x91, 0xc8, 0xd3, 0xec, 0x15, - 0xa7, 0x49, 0x28, 0xeb, 0xbd, 0x0e, 0x62, 0x41, 0x83, 0xf6, 0x3c, 0xb2, 0x0e, 0x0b, 0xd1, 0xf0, - 0x97, 0xd4, 0xe5, 0xb6, 0xa8, 0xd3, 0xd2, 0x3e, 0x50, 0x17, 0xb9, 0x99, 0x97, 0xa8, 0x67, 0x91, - 0x7b, 0xaa, 0x9b, 0x40, 0x42, 0x9c, 0xda, 0xc5, 0xa3, 0x53, 0x2a, 0xe3, 0xb4, 0x10, 0xa7, 0x72, - 0x63, 0x01, 0x13, 0x7a, 0x8d, 0x93, 0xe8, 0xcc, 0xf7, 0x68, 0x82, 0xfd, 0xb1, 0xa6, 0x95, 0x8e, - 0x45, 0x56, 0x1a, 0x27, 0x91, 0x28, 0xc5, 0x55, 0x17, 0x4c, 0x0f, 0xcd, 0xdf, 0x18, 0x50, 0xfe, - 0x78, 0xeb, 0xf0, 0x75, 0x56, 0xa1, 0xb4, 0x5f, 0xba, 0x44, 0xfb, 0xe5, 0xab, 0xb5, 0x5f, 0x99, - 0xa1, 0xfd, 0x3b, 0xd0, 0x8d, 0x13, 0xea, 0xd1, 0x91, 0x1f, 0x52, 0xcf, 0x16, 0x6a, 0x97, 0x36, - 0xd2, 0xc9, 0xa0, 0x1b, 0x6e, 0x20, 0x8a, 0x30, 0x57, 0x00, 0x42, 0xee, 0x3b, 0x01, 0x43, 0xa7, - 0x51, 0x16, 0xd3, 0xcb, 0xc1, 0x85, 0x5b, 0x98, 0x63, 0xe8, 0xa3, 0xdf, 0x6c, 0x4d, 0x18, 0x8f, - 0xc6, 0x98, 0xe5, 0x88, 0xaf, 0xe4, 0xf2, 0x2c, 0x9d, 0x7e, 0x36, 0xad, 0x4e, 0x06, 0x15, 0x64, - 0x0f, 0xe0, 0x5a, 0x91, 0xcc, 0xce, 0x15, 0xc4, 0x4d, 0x6b, 0xa1, 0x40, 0x7d, 0x88, 0x28, 0x11, - 0xc6, 0xfa, 0xd3, 0x7e, 0xfa, 0xdb, 0x17, 0xe3, 0xfb, 0xd0, 0x76, 0x5c, 0x37, 0x9a, 0x84, 0xdc, - 0xc6, 0x03, 0x44, 0x0a, 0xb1, 0xa5, 0x60, 0xcf, 0xc5, 0x39, 0x72, 0x13, 0x80, 0x9d, 0x38, 0x09, - 0x95, 0xd9, 0x99, 0x14, 0x5e, 0x53, 0x42, 0xc4, 0xde, 0x33, 0x17, 0x63, 0xfe, 0x71, 0xd1, 0xc5, - 0x0e, 0xfd, 0x63, 0xa1, 0x80, 0x9c, 0x68, 0x98, 0x1b, 0xc5, 0x54, 0x7b, 0x58, 0x06, 0x3f, 0x14, - 0x60, 0xf2, 0xb3, 0x0b, 0xc2, 0x86, 0x19, 0x61, 0x2d, 0xa7, 0x9e, 0x29, 0x35, 0x98, 0x7f, 0x62, - 0x40, 0x6d, 0x53, 0x0a, 0xe5, 0xcd, 0xa2, 0x54, 0xf9, 0x92, 0x28, 0x55, 0xb9, 0x44, 0xc0, 0xd5, - 0xab, 0x05, 0x5c, 0xbb, 0x28, 0x60, 0x51, 0xb6, 0xb5, 0xf3, 0x41, 0x9f, 0xdc, 0x4d, 0xbf, 0x62, - 0xa8, 0x8a, 0x49, 0xa7, 0x29, 0x08, 0x4d, 0xbf, 0x7a, 0x1b, 0x3a, 0xda, 0xff, 0xa4, 0x6a, 0xa4, - 0xd6, 0xdb, 0x1a, 0x88, 0xba, 0xf9, 0x31, 0x54, 0x1d, 0xce, 0x13, 0x5d, 0xd9, 0xde, 0x9a, 0x75, - 0xcc, 0xac, 0x6f, 0x08, 0x8a, 0x9d, 0x90, 0x27, 0xe7, 0x96, 0xa4, 0x5e, 0x7a, 0x0c, 0x90, 0x01, - 0x45, 0xd8, 0xcc, 0x2c, 0x5b, 0xfc, 0x24, 0x8b, 0x50, 0x3d, 0x73, 0x82, 0x89, 0xfe, 0xa6, 0x1c, - 0xfc, 0x4e, 0xe9, 0xb1, 0x61, 0x2e, 0x43, 0x45, 0x1c, 0x47, 0x52, 0x86, 0xe3, 0x88, 0xeb, 0x7a, - 0x5c, 0x8d, 0xcc, 0x7f, 0x34, 0xa0, 0x3b, 0x75, 0xab, 0x74, 0x5b, 0xdf, 0xfa, 0x18, 0xc5, 0x83, - 0xb7, 0x70, 0xe9, 0xf3, 0xdd, 0x8a, 0x83, 0x37, 0xb9, 0x6b, 0x99, 0x6a, 0xd1, 0x57, 0xdf, 0xa8, - 0x45, 0x6f, 0xde, 0x13, 0x35, 0x3b, 0x75, 0xc2, 0xac, 0xba, 0x29, 0x24, 0x8d, 0x46, 0x31, 0x69, - 0x34, 0x0f, 0xa0, 0x97, 0x92, 0xbf, 0xcd, 0xb6, 0x07, 0x50, 0x67, 0x13, 0xf4, 0x15, 0xdc, 0x74, - 0xc3, 0xd2, 0x43, 0xf3, 0x31, 0x74, 0xd5, 0xcd, 0x9b, 0x66, 0xe0, 0x2e, 0xf4, 0x98, 0x73, 0x46, - 0x6d, 0x1e, 0xd9, 0xf9, 0x7c, 0xb2, 0x61, 0x75, 0x04, 0xf8, 0x28, 0x52, 0x31, 0xc4, 0xfc, 0x6b, - 0x03, 0x7a, 0xe9, 0xd4, 0xb7, 0xd4, 0x41, 0xb6, 0xc3, 0xd2, 0x54, 0x5a, 0xfc, 0x03, 0x20, 0x6e, - 0x14, 0x04, 0xe2, 0xd0, 0xc1, 0xab, 0x2b, 0x8c, 0x0f, 0x2a, 0x09, 0xed, 0x2b, 0x8c, 0x10, 0xfb, - 0x96, 0x80, 0x8b, 0x83, 0xb5, 0x40, 0x8d, 0x5d, 0x63, 0x59, 0xb9, 0xf5, 0x72, 0xc4, 0x87, 0xfe, - 0xe7, 0xd4, 0x5c, 0x80, 0xf9, 0xad, 0x13, 0xea, 0x9e, 0x6e, 0x78, 0x63, 0x3f, 0x54, 0x9b, 0x35, - 0xbf, 0x30, 0x80, 0xe4, 0xa1, 0x6f, 0xb3, 0x8f, 0x37, 0xbd, 0x8e, 0x5c, 0x83, 0xf9, 0x13, 0x87, - 0xd9, 0x31, 0x0d, 0x3d, 0x3f, 0x3c, 0xb6, 0x1d, 0xf1, 0x25, 0xdc, 0x51, 0xc3, 0xea, 0x9d, 0x38, - 0xec, 0x40, 0xc2, 0x91, 0x01, 0xf3, 0x5f, 0x0c, 0xb8, 0xb9, 0xa3, 0x4e, 0x60, 0x25, 0x68, 0x8b, - 0x0a, 0x35, 0xa4, 0xea, 0x99, 0x51, 0x21, 0x1a, 0x6f, 0x55, 0x21, 0xde, 0x82, 0x96, 0x3a, 0xd5, - 0x73, 0xee, 0x0e, 0x12, 0xf4, 0x5c, 0x25, 0xf4, 0x89, 0xfc, 0xa6, 0xa4, 0x90, 0xd1, 0xab, 0xa5, - 0x60, 0x48, 0x72, 0x07, 0xba, 0x58, 0x9b, 0x84, 0xdc, 0x0e, 0x68, 0x78, 0xcc, 0x4f, 0x94, 0xd0, - 0x3b, 0x0a, 0xfa, 0x0c, 0x81, 0xe6, 0x0a, 0x2c, 0x5f, 0xb6, 0x19, 0x29, 0x68, 0xf3, 0x2f, 0x0c, - 0x58, 0x9a, 0x22, 0x39, 0x74, 0xce, 0x7e, 0x8b, 0x9b, 0xbd, 0xb8, 0x93, 0xf2, 0xac, 0x9d, 0xdc, - 0x84, 0x77, 0x67, 0xb2, 0xa9, 0xb6, 0xf1, 0x6b, 0x75, 0xff, 0xe0, 0x39, 0xdc, 0x21, 0x6b, 0x3a, - 0x5a, 0x18, 0xc5, 0x36, 0xe0, 0xb6, 0xba, 0x47, 0xc0, 0x0a, 0x57, 0x45, 0x8d, 0x47, 0xd0, 0x42, - 0xc3, 0x3d, 0x4e, 0xa2, 0x49, 0xac, 0x9b, 0xfe, 0xd7, 0xa6, 0x67, 0x7c, 0x2c, 0xb0, 0x16, 0xde, - 0xe5, 0xe2, 0x4f, 0x26, 0x4b, 0x37, 0xa1, 0xa1, 0xb4, 0x97, 0x8a, 0x55, 0x9d, 0xf0, 0xa0, 0x5b, - 0x20, 0x54, 0x15, 0x05, 0x67, 0x34, 0x57, 0xbf, 0x81, 0x06, 0xc9, 0xda, 0x6e, 0xec, 0xbc, 0x12, - 0x38, 0xa9, 0xb4, 0xea, 0xd8, 0x79, 0xa5, 0xc0, 0x7e, 0x28, 0xc0, 0x55, 0x05, 0xf6, 0xc3, 0x23, - 0xc1, 0x21, 0x3e, 0x64, 0x48, 0x03, 0x5b, 0x5d, 0x05, 0xb6, 0xdc, 0x9d, 0xa6, 0x0e, 0x6c, 0xad, - 0x71, 0x36, 0x30, 0xff, 0xcd, 0x80, 0x4e, 0x81, 0xff, 0x59, 0xc9, 0x3e, 0xf9, 0x29, 0xf4, 0xb2, - 0xeb, 0x17, 0xd9, 0x15, 0x28, 0x5d, 0x21, 0xb5, 0x4e, 0x7a, 0x17, 0x83, 0x25, 0x6f, 0xc6, 0x72, - 0x39, 0xcf, 0xf2, 0x25, 0x1b, 0xbc, 0x0b, 0x3d, 0x41, 0x9d, 0x17, 0x8e, 0xdc, 0x69, 0x47, 0xba, - 0xbe, 0x96, 0xcf, 0x75, 0xa8, 0x29, 0x53, 0x90, 0x77, 0x60, 0x6a, 0x64, 0xfe, 0x53, 0x0d, 0xda, - 0x79, 0x6e, 0x72, 0x17, 0x12, 0x46, 0xe1, 0x42, 0x42, 0x6f, 0xb4, 0x94, 0xdb, 0xe8, 0x1a, 0xcc, - 0x87, 0x93, 0xf1, 0x90, 0x26, 0x76, 0x34, 0xb2, 0x69, 0xc8, 0x13, 0x9f, 0x4a, 0xae, 0xcb, 0x56, - 0x4f, 0x22, 0x5e, 0x8c, 0x76, 0x24, 0x38, 0xb7, 0xad, 0xca, 0xec, 0x6d, 0x55, 0xf3, 0xdb, 0x9a, - 0xd2, 0x77, 0xed, 0x82, 0xbe, 0xdf, 0x85, 0xa6, 0xea, 0xa0, 0xfa, 0x1e, 0xaa, 0xaf, 0x6c, 0x35, - 0x24, 0x60, 0xba, 0x5b, 0xd6, 0xb8, 0xfc, 0x40, 0x6c, 0xce, 0x68, 0x3d, 0x67, 0x17, 0x76, 0x1f, - 0x40, 0x05, 0x8b, 0xfa, 0x16, 0x1a, 0x47, 0x3f, 0x7f, 0x3e, 0x62, 0x35, 0x8f, 0x58, 0xb1, 0x9c, - 0xcf, 0x6c, 0x61, 0x24, 0x58, 0x8a, 0x34, 0xac, 0x9a, 0xcf, 0xf0, 0x31, 0xc5, 0x3b, 0xd0, 0x90, - 0x2d, 0x04, 0x55, 0x86, 0x94, 0xad, 0x3a, 0x8e, 0xf7, 0xbc, 0x9c, 0x32, 0xba, 0x79, 0x65, 0x90, - 0xff, 0x0f, 0x4b, 0x42, 0x46, 0x43, 0x7a, 0x8c, 0x92, 0xb2, 0xfd, 0xd0, 0xf6, 0xe8, 0xc8, 0x99, - 0x04, 0xdc, 0x76, 0x47, 0x58, 0x78, 0x54, 0xac, 0x6b, 0x63, 0x3f, 0xdc, 0x14, 0x04, 0x47, 0x6c, - 0x2f, 0xdc, 0x96, 0xd8, 0xad, 0x11, 0xc6, 0x37, 0xbc, 0xee, 0x8f, 0x46, 0x23, 0x46, 0x39, 0x56, - 0x21, 0x15, 0xab, 0x85, 0xb0, 0x17, 0x08, 0xca, 0x48, 0xd4, 0xb7, 0xe7, 0x73, 0x24, 0x32, 0x22, - 0xcc, 0xec, 0x69, 0x90, 0xb7, 0xec, 0x69, 0xe4, 0x2f, 0x85, 0x16, 0xa6, 0x2e, 0x85, 0x56, 0xa1, - 0xaf, 0xb4, 0x96, 0xe9, 0x67, 0x11, 0x95, 0xd0, 0x95, 0xf0, 0x43, 0xad, 0xa5, 0x0f, 0xa0, 0xab, - 0x3b, 0xe4, 0x4a, 0x59, 0xd7, 0x90, 0x4e, 0xf5, 0xcd, 0x77, 0xa4, 0xca, 0x1e, 0x65, 0x7d, 0xf4, - 0x38, 0x72, 0x4f, 0xd4, 0x55, 0xfc, 0x42, 0xf1, 0xcc, 0xda, 0x11, 0xa8, 0xb4, 0x95, 0x2e, 0x06, - 0xc4, 0x82, 0x45, 0x8c, 0x50, 0xb9, 0x94, 0x19, 0xdd, 0xf4, 0x06, 0xc6, 0xe1, 0x95, 0x62, 0x0b, - 0x57, 0x28, 0x3c, 0xeb, 0x05, 0xa3, 0xcb, 0x92, 0xd1, 0x05, 0x98, 0xf9, 0xa5, 0x01, 0xf3, 0xf9, - 0x6e, 0xcd, 0x8e, 0xce, 0x0b, 0x4e, 0x9c, 0x38, 0xa6, 0xa1, 0xed, 0xe8, 0xfb, 0x8a, 0x86, 0x04, - 0x6c, 0x60, 0xd3, 0x17, 0x4f, 0x5d, 0xdb, 0x8d, 0x3c, 0x1d, 0xc7, 0x9b, 0x08, 0xd9, 0x8a, 0x3c, - 0x71, 0x60, 0xcb, 0xd7, 0x57, 0xf6, 0x98, 0x32, 0x26, 0x52, 0x16, 0x79, 0x68, 0xb5, 0x11, 0xb8, - 0x2f, 0x61, 0x85, 0xa0, 0xa9, 0x6f, 0x03, 0x65, 0xd0, 0x34, 0x1f, 0x41, 0xe5, 0x30, 0x76, 0x30, - 0x37, 0x57, 0x56, 0x21, 0x19, 0x50, 0xa3, 0x9c, 0x19, 0x96, 0x0a, 0x31, 0x61, 0x07, 0x5a, 0x62, - 0x1e, 0x7b, 0x31, 0xd2, 0x57, 0xf9, 0x17, 0x42, 0x9c, 0x09, 0x55, 0x26, 0x48, 0xa6, 0x2f, 0x97, - 0xc5, 0x3c, 0x4b, 0xa2, 0xcc, 0x2f, 0xcb, 0x30, 0x78, 0x16, 0x1d, 0x63, 0xae, 0x32, 0x19, 0x0a, - 0x33, 0x71, 0x5c, 0xd5, 0x4d, 0x77, 0xd2, 0xdb, 0x70, 0xa3, 0x78, 0x1b, 0x9e, 0xf9, 0xb4, 0x64, - 0x29, 0xf3, 0xe9, 0xa9, 0x8b, 0x21, 0xb2, 0x02, 0x6d, 0x3f, 0x8c, 0x27, 0xdc, 0x2e, 0x44, 0x45, - 0x40, 0xd8, 0x3e, 0xc6, 0x90, 0x8c, 0x22, 0x7f, 0x02, 0x28, 0x0a, 0x0c, 0x3e, 0x77, 0xa1, 0xa7, - 0xd8, 0xb2, 0x47, 0x49, 0x34, 0xce, 0x22, 0x4d, 0x47, 0x81, 0x9f, 0x24, 0xd1, 0xf8, 0x08, 0xdf, - 0x89, 0x69, 0xba, 0x49, 0xc8, 0xfd, 0xc0, 0x56, 0xb7, 0x8d, 0x15, 0xab, 0xab, 0xe0, 0x9f, 0x08, - 0xf0, 0x11, 0x13, 0xd1, 0x40, 0x7c, 0x2d, 0x8b, 0x3b, 0x22, 0xe8, 0xa9, 0xa8, 0x23, 0x18, 0xcd, - 0x45, 0x9d, 0xb1, 0xf3, 0x4a, 0x20, 0x56, 0xf0, 0xdd, 0x18, 0x5c, 0x12, 0x63, 0x4a, 0xfc, 0xbc, - 0x10, 0x48, 0x5a, 0xc5, 0x40, 0x72, 0x0f, 0xea, 0x2c, 0x9a, 0x24, 0x2e, 0x65, 0x83, 0x76, 0xf1, - 0x6a, 0x3d, 0xa7, 0x40, 0x4b, 0xd3, 0x98, 0x7f, 0x67, 0xc0, 0xe2, 0x2c, 0x8d, 0x90, 0x0f, 0xa1, - 0x82, 0x11, 0xcc, 0x50, 0xf6, 0x9f, 0xb6, 0xf7, 0x66, 0x6b, 0xcf, 0x42, 0x6a, 0x72, 0x0f, 0x5a, - 0x8c, 0x71, 0x3b, 0x9a, 0xf0, 0x78, 0xc2, 0x67, 0xbf, 0x33, 0x00, 0xc6, 0xf8, 0x0b, 0x89, 0x27, - 0x9b, 0x30, 0xaf, 0xd4, 0x8b, 0x67, 0xef, 0x89, 0x1f, 0x72, 0x5d, 0x7b, 0xa5, 0x99, 0x8f, 0xf4, - 0x58, 0xf1, 0x8d, 0x5d, 0x3f, 0xe4, 0x56, 0x2f, 0x29, 0x8c, 0x99, 0xf9, 0x47, 0xd0, 0x2d, 0x92, - 0x7c, 0xc7, 0x6b, 0xc6, 0xe9, 0xc0, 0x21, 0x7b, 0x96, 0xaf, 0x0d, 0x1c, 0xe6, 0x1f, 0xc0, 0xb5, - 0x59, 0x42, 0x61, 0x64, 0x1b, 0xba, 0xac, 0x00, 0x51, 0x89, 0xd2, 0x7b, 0x57, 0xc9, 0xd2, 0x9a, - 0x9a, 0x63, 0x7e, 0x59, 0x82, 0x79, 0x45, 0xb8, 0x95, 0x69, 0x07, 0xcb, 0x07, 0x3d, 0x4a, 0x2d, - 0xd5, 0xd0, 0xe5, 0x83, 0xc6, 0x28, 0x63, 0x5d, 0x87, 0x85, 0x1c, 0x75, 0x6a, 0xaf, 0xd2, 0x9f, - 0xe6, 0x33, 0x94, 0x36, 0x59, 0xdd, 0xfe, 0x2e, 0xe7, 0xda, 0xdf, 0x22, 0x86, 0x47, 0xe3, 0x31, - 0x0d, 0xb9, 0xee, 0x7c, 0xa4, 0x63, 0xf2, 0x1e, 0x34, 0x9d, 0x84, 0xfb, 0x23, 0xc7, 0xe5, 0xba, - 0xb7, 0x98, 0x01, 0x44, 0xea, 0x99, 0x0e, 0xec, 0x13, 0x87, 0xe9, 0x7c, 0xa3, 0x93, 0x42, 0x77, - 0x1d, 0x76, 0x42, 0xbe, 0x07, 0xbd, 0x63, 0x1a, 0xd2, 0xc4, 0xe1, 0xd4, 0x53, 0xcf, 0x54, 0x64, - 0xe7, 0xb1, 0x9b, 0x82, 0x31, 0x23, 0x32, 0xff, 0xc1, 0x90, 0x49, 0xe8, 0x8e, 0xe7, 0xf3, 0x99, - 0x91, 0xe8, 0x01, 0x5c, 0xf3, 0x68, 0x40, 0x39, 0xb5, 0xd3, 0x77, 0x1e, 0xd9, 0xb3, 0x97, 0xa6, - 0xb5, 0x20, 0x91, 0x07, 0x0a, 0x27, 0x9f, 0xbc, 0x3c, 0x85, 0x45, 0x35, 0x27, 0x88, 0x8e, 0x73, - 0x53, 0xa4, 0x31, 0xbe, 0x93, 0x66, 0x69, 0x48, 0x93, 0xf7, 0x24, 0x22, 0xa7, 0x3d, 0x93, 0xb3, - 0xe4, 0x62, 0xb7, 0xa1, 0xe3, 0x51, 0xc6, 0x93, 0x89, 0xcb, 0x6d, 0x46, 0x83, 0x91, 0x7a, 0x6c, - 0xd9, 0xd6, 0xc0, 0x43, 0x1a, 0x8c, 0xcc, 0x3f, 0x84, 0xbe, 0x45, 0x5f, 0x26, 0x3e, 0xe7, 0x54, - 0x3e, 0x2c, 0xd9, 0xdb, 0x26, 0xf7, 0x61, 0x31, 0x7d, 0x60, 0x10, 0x8d, 0x6c, 0xfd, 0x5b, 0xbd, - 0x34, 0x20, 0x7a, 0xfc, 0x62, 0xf4, 0x89, 0xfa, 0x25, 0xd4, 0x92, 0x52, 0xc9, 0x04, 0x39, 0x1d, - 0x9b, 0x7f, 0x6f, 0x40, 0x6f, 0xe7, 0x15, 0x4f, 0x9c, 0x27, 0x93, 0x20, 0x90, 0x27, 0x10, 0xd9, - 0x12, 0xc7, 0xad, 0xfa, 0xaa, 0xad, 0xae, 0xf1, 0xa5, 0x59, 0x0e, 0x32, 0x87, 0x2b, 0x72, 0x25, - 0x5c, 0x2e, 0x0f, 0x61, 0x59, 0x9f, 0xa0, 0x74, 0x79, 0x9f, 0x60, 0x00, 0x0d, 0x87, 0xd9, 0xfe, - 0x28, 0xcb, 0x5a, 0x6b, 0x0e, 0xdb, 0x1b, 0x1d, 0x31, 0x91, 0x22, 0xca, 0x34, 0x58, 0xf6, 0x7d, - 0xd0, 0xeb, 0x95, 0x49, 0xf5, 0x10, 0x71, 0x80, 0x70, 0xe1, 0xca, 0xe6, 0x4b, 0x98, 0xbf, 0x20, - 0xf2, 0xef, 0x7a, 0xfa, 0x88, 0x0f, 0xbf, 0x3c, 0x89, 0xe4, 0x0d, 0x0e, 0x2d, 0x96, 0x41, 0x3d, - 0x44, 0x88, 0xd5, 0x55, 0x21, 0xf4, 0x75, 0x09, 0x9a, 0xfb, 0xfe, 0x71, 0x82, 0xcf, 0xff, 0xf0, - 0x81, 0x41, 0x42, 0x1d, 0xae, 0xee, 0xe5, 0x9b, 0x96, 0x1e, 0x92, 0x07, 0xd9, 0xc3, 0x55, 0x79, - 0xd3, 0x93, 0x8a, 0x31, 0x9d, 0xad, 0xcb, 0x86, 0xf4, 0x49, 0xeb, 0x3d, 0x68, 0x52, 0xcf, 0xe7, - 0xb6, 0x8a, 0xaf, 0xe5, 0xe9, 0xb7, 0x93, 0xc2, 0xb0, 0xad, 0x86, 0x20, 0xc1, 0x73, 0xf1, 0x7d, - 0x68, 0xf3, 0x64, 0x12, 0xba, 0xe8, 0x18, 0x3c, 0x52, 0x6e, 0xdb, 0x4a, 0x61, 0x47, 0x11, 0xf9, - 0x08, 0x5a, 0xf9, 0x38, 0x33, 0x65, 0xb4, 0x17, 0xc2, 0x87, 0x95, 0xa7, 0x16, 0x8e, 0x97, 0x5a, - 0x6b, 0x7a, 0x7d, 0x20, 0x1c, 0xa5, 0xab, 0xc1, 0x52, 0x21, 0x64, 0x07, 0x08, 0x15, 0xe6, 0x64, - 0x8f, 0x26, 0x41, 0x60, 0xcb, 0xc5, 0xf5, 0xd3, 0xd7, 0x34, 0x19, 0x9c, 0x32, 0x38, 0xab, 0x4f, - 0x8b, 0x00, 0xb6, 0xf6, 0x1c, 0x56, 0x5e, 0xf7, 0x68, 0x9b, 0xf4, 0xa0, 0xf5, 0x09, 0xde, 0x58, - 0xe1, 0xdb, 0xe4, 0xfe, 0x1c, 0xe9, 0x40, 0xf3, 0x17, 0x8e, 0xcf, 0x37, 0xe2, 0x38, 0x38, 0xef, - 0x1b, 0x04, 0xa0, 0xf6, 0xc4, 0x0f, 0x7d, 0x76, 0xd2, 0x2f, 0xad, 0xfd, 0x1c, 0x96, 0xaf, 0x7e, - 0x54, 0x4d, 0xe6, 0xa1, 0x93, 0x4e, 0xde, 0x8e, 0x42, 0xb1, 0xde, 0x35, 0x98, 0xcf, 0x7d, 0x40, - 0x3e, 0x3f, 0xed, 0x1b, 0x6b, 0xbf, 0x0b, 0xbd, 0xa9, 0x6c, 0x96, 0xb4, 0xa0, 0xfe, 0xc9, 0xf3, - 0xa7, 0xcf, 0x5f, 0xfc, 0xe2, 0x79, 0x7f, 0x8e, 0xd4, 0xa1, 0xfc, 0xec, 0xb3, 0x0f, 0x25, 0x03, - 0x87, 0xcf, 0x37, 0x0e, 0x0e, 0x7e, 0xbf, 0x5f, 0x22, 0x0d, 0xa8, 0x7c, 0x76, 0x78, 0xb4, 0xdd, - 0x2f, 0xaf, 0xad, 0xa4, 0x6f, 0xa7, 0x45, 0xb2, 0xd6, 0x80, 0xca, 0xe1, 0xd6, 0x86, 0x98, 0xd6, - 0x80, 0xca, 0x93, 0xbd, 0x67, 0x3b, 0x7d, 0x63, 0xed, 0x26, 0xb4, 0x72, 0xa5, 0x24, 0xa9, 0x41, - 0xe9, 0xd3, 0x1f, 0xf5, 0xe7, 0xf0, 0xef, 0x83, 0xbe, 0xb1, 0x76, 0x0b, 0x1a, 0xfa, 0xa0, 0x17, - 0x9f, 0x90, 0xb6, 0x2f, 0xbf, 0x7b, 0x30, 0x11, 0x0c, 0xae, 0x41, 0x7f, 0xda, 0xb0, 0xc4, 0xe4, - 0xfd, 0xfb, 0x72, 0x91, 0xfd, 0x1f, 0xf5, 0x0d, 0xfc, 0xfb, 0xa0, 0x5f, 0x7a, 0xf0, 0xdf, 0x25, - 0xa8, 0x29, 0xb7, 0xff, 0x08, 0xd4, 0x63, 0x7e, 0x72, 0x6d, 0xea, 0xa5, 0x9d, 0x14, 0xfa, 0xd2, - 0xf5, 0x69, 0xb0, 0xaa, 0xf8, 0xe7, 0xee, 0x1b, 0xe4, 0x00, 0x16, 0xb0, 0x77, 0x94, 0xef, 0xe0, - 0xbc, 0x88, 0x49, 0x6a, 0x5f, 0x17, 0xda, 0x4d, 0x4b, 0x4b, 0xb3, 0x50, 0xb9, 0x15, 0x4f, 0xe0, - 0xda, 0x4c, 0x95, 0x91, 0x0f, 0xde, 0xe4, 0x59, 0xff, 0xd2, 0x9d, 0xd7, 0x50, 0xc9, 0x2f, 0xad, - 0x1a, 0xf7, 0x0d, 0xf2, 0x53, 0xa8, 0xc7, 0x92, 0x88, 0x5c, 0x9f, 0x9a, 0xa5, 0x57, 0xbb, 0x71, - 0x01, 0xae, 0x39, 0x15, 0xb3, 0x5d, 0xd9, 0x87, 0x24, 0xb9, 0x97, 0x3f, 0xf9, 0x3e, 0x66, 0x36, - 0x7b, 0xaa, 0x61, 0x69, 0xce, 0x3d, 0x50, 0xf1, 0x37, 0xdf, 0x4d, 0x21, 0x9f, 0x41, 0x5d, 0x35, - 0x98, 0xc8, 0x9d, 0x9c, 0xcb, 0x5c, 0xde, 0x08, 0x5b, 0xba, 0xfb, 0x3a, 0xb2, 0x94, 0xdb, 0xdf, - 0x83, 0x0a, 0x73, 0xce, 0x28, 0x31, 0x2f, 0x99, 0x91, 0xeb, 0x38, 0x2d, 0xdd, 0xbe, 0x92, 0x46, - 0x2f, 0xb9, 0xf9, 0xe0, 0xeb, 0xbf, 0x6c, 0x18, 0xbf, 0xf9, 0x66, 0xd9, 0xf8, 0xea, 0x9b, 0x65, - 0xe3, 0x3f, 0xbe, 0x59, 0x36, 0x7e, 0xfd, 0xed, 0xf2, 0xdc, 0x9f, 0x7f, 0xbb, 0x3c, 0xf7, 0xd5, - 0xb7, 0xcb, 0x73, 0x5f, 0x7f, 0xbb, 0x3c, 0x07, 0xfd, 0x28, 0x39, 0x5e, 0xe7, 0xfe, 0xe9, 0xd9, - 0xfa, 0xe9, 0x19, 0xfe, 0x1f, 0xc7, 0xb0, 0x86, 0x7f, 0x1e, 0xfe, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x2d, 0xed, 0x74, 0xc2, 0x4b, 0x32, 0x00, 0x00, + // 4755 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x6f, 0x1c, 0x47, + 0x76, 0xec, 0xf9, 0x9e, 0x37, 0x9f, 0x2c, 0x52, 0xd2, 0x98, 0xb6, 0x28, 0xba, 0x65, 0x6b, 0x19, + 0xee, 0x8a, 0xab, 0x95, 0xbc, 0x5a, 0x25, 0xde, 0x60, 0xc1, 0x2f, 0x99, 0xb4, 0x44, 0x89, 0x69, + 0xd2, 0x5e, 0xc4, 0x40, 0xd0, 0xe9, 0xe9, 0xae, 0x21, 0x7b, 0xd9, 0xd3, 0x3d, 0xdb, 0xd5, 0x43, + 0x89, 0x3e, 0xe4, 0x90, 0xbb, 0xe1, 0x4d, 0x90, 0x43, 0xfe, 0x40, 0x80, 0x1c, 0x12, 0x20, 0xd7, + 0x9c, 0x92, 0x43, 0x82, 0x38, 0x48, 0x80, 0xf8, 0x90, 0xc3, 0x1e, 0x03, 0x1b, 0xc9, 0xbf, 0x58, + 0x20, 0x78, 0xaf, 0xaa, 0x7a, 0xba, 0x87, 0x43, 0x4a, 0x72, 0x82, 0x3d, 0x71, 0xea, 0xbd, 0x57, + 0xd5, 0xaf, 0xde, 0x57, 0xbd, 0xf7, 0xaa, 0x08, 0xd0, 0x8f, 0x47, 0xfd, 0xf5, 0x51, 0x1c, 0x25, + 0x11, 0xab, 0xf4, 0x1d, 0xf7, 0x74, 0x3c, 0x5a, 0x6a, 0x9d, 0x9e, 0xc5, 0x23, 0x57, 0x83, 0x97, + 0x5a, 0x3c, 0x8e, 0xa3, 0x94, 0x6a, 0xa9, 0x39, 0xe4, 0x89, 0x93, 0x8e, 0x18, 0x0f, 0xdd, 0xf8, + 0x7c, 0x94, 0xf8, 0x51, 0x98, 0xc2, 0x16, 0x8f, 0xa3, 0xe3, 0x88, 0x7e, 0xfe, 0x10, 0x7f, 0x29, + 0x68, 0x27, 0x1e, 0x8b, 0x84, 0x7e, 0x4a, 0x80, 0xf9, 0x37, 0x06, 0xbc, 0x73, 0x10, 0xf3, 0x91, + 0x13, 0xf3, 0xc3, 0xd0, 0x19, 0x89, 0x93, 0x28, 0xd9, 0x24, 0x06, 0x2c, 0xfe, 0xcb, 0x31, 0x17, + 0x09, 0x7b, 0x04, 0x85, 0xe4, 0xbc, 0x67, 0xac, 0x18, 0xab, 0xed, 0xfb, 0xab, 0xeb, 0x92, 0xb9, + 0xf5, 0xab, 0x66, 0x1c, 0x9d, 0x8f, 0xb8, 0x55, 0x48, 0xce, 0xd9, 0x2a, 0x54, 0x63, 0x7e, 0xec, + 0x47, 0xa1, 0xe8, 0x15, 0x56, 0x8a, 0xab, 0x8d, 0xfb, 0xed, 0x75, 0xc5, 0xb5, 0x45, 0x60, 0x4b, + 0xa3, 0xd9, 0x2a, 0x74, 0x03, 0xee, 0x08, 0x6e, 0xfb, 0xa1, 0x2d, 0xb8, 0x1b, 0x85, 0x9e, 0xe8, + 0x15, 0x57, 0x8c, 0xd5, 0x92, 0xd5, 0x26, 0xf8, 0x5e, 0x78, 0x28, 0xa1, 0xe6, 0x7f, 0x1a, 0x70, + 0xf3, 0x92, 0x8f, 0x8b, 0x51, 0x14, 0x0a, 0xce, 0x1e, 0x66, 0xf8, 0xbd, 0x73, 0x25, 0xbf, 0x3b, + 0x67, 0x3c, 0x9c, 0x70, 0x7b, 0x07, 0x2a, 0x92, 0x9d, 0x5e, 0x61, 0xc5, 0x98, 0xc1, 0xac, 0xc2, + 0xb2, 0xf7, 0xa0, 0x4c, 0xaa, 0x20, 0x06, 0x91, 0x4c, 0x2b, 0x66, 0x07, 0xff, 0x5a, 0x12, 0xc9, + 0xee, 0xc2, 0x42, 0xe0, 0x88, 0xc4, 0x56, 0xdb, 0x12, 0xf6, 0x99, 0x13, 0xf8, 0x5e, 0xaf, 0xb4, + 0x62, 0xac, 0xd6, 0xac, 0x2e, 0xa2, 0x9e, 0xd2, 0xc6, 0xc4, 0xa7, 0x08, 0x37, 0xff, 0xbb, 0x0a, + 0x20, 0x99, 0xda, 0xe7, 0x89, 0xc3, 0x6e, 0x02, 0xb8, 0xc1, 0x58, 0x24, 0x3c, 0xb6, 0x7d, 0x8f, + 0xf6, 0x52, 0xb2, 0xea, 0x0a, 0xb2, 0xe7, 0xb1, 0xef, 0x41, 0x47, 0xa3, 0xcf, 0x78, 0x2c, 0x34, + 0xcf, 0x75, 0xab, 0xad, 0xc0, 0x9f, 0x4a, 0x28, 0xae, 0xd3, 0x9f, 0xd0, 0x34, 0x88, 0xa6, 0xde, + 0x4f, 0xd1, 0x3d, 0xa8, 0x6a, 0x5c, 0x73, 0xc5, 0x58, 0x2d, 0x5b, 0x7a, 0xc8, 0x4c, 0x28, 0x0f, + 0xfc, 0x80, 0x8b, 0x5e, 0x89, 0x14, 0xd7, 0xd4, 0x72, 0x7c, 0xec, 0x07, 0xdc, 0x92, 0x28, 0xf6, + 0x43, 0x00, 0xfc, 0x61, 0xfb, 0xa1, 0xc7, 0x5f, 0xf6, 0x5a, 0x24, 0x8d, 0xae, 0x26, 0xc4, 0x6d, + 0x10, 0x71, 0x1d, 0x69, 0xf6, 0x90, 0x84, 0xdd, 0x86, 0x96, 0x48, 0x9c, 0x38, 0x49, 0x19, 0x2a, + 0xd3, 0xc6, 0x9a, 0x04, 0xd4, 0x3c, 0xdd, 0x82, 0x06, 0x0f, 0xbd, 0x94, 0xa4, 0x42, 0x24, 0xc0, + 0x43, 0x4f, 0x13, 0xac, 0x42, 0x55, 0xb8, 0x27, 0x7c, 0xe8, 0x88, 0x5e, 0x55, 0x59, 0x95, 0xfa, + 0xe6, 0x21, 0x81, 0x2d, 0x8d, 0x66, 0x0f, 0xa0, 0x29, 0x7f, 0x2a, 0x16, 0xdb, 0x97, 0xb0, 0xd8, + 0x90, 0x54, 0x92, 0xc9, 0x25, 0xa8, 0xfb, 0xc2, 0x8e, 0x9d, 0x17, 0xf6, 0xe9, 0x59, 0xaf, 0x46, + 0xea, 0xaa, 0xfa, 0xc2, 0x72, 0x5e, 0x3c, 0x39, 0xc3, 0x1d, 0x23, 0x22, 0x76, 0xc2, 0x63, 0x2e, + 0x7a, 0x75, 0xfa, 0x7a, 0xba, 0x9c, 0xe5, 0xbc, 0xb0, 0x10, 0x61, 0xd5, 0x63, 0xf5, 0x4b, 0xb0, + 0x47, 0xd0, 0x49, 0x27, 0x28, 0x26, 0x3a, 0x97, 0x30, 0xd1, 0xd2, 0xb3, 0x24, 0x1b, 0x0c, 0x4a, + 0x9e, 0x17, 0x88, 0x1e, 0xac, 0x18, 0xab, 0x4d, 0x8b, 0x7e, 0xb3, 0x1f, 0x41, 0xc3, 0xf3, 0x02, + 0xb9, 0x0e, 0x17, 0xbd, 0xee, 0x25, 0x2b, 0x81, 0xe7, 0x05, 0x7b, 0x92, 0x06, 0x45, 0x2e, 0xd1, + 0x76, 0xcc, 0xc5, 0x38, 0x48, 0x7a, 0xf3, 0x64, 0x03, 0xcd, 0xbe, 0xf6, 0x99, 0x71, 0x90, 0xb0, + 0x0f, 0xa0, 0xe1, 0x8c, 0xfc, 0x54, 0xe4, 0x8c, 0x5c, 0x67, 0x61, 0x5d, 0xc7, 0x9f, 0x8d, 0x83, + 0x3d, 0x25, 0x7b, 0x0b, 0x9c, 0x91, 0xaf, 0xf5, 0xf0, 0x00, 0x6a, 0xa3, 0x28, 0xf0, 0x5d, 0x9f, + 0x8b, 0xde, 0x02, 0x89, 0xe2, 0x46, 0xea, 0x6d, 0x81, 0xe3, 0xf2, 0x21, 0x0f, 0x93, 0x03, 0x24, + 0x38, 0xb7, 0x52, 0x42, 0xf6, 0x01, 0x5c, 0x0f, 0xf9, 0x0b, 0xdb, 0x8d, 0x82, 0xc0, 0xc1, 0x68, + 0x25, 0x6c, 0x1e, 0x3a, 0xfd, 0x80, 0x7b, 0xbd, 0x45, 0x62, 0x6c, 0x31, 0xe4, 0x2f, 0xb6, 0x52, + 0xe4, 0x8e, 0xc4, 0x29, 0x9d, 0x24, 0x2f, 0x43, 0xd4, 0xc9, 0x35, 0xad, 0x93, 0xa3, 0x97, 0xe1, + 0x93, 0x33, 0xb6, 0x06, 0x55, 0xaf, 0x6f, 0x0f, 0x9d, 0x91, 0xe8, 0x5d, 0x27, 0x2e, 0xe6, 0x53, + 0x2e, 0xfc, 0x24, 0xde, 0xde, 0xdc, 0x77, 0x46, 0x56, 0xc5, 0xeb, 0xef, 0x3b, 0x23, 0xc1, 0xee, + 0x40, 0x69, 0x18, 0x79, 0xbc, 0x77, 0x83, 0x76, 0xc8, 0x34, 0xa1, 0x72, 0xbc, 0xc8, 0xe3, 0x16, + 0xe1, 0xd9, 0xf7, 0xa1, 0xa2, 0x74, 0xdc, 0xa3, 0x25, 0x17, 0xf2, 0x94, 0x52, 0xcd, 0x8a, 0x04, + 0x0d, 0x56, 0x89, 0x58, 0xf8, 0x9f, 0xf3, 0xde, 0x5b, 0xd2, 0x60, 0x25, 0xe8, 0xd0, 0xff, 0x9c, + 0x7f, 0x5c, 0xaa, 0x15, 0xbb, 0x25, 0xab, 0x34, 0x72, 0x92, 0x13, 0xf3, 0x18, 0x1a, 0x99, 0x35, + 0xd8, 0xdb, 0x50, 0x97, 0x1e, 0x71, 0xca, 0x65, 0xc8, 0x6a, 0x5a, 0x35, 0x02, 0x3c, 0xe1, 0xe7, + 0xec, 0x06, 0x54, 0xd1, 0x13, 0x10, 0x55, 0x20, 0x54, 0x85, 0x87, 0x1e, 0x22, 0x52, 0xe7, 0x2c, + 0x5e, 0xea, 0x9c, 0xe6, 0xbf, 0x16, 0xa0, 0x84, 0x63, 0x34, 0xa4, 0xd0, 0x19, 0x72, 0x5a, 0xbd, + 0x6e, 0xd1, 0x6f, 0x76, 0x1d, 0x2a, 0xe2, 0xc4, 0xb9, 0xff, 0xe3, 0x87, 0x7a, 0x61, 0x39, 0xca, + 0xb3, 0x53, 0xbc, 0x9c, 0x9d, 0x52, 0x8e, 0x9d, 0xff, 0x1f, 0xb7, 0x5e, 0x82, 0x9a, 0x1b, 0xbb, + 0x0f, 0x3f, 0x78, 0x19, 0xc5, 0xbd, 0x2a, 0x61, 0xd3, 0x31, 0xf2, 0x95, 0x44, 0x89, 0x13, 0xd8, + 0xa7, 0x67, 0x82, 0x7c, 0xb2, 0x64, 0xd5, 0x08, 0xf0, 0xe4, 0x8c, 0xe4, 0x2f, 0x91, 0xfd, 0xf3, + 0x84, 0xbc, 0x92, 0x56, 0x26, 0xd0, 0x26, 0x42, 0x58, 0x1b, 0x0a, 0xee, 0x80, 0x1c, 0xa9, 0x6e, + 0x15, 0xdc, 0x01, 0x4a, 0x84, 0x34, 0xd5, 0x20, 0x4a, 0xfa, 0x8d, 0x5f, 0x70, 0xfd, 0xd1, 0x09, + 0xc6, 0xdb, 0x33, 0x8a, 0x85, 0x4d, 0xab, 0x26, 0x01, 0x7b, 0x67, 0xe6, 0x17, 0x05, 0xa8, 0x69, + 0xef, 0x62, 0xdf, 0x07, 0xc0, 0x73, 0xc1, 0x96, 0x1a, 0x30, 0x66, 0x68, 0xa0, 0x3e, 0x54, 0xb4, + 0x02, 0x89, 0x3d, 0x27, 0x25, 0x2e, 0xcc, 0x22, 0x46, 0xbc, 0x24, 0xce, 0x04, 0xb6, 0xe2, 0xd5, + 0x81, 0x2d, 0x1f, 0x87, 0x4a, 0xaf, 0x13, 0x87, 0xd2, 0x30, 0x20, 0xe7, 0x54, 0x2e, 0xb7, 0x6b, + 0x1d, 0x1b, 0xe4, 0x4c, 0x1d, 0x87, 0xca, 0x2b, 0x45, 0x1d, 0x87, 0xcc, 0xf7, 0xa1, 0x33, 0xe5, + 0xe1, 0x48, 0xe6, 0x87, 0x83, 0x48, 0xd9, 0x30, 0xfd, 0x36, 0x9f, 0x02, 0x1c, 0x26, 0x4e, 0x22, + 0x36, 0x83, 0xc8, 0x3d, 0x45, 0x35, 0x8d, 0x4e, 0xce, 0x85, 0xef, 0x3a, 0x81, 0x3e, 0xd3, 0x8a, + 0x16, 0x68, 0xd0, 0x9e, 0x87, 0x67, 0xd5, 0x2f, 0x44, 0x14, 0xda, 0x09, 0xfa, 0xbc, 0x32, 0xcc, + 0x3a, 0x42, 0x8e, 0x10, 0x60, 0xfe, 0x04, 0xea, 0xb4, 0x1a, 0x29, 0x61, 0x0d, 0x2a, 0x7d, 0x5c, + 0x55, 0x2b, 0x20, 0x75, 0xe5, 0xc9, 0x07, 0x2d, 0x45, 0x61, 0xfe, 0x9d, 0x01, 0xed, 0x74, 0x66, + 0x1a, 0x5c, 0x5f, 0xdb, 0x27, 0xde, 0x82, 0x1a, 0x5a, 0x88, 0xcd, 0x43, 0x57, 0xa5, 0x24, 0x55, + 0x1c, 0xef, 0x84, 0x6e, 0x8a, 0x8a, 0x62, 0x9f, 0x5c, 0x42, 0xa1, 0x9e, 0xc7, 0x7e, 0xde, 0x9e, + 0xca, 0x79, 0x7b, 0x42, 0x51, 0xf8, 0x61, 0xe0, 0x87, 0xdc, 0x46, 0xe5, 0x93, 0x2f, 0x34, 0x2d, + 0x90, 0xa0, 0x6d, 0x27, 0x71, 0xcc, 0x3f, 0x2d, 0x40, 0x45, 0xea, 0x1c, 0x8d, 0xd7, 0xeb, 0x2b, + 0xb1, 0x16, 0xbc, 0x3e, 0x5b, 0x84, 0x72, 0x56, 0x40, 0x72, 0x90, 0x73, 0x9e, 0xe2, 0x55, 0xce, + 0x53, 0xba, 0xda, 0x79, 0xca, 0x17, 0x9c, 0xe7, 0x77, 0xa0, 0x9b, 0xf8, 0x83, 0xc0, 0x11, 0x27, + 0x76, 0xcc, 0x47, 0x81, 0xef, 0x3a, 0x82, 0x18, 0x6e, 0x59, 0x1d, 0x05, 0xb7, 0x14, 0x18, 0x59, + 0x13, 0x28, 0x67, 0x72, 0xdf, 0xa6, 0x25, 0x07, 0xec, 0x27, 0xd0, 0xa0, 0x1f, 0xea, 0xf8, 0xab, + 0x91, 0xbe, 0xae, 0xe7, 0xf4, 0x95, 0x2a, 0xc6, 0x02, 0x22, 0xa5, 0xdf, 0xe6, 0x3e, 0x94, 0xf7, + 0xb6, 0xf7, 0x9d, 0x11, 0xf2, 0x38, 0x1e, 0x89, 0x24, 0xe6, 0xce, 0x30, 0x63, 0x39, 0x1a, 0xb4, + 0xe7, 0x61, 0x00, 0xf2, 0xa2, 0x17, 0xe1, 0x84, 0xa4, 0x40, 0x24, 0xcd, 0x09, 0x70, 0xcf, 0x33, + 0x5f, 0x40, 0x13, 0x0f, 0x04, 0x32, 0x26, 0x5c, 0x75, 0x96, 0x0d, 0xbc, 0x07, 0x15, 0xdf, 0xc3, + 0xb3, 0x44, 0xa5, 0x80, 0x2d, 0xcd, 0x26, 0x31, 0x62, 0x95, 0x7d, 0x0f, 0x67, 0xde, 0x05, 0x18, + 0x39, 0x71, 0xe2, 0xd3, 0x11, 0xa5, 0x5c, 0x75, 0x8a, 0x32, 0x43, 0x60, 0x0a, 0xa8, 0xa7, 0x27, + 0xd1, 0xff, 0xe1, 0xab, 0x3f, 0x80, 0x0a, 0xe9, 0x5a, 0x7f, 0x71, 0x31, 0x7b, 0xcc, 0xe9, 0x5d, + 0x59, 0x8a, 0xc6, 0x3c, 0x80, 0x9a, 0x8e, 0x03, 0xdf, 0xf1, 0x90, 0x91, 0x51, 0xb3, 0xa8, 0xa3, + 0xa6, 0xb9, 0x0d, 0xed, 0x2d, 0x95, 0x80, 0x6e, 0x53, 0xa6, 0x8b, 0xd9, 0xa3, 0x3b, 0x8e, 0x63, + 0x1e, 0x26, 0x2a, 0x43, 0xd5, 0x43, 0xc4, 0xc4, 0xb2, 0x16, 0xa0, 0x45, 0x4b, 0x96, 0x1e, 0x9a, + 0xff, 0x6e, 0x40, 0x59, 0xce, 0xee, 0x42, 0x71, 0x28, 0x8e, 0x95, 0x20, 0xf0, 0x27, 0xdb, 0x84, + 0xee, 0x24, 0xe9, 0xb5, 0xb3, 0x39, 0x76, 0x6a, 0x2e, 0x79, 0x0e, 0x76, 0xe7, 0xd2, 0x84, 0x77, + 0xcf, 0x93, 0xab, 0xae, 0x43, 0xed, 0xf4, 0x4c, 0xcd, 0x2d, 0xd1, 0xdc, 0xf9, 0x34, 0x8f, 0x79, + 0xc2, 0xcf, 0xf5, 0xb4, 0xea, 0xe9, 0x99, 0xa4, 0x7f, 0x00, 0x4d, 0x99, 0xd6, 0xab, 0x39, 0xe5, + 0x59, 0x39, 0xfd, 0xee, 0x9c, 0xd5, 0x90, 0x54, 0x34, 0xdc, 0xac, 0x41, 0xc5, 0xe3, 0x89, 0xe3, + 0x07, 0xe6, 0xdf, 0x1b, 0xb0, 0x7c, 0x48, 0x16, 0x26, 0x23, 0xe8, 0x91, 0x23, 0x4e, 0x0f, 0xb9, + 0x3b, 0x8e, 0xfd, 0xe4, 0x7c, 0x2b, 0x0a, 0x07, 0x3e, 0xee, 0x8a, 0x8d, 0x02, 0xc7, 0x0f, 0x13, + 0xfe, 0x32, 0x21, 0x7f, 0x4f, 0xd5, 0x90, 0x09, 0x5b, 0x5b, 0x32, 0x34, 0x84, 0x83, 0x68, 0x77, + 0xce, 0xea, 0xa6, 0xf4, 0x18, 0x0c, 0x50, 0x17, 0x3b, 0x30, 0x3f, 0x74, 0x48, 0x30, 0xa7, 0xfc, + 0xdc, 0x76, 0x69, 0x61, 0x65, 0x2c, 0x69, 0xce, 0xb5, 0x4f, 0x04, 0x4f, 0xb8, 0xfa, 0xee, 0xee, + 0x9c, 0xd5, 0x19, 0xe6, 0x41, 0x9b, 0x4d, 0x80, 0x49, 0x9d, 0x68, 0x06, 0x00, 0x93, 0xcf, 0xb2, + 0x9f, 0x41, 0x43, 0x05, 0xac, 0xe4, 0x7c, 0xc4, 0x55, 0xf9, 0xb4, 0xbc, 0x9e, 0xab, 0x2b, 0x77, + 0xd2, 0xc1, 0x3e, 0x4f, 0x4e, 0x22, 0xcf, 0x02, 0x39, 0x05, 0x4b, 0x28, 0x2a, 0x59, 0xe4, 0x02, + 0x13, 0x5b, 0x52, 0x31, 0xf0, 0x09, 0x3f, 0x37, 0xff, 0xc2, 0x80, 0xce, 0x14, 0x8b, 0xec, 0x23, + 0xe8, 0x4c, 0xd6, 0x7f, 0x93, 0xef, 0xb6, 0x27, 0x68, 0xfa, 0xf6, 0x23, 0x68, 0x4c, 0xe4, 0xa3, + 0xcf, 0xd9, 0x1b, 0xf9, 0x45, 0xd2, 0x8f, 0x5b, 0x90, 0xca, 0x45, 0x98, 0x5f, 0x54, 0xa0, 0x95, + 0x2f, 0x77, 0x5f, 0x51, 0x7a, 0xe5, 0x9c, 0xa9, 0x70, 0xb9, 0x33, 0x15, 0xaf, 0x4e, 0x91, 0x4a, + 0xaf, 0x4e, 0x91, 0xca, 0x17, 0x52, 0xa4, 0x9b, 0x78, 0xec, 0x27, 0xdc, 0x0e, 0xfc, 0xa1, 0x9f, + 0xa8, 0x24, 0xa9, 0x8e, 0x90, 0xa7, 0x08, 0x60, 0x2b, 0xd0, 0x70, 0xa3, 0x50, 0xfa, 0xa0, 0x7b, + 0x4e, 0x79, 0x52, 0xcb, 0xca, 0x82, 0xd8, 0xcf, 0xa0, 0x23, 0x92, 0x28, 0x76, 0x8e, 0xb9, 0x8d, + 0x56, 0xc3, 0x43, 0x8f, 0xd2, 0xa5, 0x5c, 0x3c, 0x26, 0xf4, 0xa6, 0xc4, 0x5a, 0x6d, 0x91, 0x1b, + 0xe7, 0x8b, 0x23, 0xc8, 0x17, 0x47, 0x32, 0x60, 0x34, 0xd2, 0x34, 0x0b, 0xdd, 0x39, 0x1a, 0x8e, + 0x62, 0x2e, 0x44, 0xaa, 0xde, 0x26, 0xa9, 0x37, 0xb5, 0xd9, 0xad, 0x09, 0x9e, 0xca, 0xf0, 0x8e, + 0x9b, 0x07, 0xb0, 0xef, 0xc3, 0x7c, 0x76, 0x8d, 0x80, 0x9f, 0xf1, 0x80, 0x2a, 0xcd, 0xb2, 0x95, + 0x5d, 0xfc, 0x29, 0xc2, 0xd9, 0x83, 0xd4, 0x84, 0x29, 0x15, 0x69, 0x5f, 0xe6, 0x62, 0xda, 0x6c, + 0xc9, 0xee, 0x3f, 0x84, 0x8e, 0x27, 0x12, 0x3b, 0x5b, 0xff, 0x74, 0x2e, 0xaf, 0x7f, 0x5a, 0x9e, + 0x48, 0x36, 0x26, 0x25, 0xd0, 0x3d, 0x00, 0x31, 0xee, 0xeb, 0x9c, 0xaa, 0xab, 0xca, 0x8f, 0x4c, + 0xbc, 0x51, 0x89, 0x98, 0x18, 0xf7, 0x55, 0x3a, 0xf5, 0x2e, 0xc6, 0x1b, 0x3a, 0x2f, 0xed, 0x98, + 0x3b, 0x1e, 0x95, 0x63, 0x35, 0x8c, 0x2e, 0x04, 0xb3, 0xb8, 0xe3, 0xa5, 0x45, 0x0a, 0x7b, 0x45, + 0x91, 0xf2, 0x36, 0xd4, 0xc7, 0xa1, 0xff, 0xcb, 0x31, 0x47, 0x3b, 0x5d, 0x20, 0xb1, 0xd7, 0x24, + 0x60, 0xcf, 0xc3, 0xaa, 0xc8, 0x8d, 0x28, 0x86, 0x50, 0x61, 0x85, 0xe9, 0xa1, 0x66, 0x6b, 0x4b, + 0xc2, 0x2d, 0x4d, 0xf0, 0x71, 0xa9, 0x56, 0xe9, 0x56, 0x55, 0x7d, 0xf2, 0x3f, 0x05, 0x58, 0x9c, + 0x0e, 0x68, 0x24, 0xa7, 0x7b, 0x50, 0x55, 0xb6, 0xa0, 0x62, 0xd7, 0x65, 0x26, 0xa3, 0xc9, 0x28, + 0x3b, 0x22, 0x9b, 0x4f, 0x84, 0x3e, 0x05, 0x68, 0x7c, 0x24, 0xd8, 0x35, 0x40, 0xc7, 0x40, 0x84, + 0x4c, 0x56, 0xca, 0x3c, 0xf4, 0x8e, 0x44, 0x7a, 0x38, 0x96, 0x32, 0x87, 0xe3, 0xbb, 0xd0, 0xa4, + 0x23, 0x0d, 0x53, 0xe8, 0x84, 0xc7, 0x94, 0x87, 0xd6, 0xad, 0x06, 0xc1, 0x1e, 0x13, 0x68, 0xa6, + 0xa1, 0x55, 0xde, 0xd0, 0xd0, 0x9e, 0x43, 0x47, 0xa8, 0xb8, 0xad, 0xe3, 0x6b, 0x95, 0xb6, 0x79, + 0x67, 0xb2, 0xcd, 0xab, 0xc2, 0xbc, 0xd5, 0x16, 0x53, 0x63, 0xea, 0xfe, 0x8c, 0x47, 0x1e, 0x3a, + 0x6c, 0x22, 0x74, 0xb5, 0x68, 0x55, 0x30, 0xc3, 0x19, 0x0b, 0xf3, 0xeb, 0x02, 0x66, 0xa5, 0x39, + 0xe7, 0x32, 0xa1, 0x14, 0x46, 0xd1, 0x48, 0xc9, 0x37, 0x2d, 0x13, 0x9e, 0x45, 0xd1, 0x68, 0x77, + 0xce, 0x22, 0x1c, 0x7b, 0x1f, 0xca, 0x41, 0xe4, 0x3a, 0xc1, 0x74, 0xaa, 0xf0, 0x14, 0x81, 0xbb, + 0x73, 0x96, 0xc4, 0xb2, 0x77, 0xa0, 0x20, 0x1e, 0xa8, 0xc3, 0x13, 0xd2, 0x1d, 0x3c, 0xd8, 0x9d, + 0xb3, 0x0a, 0xe2, 0x01, 0xbb, 0x05, 0xc5, 0x63, 0x57, 0xa8, 0xf3, 0xb1, 0xa1, 0xd1, 0x1f, 0x6d, + 0x1d, 0xee, 0xce, 0x59, 0x88, 0x61, 0x1f, 0x42, 0xcb, 0x0d, 0xa2, 0xb1, 0x67, 0x7b, 0xe7, 0xa1, + 0x33, 0xf4, 0x5d, 0x75, 0x2c, 0x2e, 0x4e, 0x8e, 0xe1, 0x68, 0xec, 0x6d, 0x4b, 0xdc, 0xee, 0x9c, + 0xd5, 0x74, 0x33, 0x63, 0xdc, 0xc6, 0x89, 0x37, 0x90, 0x59, 0x62, 0x66, 0x1b, 0xbb, 0xdb, 0x8f, + 0x71, 0x7d, 0xc2, 0xb1, 0x5d, 0x60, 0xce, 0xe7, 0xe3, 0x98, 0xdb, 0xfd, 0x20, 0xea, 0xdb, 0xda, + 0xb0, 0xa4, 0xc4, 0x7b, 0x7a, 0xc6, 0x06, 0x52, 0x6c, 0x06, 0x51, 0x5f, 0xc9, 0x09, 0x8f, 0x46, + 0x67, 0x0a, 0xb6, 0x59, 0x87, 0xaa, 0x0a, 0x65, 0x66, 0x05, 0x4a, 0x28, 0x2b, 0xf3, 0x6d, 0x28, + 0x93, 0x38, 0xd0, 0x9e, 0xd0, 0xa8, 0x75, 0xb2, 0x45, 0x06, 0xfe, 0xe7, 0x25, 0x28, 0x1c, 0x3e, + 0xc0, 0x84, 0x99, 0x87, 0xde, 0x28, 0xf2, 0x55, 0xf2, 0x52, 0xb7, 0xd2, 0x31, 0x56, 0x02, 0x99, + 0x46, 0x60, 0x3d, 0x6d, 0xfc, 0x5d, 0x87, 0x4a, 0x7f, 0xec, 0x9e, 0xf2, 0x44, 0x65, 0x45, 0x6a, + 0x84, 0xf0, 0x51, 0xcc, 0x07, 0xfe, 0x4b, 0x65, 0xb8, 0x6a, 0x24, 0x83, 0xbe, 0x8c, 0xb6, 0x6e, + 0xe0, 0x08, 0x99, 0x5d, 0xd7, 0x31, 0xe8, 0x13, 0x70, 0x0b, 0x61, 0x98, 0x06, 0x09, 0x21, 0xed, + 0xb5, 0x6e, 0xe1, 0x4f, 0x84, 0x38, 0x6e, 0x40, 0xc2, 0xa8, 0x5b, 0xf8, 0x13, 0xe3, 0xbe, 0xe3, + 0xba, 0x5c, 0x08, 0x3a, 0x59, 0x6a, 0xb2, 0x8b, 0x27, 0x21, 0x78, 0xb8, 0xac, 0xc1, 0xbc, 0xe0, + 0x6e, 0xcc, 0x13, 0x3b, 0x43, 0x55, 0x27, 0xaa, 0x8e, 0x44, 0x6c, 0xa4, 0xb4, 0xab, 0xd0, 0x1d, + 0x44, 0xb1, 0xcb, 0x6d, 0x14, 0x86, 0x2d, 0x92, 0xf3, 0x80, 0xab, 0x38, 0xde, 0x26, 0xf8, 0x81, + 0x93, 0x9c, 0x1c, 0x22, 0x94, 0xdd, 0x86, 0xb6, 0x10, 0xdc, 0x3e, 0x1d, 0xd2, 0x7a, 0x18, 0x63, + 0x64, 0x68, 0x6f, 0x08, 0xc1, 0x9f, 0x0c, 0x71, 0xb1, 0x3d, 0x0f, 0x7d, 0x3c, 0x8e, 0x02, 0x6e, + 0x3b, 0xb1, 0xec, 0x20, 0xd6, 0xad, 0x2a, 0x8e, 0x37, 0x62, 0x79, 0x9a, 0xbd, 0x4c, 0x78, 0x1c, + 0xca, 0x7a, 0xaf, 0x45, 0x58, 0xd0, 0xa0, 0x3d, 0x8f, 0xad, 0xc3, 0x42, 0xd4, 0xff, 0x05, 0x77, + 0x13, 0x1b, 0xeb, 0xb4, 0xb4, 0x0f, 0xd4, 0x26, 0x6e, 0xe6, 0x25, 0xea, 0x69, 0xe4, 0x9e, 0xea, + 0x26, 0x10, 0x8a, 0x53, 0xbb, 0x78, 0x74, 0xca, 0x65, 0x9c, 0x46, 0x71, 0x2a, 0x37, 0x46, 0x18, + 0xea, 0x75, 0x14, 0x47, 0x67, 0xbe, 0xc7, 0x63, 0xea, 0x8f, 0xd5, 0xad, 0x74, 0x8c, 0x59, 0xe9, + 0x28, 0x8e, 0xb0, 0x14, 0x57, 0x5d, 0x30, 0x3d, 0x34, 0xbf, 0x32, 0xa0, 0xf8, 0xd1, 0xd6, 0xe1, + 0xab, 0xac, 0x42, 0x69, 0xbf, 0x70, 0x89, 0xf6, 0x8b, 0x57, 0x6b, 0xbf, 0x34, 0x43, 0xfb, 0xef, + 0x43, 0x7b, 0x14, 0x73, 0x8f, 0x0f, 0xfc, 0x90, 0x7b, 0x36, 0xaa, 0x5d, 0xda, 0x48, 0x6b, 0x02, + 0xdd, 0x70, 0x03, 0x2c, 0xc2, 0x5c, 0x04, 0x84, 0x89, 0xef, 0x04, 0x82, 0x9c, 0x46, 0x59, 0x4c, + 0x27, 0x03, 0x47, 0xb7, 0x30, 0x87, 0xd0, 0x25, 0xbf, 0xd9, 0x1a, 0x8b, 0x24, 0x1a, 0x52, 0x96, + 0x83, 0x5f, 0xc9, 0xe4, 0x59, 0x3a, 0xfd, 0xac, 0x5b, 0xad, 0x09, 0x14, 0xc9, 0xee, 0xc3, 0xb5, + 0x3c, 0x99, 0x9d, 0x29, 0x88, 0xeb, 0xd6, 0x42, 0x8e, 0xfa, 0x90, 0x50, 0x18, 0xc6, 0xba, 0xd3, + 0x7e, 0xfa, 0xdb, 0x17, 0xe3, 0xbb, 0xd0, 0x74, 0x5c, 0x37, 0x1a, 0x87, 0x89, 0x4d, 0x07, 0x88, + 0x14, 0x62, 0x43, 0xc1, 0x9e, 0xe1, 0x39, 0x72, 0x13, 0x40, 0x9c, 0x38, 0x31, 0x97, 0xd9, 0x99, + 0x14, 0x5e, 0x5d, 0x42, 0x70, 0xef, 0x13, 0x17, 0x13, 0xfe, 0x71, 0xde, 0xc5, 0x0e, 0xfd, 0x63, + 0x54, 0x40, 0x46, 0x34, 0xc2, 0x8d, 0x46, 0x5c, 0x7b, 0xd8, 0x04, 0x7e, 0x88, 0x60, 0xf6, 0xb3, + 0x0b, 0xc2, 0x86, 0x19, 0x61, 0x2d, 0xa3, 0x9e, 0x29, 0x35, 0x98, 0x7f, 0x66, 0x40, 0x65, 0x53, + 0x0a, 0xe5, 0xf5, 0xa2, 0x54, 0xf1, 0x92, 0x28, 0x55, 0xba, 0x44, 0xc0, 0xe5, 0xab, 0x05, 0x5c, + 0xb9, 0x28, 0x60, 0x2c, 0xdb, 0x9a, 0xd9, 0xa0, 0xcf, 0xee, 0xa4, 0x5f, 0x31, 0x54, 0xc5, 0xa4, + 0xd3, 0x14, 0x82, 0xa6, 0x5f, 0xbd, 0x0d, 0x2d, 0xed, 0x7f, 0x52, 0x35, 0x52, 0xeb, 0x4d, 0x0d, + 0x24, 0xdd, 0xfc, 0x18, 0xca, 0x4e, 0x92, 0xc4, 0xba, 0xb2, 0xbd, 0x35, 0xeb, 0x98, 0x59, 0xdf, + 0x40, 0x8a, 0x9d, 0x30, 0x89, 0xcf, 0x2d, 0x49, 0xbd, 0xf4, 0x08, 0x60, 0x02, 0xc4, 0xb0, 0x39, + 0xb1, 0x6c, 0xfc, 0xc9, 0x16, 0xa1, 0x7c, 0xe6, 0x04, 0x63, 0xfd, 0x4d, 0x39, 0xf8, 0xbd, 0xc2, + 0x23, 0xc3, 0x5c, 0x86, 0x12, 0x1e, 0x47, 0x52, 0x86, 0xc3, 0x28, 0xd1, 0xf5, 0xb8, 0x1a, 0x99, + 0xff, 0x6c, 0x40, 0x7b, 0xea, 0x56, 0xe9, 0xb6, 0xbe, 0xf5, 0x31, 0xf2, 0x07, 0x6f, 0xee, 0xd2, + 0xe7, 0xbb, 0x15, 0x07, 0xaf, 0x73, 0xd7, 0x32, 0xd5, 0xa2, 0x2f, 0xbf, 0x56, 0x8b, 0xde, 0xbc, + 0x8b, 0x35, 0x3b, 0x77, 0xc2, 0x49, 0x75, 0x93, 0x4b, 0x1a, 0x8d, 0x7c, 0xd2, 0x68, 0x1e, 0x40, + 0x27, 0x25, 0x7f, 0x93, 0x6d, 0xf7, 0xa0, 0x2a, 0xc6, 0xe4, 0x2b, 0xb4, 0xe9, 0x9a, 0xa5, 0x87, + 0xe6, 0x23, 0x68, 0xab, 0x9b, 0x37, 0xcd, 0xc0, 0x1d, 0xe8, 0x08, 0xe7, 0x8c, 0xdb, 0x49, 0x64, + 0x67, 0xf3, 0xc9, 0x9a, 0xd5, 0x42, 0xf0, 0x51, 0xa4, 0x62, 0x88, 0xf9, 0xb7, 0x06, 0x74, 0xd2, + 0xa9, 0x6f, 0xa8, 0x83, 0xc9, 0x0e, 0x0b, 0x53, 0x69, 0xf1, 0x0f, 0x80, 0xb9, 0x51, 0x10, 0xe0, + 0xa1, 0x43, 0x57, 0x57, 0x14, 0x1f, 0x54, 0x12, 0xda, 0x55, 0x18, 0x14, 0xfb, 0x16, 0xc2, 0xf1, + 0x60, 0xcd, 0x51, 0x53, 0xd7, 0x58, 0x56, 0x6e, 0x9d, 0x0c, 0xf1, 0xa1, 0xff, 0x39, 0x37, 0x17, + 0x60, 0x7e, 0xeb, 0x84, 0xbb, 0xa7, 0x1b, 0xde, 0xd0, 0x0f, 0xd5, 0x66, 0xcd, 0x2f, 0x0c, 0x60, + 0x59, 0xe8, 0x9b, 0xec, 0xe3, 0x75, 0xaf, 0x23, 0xd7, 0x60, 0xfe, 0xc4, 0x11, 0xf6, 0x88, 0x87, + 0x9e, 0x1f, 0x1e, 0xdb, 0x0e, 0x7e, 0x89, 0x76, 0x54, 0xb3, 0x3a, 0x27, 0x8e, 0x38, 0x90, 0x70, + 0x62, 0xc0, 0xfc, 0x37, 0x03, 0x6e, 0xee, 0xa8, 0x13, 0x58, 0x09, 0xda, 0xe2, 0xa8, 0x86, 0x54, + 0x3d, 0x33, 0x2a, 0x44, 0xe3, 0x8d, 0x2a, 0xc4, 0x5b, 0xd0, 0x50, 0xa7, 0x7a, 0xc6, 0xdd, 0x41, + 0x82, 0x9e, 0xa9, 0x84, 0x3e, 0x96, 0xdf, 0x94, 0x14, 0x32, 0x7a, 0x35, 0x14, 0x8c, 0x48, 0xde, + 0x87, 0x36, 0xd5, 0x26, 0x61, 0x62, 0x07, 0x3c, 0x3c, 0x4e, 0x4e, 0x94, 0xd0, 0x5b, 0x0a, 0xfa, + 0x94, 0x80, 0xe6, 0x0a, 0x2c, 0x5f, 0xb6, 0x19, 0x29, 0x68, 0xf3, 0xaf, 0x0c, 0x58, 0x9a, 0x22, + 0x39, 0x74, 0xce, 0x7e, 0x8b, 0x9b, 0xbd, 0xb8, 0x93, 0xe2, 0xac, 0x9d, 0xdc, 0x84, 0xb7, 0x67, + 0xb2, 0xa9, 0xb6, 0xf1, 0x2b, 0x75, 0xff, 0xe0, 0x39, 0x89, 0xc3, 0xd6, 0x74, 0xb4, 0x30, 0xf2, + 0x6d, 0xc0, 0x6d, 0x75, 0x8f, 0x40, 0x15, 0xae, 0x8a, 0x1a, 0x0f, 0xa1, 0x41, 0x86, 0x7b, 0x1c, + 0x47, 0xe3, 0x91, 0x6e, 0xfa, 0x5f, 0x9b, 0x9e, 0xf1, 0x11, 0x62, 0x2d, 0xba, 0xcb, 0xa5, 0x9f, + 0x42, 0x96, 0x6e, 0xa8, 0xa1, 0xb4, 0x97, 0x4a, 0x55, 0x1d, 0x7a, 0xd0, 0x2d, 0x40, 0x55, 0x45, + 0xc1, 0x19, 0xcf, 0xd4, 0x6f, 0xa0, 0x41, 0xb2, 0xb6, 0x1b, 0x3a, 0x2f, 0x11, 0x27, 0x95, 0x56, + 0x1e, 0x3a, 0x2f, 0x15, 0xd8, 0x0f, 0x11, 0x5c, 0x56, 0x60, 0x3f, 0x3c, 0x42, 0x0e, 0xe9, 0x21, + 0x43, 0x1a, 0xd8, 0xaa, 0x2a, 0xb0, 0x65, 0xee, 0x34, 0x75, 0x60, 0x6b, 0x0c, 0x27, 0x03, 0xf3, + 0x3f, 0x0c, 0x68, 0xe5, 0xf8, 0x9f, 0x95, 0xec, 0xb3, 0x9f, 0x42, 0x67, 0x72, 0xfd, 0x22, 0xbb, + 0x02, 0x85, 0x2b, 0xa4, 0xd6, 0x4a, 0xef, 0x62, 0xa8, 0xe4, 0x9d, 0xb0, 0x5c, 0xcc, 0xb2, 0x7c, + 0xc9, 0x06, 0xef, 0x40, 0x07, 0xa9, 0xb3, 0xc2, 0x91, 0x3b, 0x6d, 0x49, 0xd7, 0xd7, 0xf2, 0xb9, + 0x0e, 0x15, 0x65, 0x0a, 0xf2, 0x0e, 0x4c, 0x8d, 0xcc, 0x7f, 0xa9, 0x40, 0x33, 0xcb, 0x4d, 0xe6, + 0x42, 0xc2, 0xc8, 0x5d, 0x48, 0xe8, 0x8d, 0x16, 0x32, 0x1b, 0x5d, 0x83, 0xf9, 0x70, 0x3c, 0xec, + 0xf3, 0xd8, 0x8e, 0x06, 0x36, 0x0f, 0x93, 0xd8, 0xe7, 0x92, 0xeb, 0xa2, 0xd5, 0x91, 0x88, 0xe7, + 0x83, 0x1d, 0x09, 0xce, 0x6c, 0xab, 0x34, 0x7b, 0x5b, 0xe5, 0xec, 0xb6, 0xa6, 0xf4, 0x5d, 0xb9, + 0xa0, 0xef, 0xb7, 0xa1, 0xae, 0x3a, 0xa8, 0xbe, 0x47, 0xea, 0x2b, 0x5a, 0x35, 0x09, 0x98, 0xee, + 0x96, 0xd5, 0x2e, 0x3f, 0x10, 0xeb, 0x33, 0x5a, 0xcf, 0x93, 0x0b, 0xbb, 0xf7, 0xa0, 0x44, 0x45, + 0x7d, 0x83, 0x8c, 0xa3, 0x9b, 0x3d, 0x1f, 0xa9, 0x9a, 0x27, 0x2c, 0x2e, 0xe7, 0x0b, 0x1b, 0x8d, + 0x84, 0x4a, 0x91, 0x9a, 0x55, 0xf1, 0x05, 0x3d, 0xa6, 0x78, 0x0b, 0x6a, 0xb2, 0x85, 0xa0, 0xca, + 0x90, 0xa2, 0x55, 0xa5, 0xf1, 0x9e, 0x97, 0x51, 0x46, 0x3b, 0xab, 0x0c, 0xf6, 0xbb, 0xb0, 0x84, + 0x32, 0xea, 0xf3, 0x63, 0x92, 0x94, 0xed, 0x87, 0xb6, 0xc7, 0x07, 0xce, 0x38, 0x48, 0x6c, 0x77, + 0x40, 0x85, 0x47, 0xc9, 0xba, 0x36, 0xf4, 0xc3, 0x4d, 0x24, 0x38, 0x12, 0x7b, 0xe1, 0xb6, 0xc4, + 0x6e, 0x0d, 0x28, 0xbe, 0xd1, 0x75, 0x7f, 0x34, 0x18, 0x08, 0x9e, 0x50, 0x15, 0x52, 0xb2, 0x1a, + 0x04, 0x7b, 0x4e, 0xa0, 0x09, 0x89, 0xfa, 0xf6, 0x7c, 0x86, 0x44, 0x46, 0x84, 0x99, 0x3d, 0x0d, + 0xf6, 0x86, 0x3d, 0x8d, 0xec, 0xa5, 0xd0, 0xc2, 0xd4, 0xa5, 0xd0, 0x2a, 0x74, 0x95, 0xd6, 0x26, + 0xfa, 0x59, 0x24, 0x25, 0xb4, 0x25, 0xfc, 0x50, 0x6b, 0xe9, 0x3d, 0x68, 0xeb, 0x0e, 0xb9, 0x52, + 0xd6, 0x35, 0xa2, 0x53, 0x7d, 0xf3, 0x1d, 0xa9, 0xb2, 0x87, 0x93, 0x3e, 0xfa, 0x28, 0x72, 0x4f, + 0xd4, 0x55, 0xfc, 0x42, 0xfe, 0xcc, 0xda, 0x41, 0x54, 0xda, 0x4a, 0xc7, 0x01, 0xb3, 0x60, 0x91, + 0x22, 0x54, 0x26, 0x65, 0x26, 0x37, 0xbd, 0x41, 0x71, 0x78, 0x25, 0xdf, 0xc2, 0x45, 0x85, 0x4f, + 0x7a, 0xc1, 0xe4, 0xb2, 0x6c, 0x70, 0x01, 0x66, 0x7e, 0x69, 0xc0, 0x7c, 0xb6, 0x5b, 0xb3, 0xa3, + 0xf3, 0x82, 0x13, 0x67, 0x34, 0xe2, 0xa1, 0xed, 0xe8, 0xfb, 0x8a, 0x9a, 0x04, 0x6c, 0x50, 0xd3, + 0x97, 0x4e, 0x5d, 0xdb, 0x8d, 0x3c, 0x1d, 0xc7, 0xeb, 0x04, 0xd9, 0x8a, 0x3c, 0x3c, 0xb0, 0xe5, + 0xeb, 0x2b, 0x7b, 0xc8, 0x85, 0xc0, 0x94, 0x45, 0x1e, 0x5a, 0x4d, 0x02, 0xee, 0x4b, 0x58, 0x2e, + 0x68, 0xea, 0xdb, 0x40, 0x19, 0x34, 0xcd, 0x87, 0x50, 0x3a, 0x1c, 0x39, 0x94, 0x9b, 0x2b, 0xab, + 0x90, 0x0c, 0xa8, 0x51, 0xc6, 0x0c, 0x0b, 0xb9, 0x98, 0xb0, 0x03, 0x0d, 0x9c, 0x27, 0x9e, 0x0f, + 0xf4, 0x55, 0xfe, 0x85, 0x10, 0x67, 0x42, 0x59, 0x20, 0xc9, 0xf4, 0xe5, 0x32, 0xce, 0xb3, 0x24, + 0xca, 0xfc, 0xb2, 0x08, 0xbd, 0xa7, 0xd1, 0x31, 0xe5, 0x2a, 0xe3, 0x3e, 0x9a, 0x89, 0xe3, 0xaa, + 0x6e, 0xba, 0x93, 0xde, 0x86, 0x1b, 0xf9, 0xdb, 0xf0, 0x89, 0x4f, 0x4b, 0x96, 0x26, 0x3e, 0x3d, + 0x75, 0x31, 0xc4, 0x56, 0xa0, 0xe9, 0x87, 0xa3, 0x71, 0x62, 0xe7, 0xa2, 0x22, 0x10, 0x6c, 0x9f, + 0x62, 0xc8, 0x84, 0x22, 0x7b, 0x02, 0x28, 0x0a, 0x0a, 0x3e, 0x77, 0xa0, 0xa3, 0xd8, 0xb2, 0x07, + 0x71, 0x34, 0x9c, 0x44, 0x9a, 0x96, 0x02, 0x3f, 0x8e, 0xa3, 0xe1, 0x11, 0xbd, 0x13, 0xd3, 0x74, + 0xe3, 0x30, 0xf1, 0x03, 0x5b, 0xdd, 0x36, 0x96, 0xac, 0xb6, 0x82, 0x7f, 0x82, 0xe0, 0x23, 0x81, + 0xd1, 0x00, 0xbf, 0x36, 0x89, 0x3b, 0x18, 0xf4, 0x54, 0xd4, 0x41, 0x46, 0x33, 0x51, 0x67, 0xe8, + 0xbc, 0x44, 0xc4, 0x0a, 0xbd, 0x1b, 0x83, 0x4b, 0x62, 0x4c, 0x21, 0x39, 0xcf, 0x05, 0x92, 0x46, + 0x3e, 0x90, 0xdc, 0x85, 0xaa, 0x88, 0xc6, 0xb1, 0xcb, 0x45, 0xaf, 0x99, 0xbf, 0x5a, 0xcf, 0x28, + 0xd0, 0xd2, 0x34, 0xe6, 0x3f, 0x18, 0xb0, 0x38, 0x4b, 0x23, 0xec, 0x03, 0x28, 0x51, 0x04, 0x33, + 0x94, 0xfd, 0xa7, 0xed, 0xbd, 0xd9, 0xda, 0xb3, 0x88, 0x9a, 0xdd, 0x85, 0x86, 0x10, 0x89, 0x1d, + 0x8d, 0x93, 0xd1, 0x38, 0x99, 0xfd, 0xce, 0x00, 0x84, 0x48, 0x9e, 0x4b, 0x3c, 0xdb, 0x84, 0x79, + 0xa5, 0x5e, 0x3a, 0x7b, 0x4f, 0xfc, 0x30, 0xd1, 0xb5, 0x57, 0x9a, 0xf9, 0x48, 0x8f, 0xc5, 0x6f, + 0xec, 0xfa, 0x61, 0x62, 0x75, 0xe2, 0xdc, 0x58, 0x98, 0x7f, 0x02, 0xed, 0x3c, 0xc9, 0x77, 0xbc, + 0x66, 0x9c, 0x0e, 0x1c, 0xb2, 0x67, 0xf9, 0xca, 0xc0, 0x61, 0xfe, 0x11, 0x5c, 0x9b, 0x25, 0x14, + 0xc1, 0xb6, 0xa1, 0x2d, 0x72, 0x10, 0x95, 0x28, 0xbd, 0x73, 0x95, 0x2c, 0xad, 0xa9, 0x39, 0xe6, + 0x97, 0x05, 0x98, 0x57, 0x84, 0x5b, 0x13, 0xed, 0x50, 0xf9, 0xa0, 0x47, 0xa9, 0xa5, 0x1a, 0xba, + 0x7c, 0xd0, 0x18, 0x65, 0xac, 0xeb, 0xb0, 0x90, 0xa1, 0x4e, 0xed, 0x55, 0xfa, 0xd3, 0xfc, 0x04, + 0xa5, 0x4d, 0x56, 0xb7, 0xbf, 0x8b, 0x99, 0xf6, 0x37, 0xc6, 0xf0, 0x68, 0x38, 0xe4, 0x61, 0xa2, + 0x3b, 0x1f, 0xe9, 0x98, 0xbd, 0x03, 0x75, 0x27, 0x4e, 0xfc, 0x81, 0xe3, 0x26, 0xba, 0xb7, 0x38, + 0x01, 0x60, 0xea, 0x99, 0x0e, 0xec, 0x13, 0x47, 0xe8, 0x7c, 0xa3, 0x95, 0x42, 0x77, 0x1d, 0x71, + 0xc2, 0xbe, 0x07, 0x9d, 0x63, 0x1e, 0xf2, 0xd8, 0x49, 0xb8, 0xa7, 0x9e, 0xa9, 0xc8, 0xce, 0x63, + 0x3b, 0x05, 0x53, 0x46, 0x64, 0xfe, 0x93, 0x21, 0x93, 0xd0, 0x1d, 0xcf, 0x4f, 0x66, 0x46, 0xa2, + 0xfb, 0x70, 0xcd, 0xe3, 0x01, 0x4f, 0xb8, 0x9d, 0xbe, 0xf3, 0x98, 0x3c, 0x7b, 0xa9, 0x5b, 0x0b, + 0x12, 0x79, 0xa0, 0x70, 0xf2, 0xc9, 0xcb, 0x13, 0x58, 0x54, 0x73, 0x82, 0xe8, 0x38, 0x33, 0x45, + 0x1a, 0xe3, 0x5b, 0x69, 0x96, 0x46, 0x34, 0x59, 0x4f, 0x62, 0x72, 0xda, 0x53, 0x39, 0x4b, 0x2e, + 0x76, 0x1b, 0x5a, 0x1e, 0x17, 0x49, 0x3c, 0x76, 0x13, 0x5b, 0xf0, 0x60, 0xa0, 0x1e, 0x5b, 0x36, + 0x35, 0xf0, 0x90, 0x07, 0x03, 0xf3, 0x8f, 0xa1, 0x6b, 0xf1, 0x17, 0xb1, 0x9f, 0x24, 0x5c, 0x3e, + 0x2c, 0xd9, 0xdb, 0x66, 0xf7, 0x60, 0x31, 0x7d, 0x60, 0x10, 0x0d, 0x6c, 0xfd, 0x5b, 0xbd, 0x34, + 0x60, 0x7a, 0xfc, 0x7c, 0xf0, 0x89, 0xfa, 0x85, 0x6a, 0x49, 0xa9, 0x64, 0x82, 0x9c, 0x8e, 0xcd, + 0xdf, 0x18, 0xd0, 0xd9, 0x79, 0x99, 0xc4, 0xce, 0xe3, 0x71, 0x10, 0xc8, 0x13, 0x88, 0x6d, 0xe1, + 0x71, 0xab, 0xbe, 0x6a, 0xab, 0x6b, 0x7c, 0x69, 0x96, 0xbd, 0x89, 0xc3, 0xe5, 0xb9, 0x42, 0x97, + 0xcb, 0x42, 0xc4, 0xa4, 0x4f, 0x50, 0xb8, 0xbc, 0x4f, 0xd0, 0x83, 0x9a, 0x23, 0x6c, 0x7f, 0x30, + 0xc9, 0x5a, 0x2b, 0x8e, 0xd8, 0x1b, 0x1c, 0x09, 0x4c, 0x11, 0x65, 0x1a, 0x2c, 0xfb, 0x3e, 0xe4, + 0xf5, 0xca, 0xa4, 0x3a, 0x84, 0x38, 0x20, 0x38, 0xb9, 0xf2, 0x12, 0xd4, 0x06, 0x7e, 0xe8, 0x8b, + 0x13, 0xee, 0x91, 0x61, 0xd5, 0xac, 0x74, 0x9c, 0x79, 0xee, 0x36, 0x1e, 0xfb, 0x9e, 0x7e, 0xbc, + 0x22, 0x41, 0x9f, 0x8c, 0x7d, 0xcf, 0x7c, 0x01, 0xf3, 0x17, 0xf4, 0xf5, 0x5d, 0x8f, 0x2e, 0xe4, + 0xfa, 0xc5, 0x49, 0x24, 0xaf, 0x7f, 0x78, 0xbe, 0x86, 0xea, 0x10, 0x02, 0x57, 0x57, 0x55, 0xd4, + 0x57, 0x05, 0xa8, 0xef, 0xfb, 0xc7, 0x31, 0xbd, 0x1d, 0xa4, 0xd7, 0x09, 0x31, 0x77, 0x12, 0x75, + 0xa9, 0x5f, 0xb7, 0xf4, 0x90, 0xdd, 0x9f, 0xbc, 0x7a, 0x95, 0xd7, 0x44, 0xa9, 0x0e, 0xd2, 0xd9, + 0xba, 0xe6, 0x48, 0xdf, 0xc3, 0xde, 0x85, 0x3a, 0xf7, 0xfc, 0xc4, 0x56, 0xc1, 0xb9, 0x38, 0xfd, + 0xf0, 0x12, 0xbd, 0xc2, 0xaa, 0x21, 0x09, 0x1d, 0xaa, 0xef, 0x42, 0x33, 0x89, 0xc7, 0xa1, 0x4b, + 0x5e, 0x95, 0x44, 0xca, 0xe7, 0x1b, 0x29, 0xec, 0x28, 0x62, 0x1f, 0x42, 0x23, 0x1b, 0xa4, 0xa6, + 0x2c, 0xfe, 0x42, 0xec, 0xb1, 0xb2, 0xd4, 0xe8, 0xb5, 0xa9, 0xa9, 0xa7, 0x77, 0x0f, 0xe8, 0x65, + 0x6d, 0x0d, 0x96, 0xda, 0x64, 0x3f, 0x86, 0x1b, 0x1c, 0x6d, 0xd1, 0x1e, 0x8c, 0x83, 0xc0, 0x56, + 0x8a, 0x43, 0xe9, 0xcb, 0xc7, 0xb3, 0x75, 0x6b, 0x91, 0xe7, 0x4d, 0xf5, 0x00, 0x71, 0x6b, 0xcf, + 0x60, 0xe5, 0x55, 0x2f, 0xbc, 0x59, 0x07, 0x1a, 0x9f, 0xd0, 0xf5, 0x16, 0x3d, 0x64, 0xee, 0xce, + 0xb1, 0x16, 0xd4, 0x7f, 0xee, 0xf8, 0xc9, 0xc6, 0x68, 0x14, 0x9c, 0x77, 0x0d, 0x06, 0x50, 0x79, + 0x4c, 0x46, 0xd3, 0x2d, 0xac, 0x7d, 0x0c, 0xcb, 0x57, 0xbf, 0xc0, 0x66, 0xf3, 0xd0, 0x4a, 0x27, + 0x6f, 0x47, 0x21, 0xae, 0x77, 0x0d, 0xe6, 0x33, 0x1f, 0x90, 0x6f, 0x55, 0xbb, 0xc6, 0xda, 0xef, + 0x43, 0x67, 0x2a, 0xf5, 0x65, 0x0d, 0xa8, 0x7e, 0xf2, 0xec, 0xc9, 0xb3, 0xe7, 0x3f, 0x7f, 0xd6, + 0x9d, 0x63, 0x55, 0x28, 0x3e, 0xfd, 0xec, 0x03, 0xc9, 0xc0, 0xe1, 0xb3, 0x8d, 0x83, 0x83, 0x3f, + 0xec, 0x16, 0x58, 0x0d, 0x4a, 0x9f, 0x1d, 0x1e, 0x6d, 0x77, 0x8b, 0x6b, 0x2b, 0xe9, 0x43, 0x6b, + 0xcc, 0xec, 0x6a, 0x50, 0x3a, 0xdc, 0xda, 0xc0, 0x69, 0x35, 0x28, 0x3d, 0xde, 0x7b, 0xba, 0xd3, + 0x35, 0xd6, 0x6e, 0x42, 0x23, 0x53, 0x77, 0xb2, 0x0a, 0x14, 0x3e, 0xfd, 0x51, 0x77, 0x8e, 0xfe, + 0xde, 0xef, 0x1a, 0x6b, 0xb7, 0xa0, 0xa6, 0xb3, 0x02, 0xfc, 0x84, 0xb4, 0x75, 0xf9, 0xdd, 0x83, + 0x31, 0x32, 0xb8, 0x06, 0xdd, 0x69, 0x43, 0xc2, 0xc9, 0xfb, 0xf7, 0xe4, 0x22, 0xfb, 0x3f, 0xea, + 0x1a, 0xf4, 0xf7, 0x7e, 0xb7, 0x70, 0xff, 0x37, 0x05, 0xa8, 0xa8, 0x18, 0xf1, 0x21, 0xa8, 0x97, + 0xff, 0xec, 0xda, 0xd4, 0xb3, 0x3c, 0x29, 0xf4, 0xa5, 0xeb, 0xd3, 0x60, 0xd5, 0x1e, 0x98, 0xbb, + 0x67, 0xb0, 0x03, 0x58, 0xa0, 0x46, 0x53, 0xb6, 0xdd, 0xf3, 0x7c, 0xc4, 0x52, 0x7b, 0xba, 0xd0, + 0x9b, 0x5a, 0x5a, 0x9a, 0x85, 0xca, 0xac, 0x78, 0x02, 0xd7, 0x66, 0xaa, 0x8c, 0xbd, 0xf7, 0x3a, + 0xff, 0x03, 0xb0, 0xf4, 0xfe, 0x2b, 0xa8, 0xe4, 0x97, 0x56, 0x8d, 0x7b, 0x06, 0xfb, 0x29, 0x54, + 0x47, 0x92, 0x88, 0x5d, 0x9f, 0x9a, 0xa5, 0x57, 0xbb, 0x71, 0x01, 0xae, 0x39, 0xc5, 0xd9, 0xae, + 0x6c, 0x5a, 0xb2, 0xcc, 0x33, 0xa1, 0x6c, 0xd3, 0x73, 0x32, 0x7b, 0xaa, 0xbb, 0x69, 0xce, 0xdd, + 0xff, 0x47, 0x19, 0xac, 0xb3, 0xad, 0x17, 0xf6, 0x19, 0x54, 0x55, 0x37, 0x8a, 0xa5, 0xbb, 0xb8, + 0xb2, 0x6b, 0xb6, 0x74, 0xe7, 0x55, 0x64, 0x29, 0xb7, 0x7f, 0x00, 0x25, 0xe1, 0x9c, 0x71, 0x66, + 0x5e, 0x32, 0x23, 0xd3, 0x9e, 0x5a, 0xba, 0x7d, 0x25, 0x8d, 0x5e, 0x72, 0xf3, 0xfe, 0xaf, 0xff, + 0xba, 0x66, 0x7c, 0xf5, 0xcd, 0xb2, 0xf1, 0xf5, 0x37, 0xcb, 0xc6, 0x7f, 0x7d, 0xb3, 0x6c, 0xfc, + 0xea, 0xdb, 0xe5, 0xb9, 0xbf, 0xfc, 0x76, 0x79, 0xee, 0xeb, 0x6f, 0x97, 0xe7, 0x7e, 0xfd, 0xed, + 0xf2, 0x1c, 0x74, 0xa3, 0xf8, 0x78, 0x3d, 0xf1, 0x4f, 0xcf, 0xd6, 0x4f, 0xcf, 0xe8, 0x9f, 0x3e, + 0xfa, 0x15, 0xfa, 0xf3, 0xe0, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcd, 0xd9, 0x6e, 0x7a, 0x78, + 0x32, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9477,6 +9498,23 @@ func (m *ExtraFullBackup) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.BackupUuid) > 0 { + i -= len(m.BackupUuid) + copy(dAtA[i:], m.BackupUuid) + i = encodeVarintBrpb(dAtA, i, uint64(len(m.BackupUuid))) + i-- + dAtA[i] = 0x32 + } + if m.Finished { + i-- + if m.Finished { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } if len(m.FilesPrefixHint) > 0 { i -= len(m.FilesPrefixHint) copy(dAtA[i:], m.FilesPrefixHint) @@ -9589,16 +9627,11 @@ func (m *Migration) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.ExtraFullBackups) > 0 { - for iNdEx := len(m.ExtraFullBackups) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.ExtraFullBackups[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintBrpb(dAtA, i, uint64(size)) - } + if len(m.ExtraFullBackupPaths) > 0 { + for iNdEx := len(m.ExtraFullBackupPaths) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ExtraFullBackupPaths[iNdEx]) + copy(dAtA[i:], m.ExtraFullBackupPaths[iNdEx]) + i = encodeVarintBrpb(dAtA, i, uint64(len(m.ExtraFullBackupPaths[iNdEx]))) i-- dAtA[i] = 0x3a } @@ -11354,6 +11387,13 @@ func (m *ExtraFullBackup) Size() (n int) { if l > 0 { n += 1 + l + sovBrpb(uint64(l)) } + if m.Finished { + n += 2 + } + l = len(m.BackupUuid) + if l > 0 { + n += 1 + l + sovBrpb(uint64(l)) + } return n } @@ -11413,9 +11453,9 @@ func (m *Migration) Size() (n int) { if m.Version != 0 { n += 1 + sovBrpb(uint64(m.Version)) } - if len(m.ExtraFullBackups) > 0 { - for _, e := range m.ExtraFullBackups { - l = e.Size() + if len(m.ExtraFullBackupPaths) > 0 { + for _, s := range m.ExtraFullBackupPaths { + l = len(s) n += 1 + l + sovBrpb(uint64(l)) } } @@ -22088,6 +22128,60 @@ func (m *ExtraFullBackup) Unmarshal(dAtA []byte) error { } m.FilesPrefixHint = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Finished", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Finished = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BackupUuid", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BackupUuid = append(m.BackupUuid[:0], dAtA[iNdEx:postIndex]...) + if m.BackupUuid == nil { + m.BackupUuid = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) @@ -22445,9 +22539,9 @@ func (m *Migration) Unmarshal(dAtA []byte) error { } case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExtraFullBackups", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExtraFullBackupPaths", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -22457,25 +22551,23 @@ func (m *Migration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthBrpb } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthBrpb } if postIndex > l { return io.ErrUnexpectedEOF } - m.ExtraFullBackups = append(m.ExtraFullBackups, &ExtraFullBackup{}) - if err := m.ExtraFullBackups[len(m.ExtraFullBackups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ExtraFullBackupPaths = append(m.ExtraFullBackupPaths, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/proto/brpb.proto b/proto/brpb.proto index 124abc468..b0b71a117 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -878,6 +878,10 @@ message ExtraFullBackup { repeated File files = 2; uint64 as_if_ts = 3; string files_prefix_hint = 4; + bool finished = 5; + // When checkpoint enabled, one extra full backup + // may be sperated to many batch of files. + bytes backup_uuid = 6; } // An extended version of `SpansOfFile`, added more metadata for the @@ -910,6 +914,7 @@ message Migration { // Delete all files matches this prefix. repeated string destruct_prefix = 4; // The extra full backups. - repeated ExtraFullBackup extra_full_backups = 7; + // It is mutable during restoring, hence a reference. + repeated string extra_full_backup_paths = 7; } diff --git a/scripts/proto.lock b/scripts/proto.lock index 5dc78172b..3b7b3dee9 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -1983,6 +1983,16 @@ "id": 4, "name": "files_prefix_hint", "type": "string" + }, + { + "id": 5, + "name": "finished", + "type": "bool" + }, + { + "id": 6, + "name": "backup_uuid", + "type": "bytes" } ] }, @@ -2045,8 +2055,8 @@ }, { "id": 7, - "name": "extra_full_backups", - "type": "ExtraFullBackup", + "name": "extra_full_backup_paths", + "type": "string", "is_repeated": true } ] From 0a1f14c84756644bb645c4b34b8cae16138d7c56 Mon Sep 17 00:00:00 2001 From: hillium Date: Tue, 17 Dec 2024 15:36:46 +0800 Subject: [PATCH 06/10] Revert "added force flush" This reverts commit a51d008f44ca3807a62e46a2de73287d3af07587. Signed-off-by: hillium --- pkg/logbackuppb/logbackuppb.pb.go | 668 ++---------------------------- proto/logbackuppb.proto | 14 - scripts/proto.lock | 39 -- 3 files changed, 32 insertions(+), 689 deletions(-) diff --git a/pkg/logbackuppb/logbackuppb.pb.go b/pkg/logbackuppb/logbackuppb.pb.go index c114a1c92..419cbf93e 100644 --- a/pkg/logbackuppb/logbackuppb.pb.go +++ b/pkg/logbackuppb/logbackuppb.pb.go @@ -379,146 +379,6 @@ func (m *FlushEvent) GetCheckpoint() uint64 { return 0 } -type FlushNowRequest struct { -} - -func (m *FlushNowRequest) Reset() { *m = FlushNowRequest{} } -func (m *FlushNowRequest) String() string { return proto.CompactTextString(m) } -func (*FlushNowRequest) ProtoMessage() {} -func (*FlushNowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9a556fe18b032662, []int{7} -} -func (m *FlushNowRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *FlushNowRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_FlushNowRequest.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 *FlushNowRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_FlushNowRequest.Merge(m, src) -} -func (m *FlushNowRequest) XXX_Size() int { - return m.Size() -} -func (m *FlushNowRequest) XXX_DiscardUnknown() { - xxx_messageInfo_FlushNowRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_FlushNowRequest proto.InternalMessageInfo - -type FlushNowResponse struct { - Results []*FlushResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` -} - -func (m *FlushNowResponse) Reset() { *m = FlushNowResponse{} } -func (m *FlushNowResponse) String() string { return proto.CompactTextString(m) } -func (*FlushNowResponse) ProtoMessage() {} -func (*FlushNowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9a556fe18b032662, []int{8} -} -func (m *FlushNowResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *FlushNowResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_FlushNowResponse.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 *FlushNowResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_FlushNowResponse.Merge(m, src) -} -func (m *FlushNowResponse) XXX_Size() int { - return m.Size() -} -func (m *FlushNowResponse) XXX_DiscardUnknown() { - xxx_messageInfo_FlushNowResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_FlushNowResponse proto.InternalMessageInfo - -func (m *FlushNowResponse) GetResults() []*FlushResult { - if m != nil { - return m.Results - } - return nil -} - -type FlushResult struct { - TaskName string `protobuf:"bytes,1,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"` - Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"` - ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` -} - -func (m *FlushResult) Reset() { *m = FlushResult{} } -func (m *FlushResult) String() string { return proto.CompactTextString(m) } -func (*FlushResult) ProtoMessage() {} -func (*FlushResult) Descriptor() ([]byte, []int) { - return fileDescriptor_9a556fe18b032662, []int{9} -} -func (m *FlushResult) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *FlushResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_FlushResult.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 *FlushResult) XXX_Merge(src proto.Message) { - xxx_messageInfo_FlushResult.Merge(m, src) -} -func (m *FlushResult) XXX_Size() int { - return m.Size() -} -func (m *FlushResult) XXX_DiscardUnknown() { - xxx_messageInfo_FlushResult.DiscardUnknown(m) -} - -var xxx_messageInfo_FlushResult proto.InternalMessageInfo - -func (m *FlushResult) GetTaskName() string { - if m != nil { - return m.TaskName - } - return "" -} - -func (m *FlushResult) GetSuccess() bool { - if m != nil { - return m.Success - } - return false -} - -func (m *FlushResult) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - func init() { proto.RegisterType((*RegionIdentity)(nil), "logbackup.RegionIdentity") proto.RegisterType((*RegionCheckpoint)(nil), "logbackup.RegionCheckpoint") @@ -527,52 +387,43 @@ func init() { proto.RegisterType((*SubscribeFlushEventRequest)(nil), "logbackup.SubscribeFlushEventRequest") proto.RegisterType((*SubscribeFlushEventResponse)(nil), "logbackup.SubscribeFlushEventResponse") proto.RegisterType((*FlushEvent)(nil), "logbackup.FlushEvent") - proto.RegisterType((*FlushNowRequest)(nil), "logbackup.FlushNowRequest") - proto.RegisterType((*FlushNowResponse)(nil), "logbackup.FlushNowResponse") - proto.RegisterType((*FlushResult)(nil), "logbackup.FlushResult") } func init() { proto.RegisterFile("logbackuppb.proto", fileDescriptor_9a556fe18b032662) } var fileDescriptor_9a556fe18b032662 = []byte{ - // 587 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0x8d, 0x53, 0x94, 0x26, 0x37, 0x7d, 0x0e, 0x50, 0x82, 0x23, 0xac, 0xca, 0x08, 0x54, 0x16, - 0x84, 0x92, 0xae, 0x58, 0xb0, 0x29, 0x04, 0x54, 0x51, 0x8a, 0x34, 0xad, 0xd8, 0x5a, 0x7e, 0x5c, - 0x1c, 0xcb, 0xa9, 0xc7, 0xcc, 0x8c, 0x83, 0xfa, 0x05, 0x6c, 0x59, 0xf2, 0x09, 0x6c, 0xf8, 0x0f, - 0x96, 0x5d, 0x76, 0x89, 0x92, 0x1f, 0x41, 0x1e, 0x7b, 0x12, 0x53, 0xd2, 0x96, 0xd5, 0x8c, 0xcf, - 0x39, 0x73, 0xee, 0x99, 0xb9, 0x57, 0x86, 0xcd, 0x11, 0x0b, 0x3d, 0xd7, 0x8f, 0xb3, 0x34, 0xf5, - 0x7a, 0x29, 0x67, 0x92, 0x91, 0xd6, 0x0c, 0x32, 0x57, 0x91, 0x73, 0xc6, 0x35, 0x63, 0xde, 0x09, - 0x59, 0xc8, 0xd4, 0xf6, 0x59, 0xbe, 0x2b, 0xd1, 0x75, 0x9e, 0x09, 0xa9, 0xb6, 0x05, 0x60, 0x0f, - 0x60, 0x8d, 0x62, 0x18, 0xb1, 0xe4, 0x20, 0xc0, 0x44, 0x46, 0xf2, 0x8c, 0xac, 0x41, 0x3d, 0x0a, - 0x3a, 0xc6, 0xb6, 0xb1, 0x73, 0x8b, 0xd6, 0xa3, 0x80, 0x3c, 0x84, 0x55, 0x4c, 0x99, 0x3f, 0x74, - 0xc6, 0xc8, 0x45, 0xc4, 0x92, 0x4e, 0x5d, 0x51, 0x2b, 0x0a, 0xfc, 0x58, 0x60, 0xf6, 0x57, 0x03, - 0x36, 0x0a, 0x9f, 0x57, 0x43, 0xf4, 0xe3, 0x94, 0x45, 0x89, 0x24, 0xdb, 0xb0, 0x84, 0x9c, 0x2b, - 0xab, 0x76, 0x7f, 0xad, 0xa7, 0xf3, 0x0d, 0xf2, 0x95, 0xe6, 0x14, 0x79, 0x0e, 0x0d, 0xae, 0x4e, - 0x29, 0xd3, 0x76, 0xff, 0x7e, 0x6f, 0x76, 0x9f, 0xde, 0xdf, 0xb1, 0x68, 0x29, 0x24, 0x16, 0x80, - 0x3f, 0x2b, 0xd1, 0x59, 0x52, 0x59, 0x2a, 0x88, 0x7d, 0x02, 0x0f, 0xde, 0xa2, 0x3c, 0x74, 0x85, - 0x7c, 0x33, 0xca, 0xc4, 0xf0, 0xe4, 0xf8, 0xc3, 0xa7, 0xc2, 0x89, 0xe2, 0xe7, 0x0c, 0x85, 0x24, - 0x7b, 0xb0, 0x5c, 0x58, 0x89, 0x8e, 0xb1, 0xbd, 0x74, 0x7d, 0x51, 0xad, 0xb4, 0x1d, 0xb0, 0xae, - 0x72, 0x15, 0x29, 0x4b, 0x04, 0x92, 0x97, 0xd0, 0x9e, 0xa7, 0xd0, 0xd6, 0xdd, 0x7f, 0xac, 0xe7, - 0xcf, 0x43, 0xab, 0x7a, 0xfb, 0x05, 0x98, 0xc7, 0x99, 0x27, 0x7c, 0x1e, 0x79, 0xa8, 0x4a, 0x0c, - 0xc6, 0x98, 0x48, 0x9d, 0xb9, 0x0b, 0x2d, 0x7f, 0x14, 0x61, 0x22, 0x9d, 0xb2, 0x35, 0x2d, 0xda, - 0x2c, 0x80, 0x83, 0xc0, 0x3e, 0x84, 0xee, 0xc2, 0xa3, 0x65, 0xb0, 0xa7, 0xd0, 0xc0, 0x1c, 0xd0, - 0x99, 0xee, 0x56, 0x32, 0x55, 0xe4, 0xa5, 0xc8, 0xf6, 0x00, 0xe6, 0x68, 0x5e, 0x58, 0x48, 0x97, - 0x4b, 0x27, 0xc6, 0x33, 0x55, 0x78, 0x85, 0x36, 0x15, 0xf0, 0x0e, 0xcf, 0xc8, 0x3d, 0x58, 0xc6, - 0x24, 0x50, 0x54, 0x5d, 0x51, 0x0d, 0x4c, 0x82, 0x9c, 0xb8, 0xa9, 0x47, 0x9b, 0xb0, 0xae, 0x6a, - 0x1c, 0xb1, 0x2f, 0xe5, 0x0d, 0xed, 0xd7, 0xb0, 0x31, 0x87, 0xca, 0xe4, 0xbb, 0x79, 0xa7, 0x44, - 0x36, 0x9a, 0x45, 0xdf, 0xba, 0x1c, 0x9d, 0x2a, 0x9a, 0x6a, 0x99, 0x1d, 0x41, 0xbb, 0x82, 0xe7, - 0xe9, 0xa5, 0x2b, 0x62, 0x27, 0x71, 0x4f, 0x51, 0x3f, 0x5b, 0x0e, 0x1c, 0xb9, 0xa7, 0x48, 0x3a, - 0xb0, 0x2c, 0x32, 0xdf, 0x47, 0x21, 0x54, 0xfa, 0x26, 0xd5, 0x9f, 0x6a, 0xe2, 0xf3, 0x19, 0x75, - 0x4e, 0x51, 0x08, 0x37, 0x44, 0x75, 0x83, 0x16, 0x5d, 0x51, 0xe0, 0xfb, 0x02, 0xeb, 0xff, 0xac, - 0x43, 0xeb, 0x90, 0x85, 0xfb, 0x2a, 0x0d, 0x61, 0xb0, 0xb5, 0x78, 0x3e, 0xc8, 0x4e, 0x25, 0xf3, - 0xb5, 0x83, 0x69, 0x3e, 0xf9, 0x0f, 0x65, 0xf1, 0x32, 0x76, 0x8d, 0x0c, 0xe1, 0xf6, 0x82, 0xa6, - 0x93, 0x47, 0x15, 0x8f, 0xab, 0xe7, 0xc9, 0x7c, 0x7c, 0x93, 0x4c, 0xd7, 0xd9, 0x35, 0xc8, 0x00, - 0x9a, 0xba, 0x33, 0xc4, 0xbc, 0xdc, 0x80, 0x79, 0x07, 0xcd, 0xee, 0x42, 0x4e, 0x1b, 0xed, 0xf7, - 0x2f, 0x7e, 0x34, 0x8d, 0x5f, 0x13, 0xcb, 0x38, 0x9f, 0x58, 0xc6, 0xef, 0x89, 0x65, 0x7c, 0x9b, - 0x5a, 0xb5, 0xef, 0x53, 0xab, 0x76, 0x3e, 0xb5, 0x6a, 0x17, 0x53, 0xab, 0x06, 0x1b, 0x8c, 0x87, - 0x3d, 0x19, 0xc5, 0xe3, 0x5e, 0x3c, 0x56, 0x3f, 0x27, 0xaf, 0xa1, 0x96, 0xbd, 0x3f, 0x01, 0x00, - 0x00, 0xff, 0xff, 0xe8, 0x4e, 0x8d, 0x4c, 0xf9, 0x04, 0x00, 0x00, + // 485 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, + 0x18, 0xf4, 0x26, 0x28, 0x4d, 0xbe, 0xb4, 0xa1, 0x2c, 0x7f, 0xc1, 0x11, 0x56, 0x64, 0x04, 0x2a, + 0x07, 0x0c, 0xa4, 0x27, 0x0e, 0x5c, 0x8a, 0x02, 0xaa, 0x88, 0x84, 0xe4, 0x56, 0x5c, 0xa3, 0xd8, + 0xfe, 0x70, 0x2c, 0x47, 0xbb, 0x66, 0x77, 0x1d, 0x29, 0x4f, 0xc0, 0x95, 0x23, 0x8f, 0xc0, 0xa3, + 0x70, 0xec, 0xb1, 0x47, 0x94, 0x48, 0x3c, 0x07, 0xf2, 0xda, 0x4e, 0x8c, 0x48, 0x9b, 0x9e, 0x76, + 0x35, 0x33, 0x3b, 0x33, 0xfe, 0x3e, 0x19, 0xee, 0xcc, 0x78, 0xe8, 0x4d, 0xfc, 0x38, 0x4d, 0x12, + 0xcf, 0x49, 0x04, 0x57, 0x9c, 0xb6, 0xd6, 0x90, 0x79, 0x80, 0x42, 0x70, 0x51, 0x32, 0xe6, 0xbd, + 0x90, 0x87, 0x5c, 0x5f, 0x5f, 0x66, 0xb7, 0x02, 0xbd, 0x2d, 0x52, 0xa9, 0xf4, 0x35, 0x07, 0xec, + 0x21, 0x74, 0x5c, 0x0c, 0x23, 0xce, 0x4e, 0x03, 0x64, 0x2a, 0x52, 0x0b, 0xda, 0x81, 0x5a, 0x14, + 0x74, 0x49, 0x9f, 0x1c, 0xdd, 0x72, 0x6b, 0x51, 0x40, 0x9f, 0xc0, 0x01, 0x26, 0xdc, 0x9f, 0x8e, + 0xe7, 0x28, 0x64, 0xc4, 0x59, 0xb7, 0xa6, 0xa9, 0x7d, 0x0d, 0x7e, 0xce, 0x31, 0xfb, 0x1b, 0x81, + 0xc3, 0xdc, 0xe7, 0xdd, 0x14, 0xfd, 0x38, 0xe1, 0x11, 0x53, 0xb4, 0x0f, 0x75, 0x14, 0x42, 0x5b, + 0xb5, 0x07, 0x1d, 0xa7, 0xec, 0x37, 0xcc, 0x4e, 0x37, 0xa3, 0xe8, 0x6b, 0x68, 0x08, 0xfd, 0x4a, + 0x9b, 0xb6, 0x07, 0x8f, 0x9c, 0xf5, 0xf7, 0x38, 0xff, 0xd6, 0x72, 0x0b, 0x21, 0xb5, 0x00, 0xfc, + 0x75, 0x44, 0xb7, 0xae, 0xbb, 0x54, 0x10, 0xfb, 0x1c, 0x1e, 0x7f, 0x40, 0x35, 0x9a, 0x48, 0xf5, + 0x7e, 0x96, 0xca, 0xe9, 0xf9, 0xd9, 0xa7, 0x2f, 0xb9, 0x93, 0x8b, 0x5f, 0x53, 0x94, 0x8a, 0x1e, + 0xc3, 0x5e, 0x6e, 0x25, 0xbb, 0xa4, 0x5f, 0xbf, 0x3e, 0xb4, 0x54, 0xda, 0x63, 0xb0, 0xae, 0x72, + 0x95, 0x09, 0x67, 0x12, 0xe9, 0x5b, 0x68, 0x6f, 0x5a, 0x94, 0xd6, 0xbd, 0xff, 0xac, 0x37, 0xe3, + 0x71, 0xab, 0x7a, 0xfb, 0x0d, 0x98, 0x67, 0xa9, 0x27, 0x7d, 0x11, 0x79, 0xa8, 0x23, 0x86, 0x73, + 0x64, 0xaa, 0xec, 0xdc, 0x83, 0x96, 0x3f, 0x8b, 0x90, 0xa9, 0x71, 0xb1, 0x9a, 0x96, 0xdb, 0xcc, + 0x81, 0xd3, 0xc0, 0x1e, 0x41, 0x6f, 0xeb, 0xd3, 0xa2, 0xd8, 0x0b, 0x68, 0x60, 0x06, 0x94, 0x9d, + 0xee, 0x57, 0x3a, 0x55, 0xe4, 0x85, 0xc8, 0xf6, 0x00, 0x36, 0x68, 0x16, 0x2c, 0xd5, 0x44, 0xa8, + 0x71, 0x8c, 0x0b, 0x1d, 0xbc, 0xef, 0x36, 0x35, 0xf0, 0x11, 0x17, 0xf4, 0x21, 0xec, 0x21, 0x0b, + 0x34, 0x55, 0xd3, 0x54, 0x03, 0x59, 0x90, 0x11, 0x3b, 0x76, 0x34, 0xf8, 0x43, 0xa0, 0x35, 0xe2, + 0xe1, 0x89, 0x2e, 0x41, 0x39, 0x3c, 0xd8, 0x3e, 0x5b, 0x7a, 0x54, 0xa9, 0x7a, 0xed, 0x52, 0xcd, + 0xe7, 0x37, 0x50, 0xe6, 0xf3, 0xb0, 0x0d, 0x3a, 0x85, 0xbb, 0x5b, 0x06, 0x46, 0x9f, 0x56, 0x3c, + 0xae, 0xde, 0x85, 0xf9, 0x6c, 0x97, 0xac, 0xcc, 0x79, 0x45, 0x4e, 0x06, 0x97, 0x3f, 0x9b, 0xe4, + 0xd7, 0xd2, 0x22, 0x17, 0x4b, 0x8b, 0xfc, 0x5e, 0x5a, 0xe4, 0xfb, 0xca, 0x32, 0x7e, 0xac, 0x2c, + 0xe3, 0x62, 0x65, 0x19, 0x97, 0x2b, 0xcb, 0x80, 0x43, 0x2e, 0x42, 0x47, 0x45, 0xf1, 0xdc, 0x89, + 0xe7, 0xfa, 0x8f, 0xf4, 0x1a, 0xfa, 0x38, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x52, 0x14, 0x33, + 0x5f, 0xee, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -589,7 +440,6 @@ const _ = grpc.SupportPackageIsVersion4 type LogBackupClient interface { GetLastFlushTSOfRegion(ctx context.Context, in *GetLastFlushTSOfRegionRequest, opts ...grpc.CallOption) (*GetLastFlushTSOfRegionResponse, error) SubscribeFlushEvent(ctx context.Context, in *SubscribeFlushEventRequest, opts ...grpc.CallOption) (LogBackup_SubscribeFlushEventClient, error) - FlushNow(ctx context.Context, in *FlushNowRequest, opts ...grpc.CallOption) (*FlushNowResponse, error) } type logBackupClient struct { @@ -641,20 +491,10 @@ func (x *logBackupSubscribeFlushEventClient) Recv() (*SubscribeFlushEventRespons return m, nil } -func (c *logBackupClient) FlushNow(ctx context.Context, in *FlushNowRequest, opts ...grpc.CallOption) (*FlushNowResponse, error) { - out := new(FlushNowResponse) - err := c.cc.Invoke(ctx, "/logbackup.LogBackup/FlushNow", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // LogBackupServer is the server API for LogBackup service. type LogBackupServer interface { GetLastFlushTSOfRegion(context.Context, *GetLastFlushTSOfRegionRequest) (*GetLastFlushTSOfRegionResponse, error) SubscribeFlushEvent(*SubscribeFlushEventRequest, LogBackup_SubscribeFlushEventServer) error - FlushNow(context.Context, *FlushNowRequest) (*FlushNowResponse, error) } // UnimplementedLogBackupServer can be embedded to have forward compatible implementations. @@ -667,9 +507,6 @@ func (*UnimplementedLogBackupServer) GetLastFlushTSOfRegion(ctx context.Context, func (*UnimplementedLogBackupServer) SubscribeFlushEvent(req *SubscribeFlushEventRequest, srv LogBackup_SubscribeFlushEventServer) error { return status.Errorf(codes.Unimplemented, "method SubscribeFlushEvent not implemented") } -func (*UnimplementedLogBackupServer) FlushNow(ctx context.Context, req *FlushNowRequest) (*FlushNowResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method FlushNow not implemented") -} func RegisterLogBackupServer(s *grpc.Server, srv LogBackupServer) { s.RegisterService(&_LogBackup_serviceDesc, srv) @@ -714,24 +551,6 @@ func (x *logBackupSubscribeFlushEventServer) Send(m *SubscribeFlushEventResponse return x.ServerStream.SendMsg(m) } -func _LogBackup_FlushNow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FlushNowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LogBackupServer).FlushNow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/logbackup.LogBackup/FlushNow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LogBackupServer).FlushNow(ctx, req.(*FlushNowRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _LogBackup_serviceDesc = grpc.ServiceDesc{ ServiceName: "logbackup.LogBackup", HandlerType: (*LogBackupServer)(nil), @@ -740,10 +559,6 @@ var _LogBackup_serviceDesc = grpc.ServiceDesc{ MethodName: "GetLastFlushTSOfRegion", Handler: _LogBackup_GetLastFlushTSOfRegion_Handler, }, - { - MethodName: "FlushNow", - Handler: _LogBackup_FlushNow_Handler, - }, }, Streams: []grpc.StreamDesc{ { @@ -1023,113 +838,6 @@ func (m *FlushEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *FlushNowRequest) 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 *FlushNowRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *FlushNowRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *FlushNowResponse) 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 *FlushNowResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *FlushNowResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Results) > 0 { - for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLogbackuppb(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *FlushResult) 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 *FlushResult) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *FlushResult) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ErrorMessage) > 0 { - i -= len(m.ErrorMessage) - copy(dAtA[i:], m.ErrorMessage) - i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.ErrorMessage))) - i-- - dAtA[i] = 0x1a - } - if m.Success { - i-- - if m.Success { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if len(m.TaskName) > 0 { - i -= len(m.TaskName) - copy(dAtA[i:], m.TaskName) - i = encodeVarintLogbackuppb(dAtA, i, uint64(len(m.TaskName))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func encodeVarintLogbackuppb(dAtA []byte, offset int, v uint64) int { offset -= sovLogbackuppb(v) base := offset @@ -1254,50 +962,6 @@ func (m *FlushEvent) Size() (n int) { return n } -func (m *FlushNowRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *FlushNowResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Results) > 0 { - for _, e := range m.Results { - l = e.Size() - n += 1 + l + sovLogbackuppb(uint64(l)) - } - } - return n -} - -func (m *FlushResult) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.TaskName) - if l > 0 { - n += 1 + l + sovLogbackuppb(uint64(l)) - } - if m.Success { - n += 2 - } - l = len(m.ErrorMessage) - if l > 0 { - n += 1 + l + sovLogbackuppb(uint64(l)) - } - return n -} - func sovLogbackuppb(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2004,274 +1668,6 @@ func (m *FlushEvent) Unmarshal(dAtA []byte) error { } return nil } -func (m *FlushNowRequest) 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 ErrIntOverflowLogbackuppb - } - 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: FlushNowRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FlushNowRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipLogbackuppb(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLogbackuppb - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FlushNowResponse) 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 ErrIntOverflowLogbackuppb - } - 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: FlushNowResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FlushNowResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLogbackuppb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthLogbackuppb - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthLogbackuppb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Results = append(m.Results, &FlushResult{}) - if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLogbackuppb(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLogbackuppb - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *FlushResult) 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 ErrIntOverflowLogbackuppb - } - 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: FlushResult: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: FlushResult: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TaskName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLogbackuppb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLogbackuppb - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLogbackuppb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TaskName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLogbackuppb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Success = bool(v != 0) - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ErrorMessage", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLogbackuppb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLogbackuppb - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLogbackuppb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ErrorMessage = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLogbackuppb(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLogbackuppb - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipLogbackuppb(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/proto/logbackuppb.proto b/proto/logbackuppb.proto index 926d3b250..77784b001 100644 --- a/proto/logbackuppb.proto +++ b/proto/logbackuppb.proto @@ -52,19 +52,6 @@ message FlushEvent { uint64 checkpoint = 3; } -message FlushNowRequest { -} - -message FlushNowResponse { - repeated FlushResult results = 1; -} - -message FlushResult { - string task_name = 1; - bool success = 2; - string error_message = 3; -} - // The log backup service. // Generally, most essential interfaces of log backup (say, checkpoint management, task management) are // provided by adding some key in the embed etcd of PD. @@ -72,5 +59,4 @@ message FlushResult { service LogBackup { rpc GetLastFlushTSOfRegion(GetLastFlushTSOfRegionRequest) returns (GetLastFlushTSOfRegionResponse) {} rpc SubscribeFlushEvent(SubscribeFlushEventRequest) returns (stream SubscribeFlushEventResponse) {} - rpc FlushNow(FlushNowRequest) returns (FlushNowResponse) {} } diff --git a/scripts/proto.lock b/scripts/proto.lock index 3b7b3dee9..875ab8d9e 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -12799,40 +12799,6 @@ "type": "uint64" } ] - }, - { - "name": "FlushNowRequest" - }, - { - "name": "FlushNowResponse", - "fields": [ - { - "id": 1, - "name": "results", - "type": "FlushResult", - "is_repeated": true - } - ] - }, - { - "name": "FlushResult", - "fields": [ - { - "id": 1, - "name": "task_name", - "type": "string" - }, - { - "id": 2, - "name": "success", - "type": "bool" - }, - { - "id": 3, - "name": "error_message", - "type": "string" - } - ] } ], "services": [ @@ -12849,11 +12815,6 @@ "in_type": "SubscribeFlushEventRequest", "out_type": "SubscribeFlushEventResponse", "out_streamed": true - }, - { - "name": "FlushNow", - "in_type": "FlushNowRequest", - "out_type": "FlushNowResponse" } ] } From d7b46a2493b4d4f003e3e839ebc6ff3968f2e69d Mon Sep 17 00:00:00 2001 From: hillium Date: Wed, 25 Dec 2024 17:45:35 +0800 Subject: [PATCH 07/10] rollback irraltive changes Signed-off-by: hillium --- pkg/configpb/configpb.pb.gw.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/pkg/configpb/configpb.pb.gw.go b/pkg/configpb/configpb.pb.gw.go index c0385b0e4..9b4675b32 100644 --- a/pkg/configpb/configpb.pb.gw.go +++ b/pkg/configpb/configpb.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join var ( filter_Config_Get_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} @@ -55,7 +57,10 @@ func local_request_Config_Get_0(ctx context.Context, marshaler runtime.Marshaler var protoReq GetRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Config_Get_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_Get_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -122,7 +127,10 @@ func local_request_Config_Delete_0(ctx context.Context, marshaler runtime.Marsha var protoReq DeleteRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Config_Delete_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_Delete_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -134,11 +142,14 @@ func local_request_Config_Delete_0(ctx context.Context, marshaler runtime.Marsha // RegisterConfigHandlerServer registers the http handlers for service Config to "mux". // UnaryRPC :call ConfigServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterConfigHandlerFromEndpoint instead. func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ConfigServer) error { mux.Handle("GET", pattern_Config_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -146,6 +157,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Get_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -159,6 +171,8 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser mux.Handle("POST", pattern_Config_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -166,6 +180,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Update_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -179,6 +194,8 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser mux.Handle("DELETE", pattern_Config_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -186,6 +203,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return } resp, md, err := local_request_Config_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) From 9ab7e2f3cb675922117883ce2e39c0b965f3b9f3 Mon Sep 17 00:00:00 2001 From: hillium Date: Mon, 6 Jan 2025 14:53:57 +0800 Subject: [PATCH 08/10] added more comments Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 39 +++++++++++++++++++++++++++++++-------- proto/brpb.proto | 29 ++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index 61438d577..4a0abf8ac 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -218,7 +218,7 @@ const ( MigrationVersion_M0 MigrationVersion = 0 // Added `creator` and `version`. MigrationVersion_M1 MigrationVersion = 1 - // Added `backup`. + // Added `extra_full_backup_paths`. MigrationVersion_M2 MigrationVersion = 2 ) @@ -4862,9 +4862,16 @@ func (m *MetaEdit) GetDestructSelf() bool { return false } +// RewrittenTableID records a sort of modification over the SSTs during restoring. +// +// When "backing up" this "restored" SST, we want to backup what it was "restored". +// But in some cases, SSTs are not restored "as is", TiKV may rewrite or truncate its +// content by the client's request. type RewrittenTableID struct { + // The table ID in the backup data. UpstreamOfUpstream int64 `protobuf:"varint,1,opt,name=upstream_of_upstream,json=upstreamOfUpstream,proto3" json:"upstream_of_upstream,omitempty"` - Upstream int64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` + // The rewritten table ID during restoring. + Upstream int64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` } func (m *RewrittenTableID) Reset() { *m = RewrittenTableID{} } @@ -4919,12 +4926,28 @@ func (m *RewrittenTableID) GetUpstream() int64 { type ExtraFullBackup struct { // The table IDs rewritten during restoring. RewrittenTables []*RewrittenTableID `protobuf:"bytes,1,rep,name=rewritten_tables,json=rewrittenTables,proto3" json:"rewritten_tables,omitempty"` - Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` - AsIfTs uint64 `protobuf:"varint,3,opt,name=as_if_ts,json=asIfTs,proto3" json:"as_if_ts,omitempty"` - FilesPrefixHint string `protobuf:"bytes,4,opt,name=files_prefix_hint,json=filesPrefixHint,proto3" json:"files_prefix_hint,omitempty"` - Finished bool `protobuf:"varint,5,opt,name=finished,proto3" json:"finished,omitempty"` - // When checkpoint enabled, one extra full backup - // may be sperated to many batch of files. + // The SST files restored. + Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` + // Treating the whole extra full backup as an huge atomic + // write as this timestamp. + // That is, when user wants to PiTR to sometime after this, + // everything restored will present after the PiTR. + // Otherwise nothing will present. + AsIfTs uint64 `protobuf:"varint,3,opt,name=as_if_ts,json=asIfTs,proto3" json:"as_if_ts,omitempty"` + // The hint of the common prefix of the files. + // Used for speed up garbage collecting. + FilesPrefixHint string `protobuf:"bytes,4,opt,name=files_prefix_hint,json=filesPrefixHint,proto3" json:"files_prefix_hint,omitempty"` + // Whether this piece of extra full backup is finished. + // If not, `as_if_ts` should be ignored and this should only + // be restored when there is a finished backup with the same + // `backup_uuid`. + Finished bool `protobuf:"varint,5,opt,name=finished,proto3" json:"finished,omitempty"` + // When checkpoint enabled, one restoration may be + // sperated to many of `ExtraFullBackup`s. + // `ExtraFullBackup`s sharing the same UUID should be treated as one. + // That is: + // - The `as_if_ts` should be the largest one among all finished extra backups. + // - When restoring, all backups sharing the same uuid should be restored or not. BackupUuid []byte `protobuf:"bytes,6,opt,name=backup_uuid,json=backupUuid,proto3" json:"backup_uuid,omitempty"` } diff --git a/proto/brpb.proto b/proto/brpb.proto index b4a589f58..3a6a0e7c2 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -885,8 +885,15 @@ message MetaEdit { bool destruct_self = 4; } +// RewrittenTableID records a sort of modification over the SSTs during restoring. +// +// When "backing up" this "restored" SST, we want to backup what it was "restored". +// But in some cases, SSTs are not restored "as is", TiKV may rewrite or truncate its +// content by the client's request. message RewrittenTableID { + // The table ID in the backup data. int64 upstream_of_upstream = 1; + // The rewritten table ID during restoring. int64 upstream = 2; } @@ -895,12 +902,28 @@ message RewrittenTableID { message ExtraFullBackup { // The table IDs rewritten during restoring. repeated RewrittenTableID rewritten_tables = 1; + // The SST files restored. repeated File files = 2; + // Treating the whole extra full backup as an huge atomic + // write as this timestamp. + // That is, when user wants to PiTR to sometime after this, + // everything restored will present after the PiTR. + // Otherwise nothing will present. uint64 as_if_ts = 3; + // The hint of the common prefix of the files. + // Used for speed up garbage collecting. string files_prefix_hint = 4; + // Whether this piece of extra full backup is finished. + // If not, `as_if_ts` should be ignored and this should only + // be restored when there is a finished backup with the same + // `backup_uuid`. bool finished = 5; - // When checkpoint enabled, one extra full backup - // may be sperated to many batch of files. + // When checkpoint enabled, one restoration may be + // sperated to many of `ExtraFullBackup`s. + // `ExtraFullBackup`s sharing the same UUID should be treated as one. + // That is: + // - The `as_if_ts` should be the largest one among all finished extra backups. + // - When restoring, all backups sharing the same uuid should be restored or not. bytes backup_uuid = 6; } @@ -920,7 +943,7 @@ enum MigrationVersion { M0 = 0; // Added `creator` and `version`. M1 = 1; - // Added `backup`. + // Added `extra_full_backup_paths`. M2 = 2; } From a07c959f7136c807cfa227a10ccb22b869478441 Mon Sep 17 00:00:00 2001 From: hillium Date: Tue, 7 Jan 2025 15:22:08 +0800 Subject: [PATCH 09/10] address comments Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 698 ++++++++++++++++++++++---------------------- proto/brpb.proto | 15 +- scripts/proto.lock | 4 +- 3 files changed, 360 insertions(+), 357 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index 3baf8969f..eb21b781e 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -4890,12 +4890,12 @@ func (m *MetaEdit) GetDestructSelf() bool { // RewrittenTableID records a sort of modification over the SSTs during restoring. // -// When "backing up" this "restored" SST, we want to backup what it was "restored". +// When "backing up" this "restored" SST, we want to backup the original SST before any rewrite. // But in some cases, SSTs are not restored "as is", TiKV may rewrite or truncate its // content by the client's request. type RewrittenTableID struct { // The table ID in the backup data. - UpstreamOfUpstream int64 `protobuf:"varint,1,opt,name=upstream_of_upstream,json=upstreamOfUpstream,proto3" json:"upstream_of_upstream,omitempty"` + AncestorUpstream int64 `protobuf:"varint,1,opt,name=ancestor_upstream,json=ancestorUpstream,proto3" json:"ancestor_upstream,omitempty"` // The rewritten table ID during restoring. Upstream int64 `protobuf:"varint,2,opt,name=upstream,proto3" json:"upstream,omitempty"` } @@ -4933,9 +4933,9 @@ func (m *RewrittenTableID) XXX_DiscardUnknown() { var xxx_messageInfo_RewrittenTableID proto.InternalMessageInfo -func (m *RewrittenTableID) GetUpstreamOfUpstream() int64 { +func (m *RewrittenTableID) GetAncestorUpstream() int64 { if m != nil { - return m.UpstreamOfUpstream + return m.AncestorUpstream } return 0 } @@ -4947,9 +4947,10 @@ func (m *RewrittenTableID) GetUpstream() int64 { return 0 } -// ExtraFullBackup is created by BR restoring to a cluster with PITR enabled. -// This is uploaded by the BR CLI. -type ExtraFullBackup struct { +// IngestedSSTs is created by a client that wants to put data to the cluster by `Ingest` APIs, +// these write cannot be directly recorded by log backup. The client should put a migration +// that contains the SSTs it uploaded. +type IngestedSSTs struct { // The table IDs rewritten during restoring. RewrittenTables []*RewrittenTableID `protobuf:"bytes,1,rep,name=rewritten_tables,json=rewrittenTables,proto3" json:"rewritten_tables,omitempty"` // The SST files restored. @@ -4968,8 +4969,8 @@ type ExtraFullBackup struct { // be restored when there is a finished backup with the same // `backup_uuid`. Finished bool `protobuf:"varint,5,opt,name=finished,proto3" json:"finished,omitempty"` - // When checkpoint enabled, one restoration may be - // sperated to many of `ExtraFullBackup`s. + // When checkpoint enabled, one restoration may be separated to many + // of `ExtraFullBackup`s. // `ExtraFullBackup`s sharing the same UUID should be treated as one. // That is: // - The `as_if_ts` should be the largest one among all finished extra backups. @@ -4977,18 +4978,18 @@ type ExtraFullBackup struct { BackupUuid []byte `protobuf:"bytes,6,opt,name=backup_uuid,json=backupUuid,proto3" json:"backup_uuid,omitempty"` } -func (m *ExtraFullBackup) Reset() { *m = ExtraFullBackup{} } -func (m *ExtraFullBackup) String() string { return proto.CompactTextString(m) } -func (*ExtraFullBackup) ProtoMessage() {} -func (*ExtraFullBackup) Descriptor() ([]byte, []int) { +func (m *IngestedSSTs) Reset() { *m = IngestedSSTs{} } +func (m *IngestedSSTs) String() string { return proto.CompactTextString(m) } +func (*IngestedSSTs) ProtoMessage() {} +func (*IngestedSSTs) Descriptor() ([]byte, []int) { return fileDescriptor_483d1f48d58a4885, []int{58} } -func (m *ExtraFullBackup) XXX_Unmarshal(b []byte) error { +func (m *IngestedSSTs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ExtraFullBackup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *IngestedSSTs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ExtraFullBackup.Marshal(b, m, deterministic) + return xxx_messageInfo_IngestedSSTs.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -4998,54 +4999,54 @@ func (m *ExtraFullBackup) XXX_Marshal(b []byte, deterministic bool) ([]byte, err return b[:n], nil } } -func (m *ExtraFullBackup) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExtraFullBackup.Merge(m, src) +func (m *IngestedSSTs) XXX_Merge(src proto.Message) { + xxx_messageInfo_IngestedSSTs.Merge(m, src) } -func (m *ExtraFullBackup) XXX_Size() int { +func (m *IngestedSSTs) XXX_Size() int { return m.Size() } -func (m *ExtraFullBackup) XXX_DiscardUnknown() { - xxx_messageInfo_ExtraFullBackup.DiscardUnknown(m) +func (m *IngestedSSTs) XXX_DiscardUnknown() { + xxx_messageInfo_IngestedSSTs.DiscardUnknown(m) } -var xxx_messageInfo_ExtraFullBackup proto.InternalMessageInfo +var xxx_messageInfo_IngestedSSTs proto.InternalMessageInfo -func (m *ExtraFullBackup) GetRewrittenTables() []*RewrittenTableID { +func (m *IngestedSSTs) GetRewrittenTables() []*RewrittenTableID { if m != nil { return m.RewrittenTables } return nil } -func (m *ExtraFullBackup) GetFiles() []*File { +func (m *IngestedSSTs) GetFiles() []*File { if m != nil { return m.Files } return nil } -func (m *ExtraFullBackup) GetAsIfTs() uint64 { +func (m *IngestedSSTs) GetAsIfTs() uint64 { if m != nil { return m.AsIfTs } return 0 } -func (m *ExtraFullBackup) GetFilesPrefixHint() string { +func (m *IngestedSSTs) GetFilesPrefixHint() string { if m != nil { return m.FilesPrefixHint } return "" } -func (m *ExtraFullBackup) GetFinished() bool { +func (m *IngestedSSTs) GetFinished() bool { if m != nil { return m.Finished } return false } -func (m *ExtraFullBackup) GetBackupUuid() []byte { +func (m *IngestedSSTs) GetBackupUuid() []byte { if m != nil { return m.BackupUuid } @@ -5278,7 +5279,7 @@ func init() { proto.RegisterType((*LogFileCompaction)(nil), "backup.LogFileCompaction") proto.RegisterType((*MetaEdit)(nil), "backup.MetaEdit") proto.RegisterType((*RewrittenTableID)(nil), "backup.RewrittenTableID") - proto.RegisterType((*ExtraFullBackup)(nil), "backup.ExtraFullBackup") + proto.RegisterType((*IngestedSSTs)(nil), "backup.IngestedSSTs") proto.RegisterType((*DeleteSpansOfFile)(nil), "backup.DeleteSpansOfFile") proto.RegisterType((*Migration)(nil), "backup.Migration") } @@ -5286,311 +5287,312 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4857 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x6f, 0x1c, 0x47, - 0x76, 0xec, 0xf9, 0x9e, 0x37, 0x9f, 0x2c, 0x92, 0xd2, 0x98, 0xb6, 0x28, 0xba, 0x65, 0x6b, 0x19, - 0xee, 0x8a, 0xab, 0xa5, 0xbc, 0x5a, 0x25, 0xde, 0x60, 0xc1, 0x2f, 0x99, 0xb4, 0x44, 0x89, 0xe9, - 0xa1, 0xbd, 0x88, 0x81, 0xa0, 0xd3, 0xd3, 0x5d, 0x43, 0xf6, 0xb2, 0xa7, 0xbb, 0xb7, 0xab, 0x86, - 0x12, 0x7d, 0xc8, 0x21, 0x87, 0xdc, 0x16, 0xbb, 0x09, 0x72, 0xc8, 0x1f, 0x08, 0x90, 0x43, 0x02, - 0xe4, 0x9a, 0x53, 0x72, 0x48, 0x10, 0x03, 0x09, 0x10, 0x03, 0xc9, 0x61, 0x6f, 0x09, 0x6c, 0x24, - 0xff, 0xc2, 0x40, 0x50, 0xaf, 0xaa, 0x7a, 0xba, 0x87, 0x43, 0x4a, 0x72, 0x82, 0x3d, 0x4d, 0xd7, - 0x7b, 0xaf, 0xbe, 0xde, 0xf7, 0xab, 0xaa, 0x01, 0x18, 0x24, 0xf1, 0x60, 0x23, 0x4e, 0x22, 0x1e, - 0x91, 0xca, 0xc0, 0x71, 0xcf, 0xc6, 0xf1, 0x72, 0xeb, 0xec, 0x3c, 0x89, 0x5d, 0x0d, 0x5e, 0x6e, - 0xd1, 0x24, 0x89, 0x52, 0xaa, 0xe5, 0xe6, 0x88, 0x72, 0x27, 0x6d, 0x11, 0x1a, 0xba, 0xc9, 0x45, - 0xcc, 0xfd, 0x28, 0x4c, 0x61, 0x8b, 0x27, 0xd1, 0x49, 0x84, 0x9f, 0xdf, 0x17, 0x5f, 0x0a, 0xda, - 0x49, 0xc6, 0x8c, 0xe3, 0xa7, 0x04, 0x98, 0x7f, 0x6d, 0xc0, 0x3b, 0x47, 0x09, 0x8d, 0x9d, 0x84, - 0xf6, 0x43, 0x27, 0x66, 0xa7, 0x11, 0xdf, 0xc6, 0x05, 0x58, 0xf4, 0xe7, 0x63, 0xca, 0x38, 0x79, - 0x04, 0x05, 0x7e, 0xd1, 0x33, 0x56, 0x8d, 0xb5, 0xf6, 0xe6, 0xda, 0x86, 0x5c, 0xdc, 0xc6, 0x75, - 0x3d, 0x8e, 0x2f, 0x62, 0x6a, 0x15, 0xf8, 0x05, 0x59, 0x83, 0x6a, 0x42, 0x4f, 0xfc, 0x28, 0x64, - 0xbd, 0xc2, 0x6a, 0x71, 0xad, 0xb1, 0xd9, 0xde, 0x50, 0xab, 0xb6, 0x10, 0x6c, 0x69, 0x34, 0x59, - 0x83, 0x6e, 0x40, 0x1d, 0x46, 0x6d, 0x3f, 0xb4, 0x19, 0x75, 0xa3, 0xd0, 0x63, 0xbd, 0xe2, 0xaa, - 0xb1, 0x56, 0xb2, 0xda, 0x08, 0x3f, 0x08, 0xfb, 0x12, 0x6a, 0xfe, 0x87, 0x01, 0xb7, 0xae, 0x98, - 0x9c, 0xc5, 0x51, 0xc8, 0x28, 0x79, 0x98, 0x59, 0xef, 0xdd, 0x6b, 0xd7, 0xbb, 0x77, 0x4e, 0xc3, - 0xc9, 0x6a, 0xef, 0x42, 0x45, 0x2e, 0xa7, 0x57, 0x58, 0x35, 0x66, 0x2c, 0x56, 0x61, 0xc9, 0x7b, - 0x50, 0x46, 0x51, 0xe0, 0x02, 0x05, 0x99, 0x16, 0xcc, 0x9e, 0xf8, 0xb5, 0x24, 0x92, 0xdc, 0x83, - 0x85, 0xc0, 0x61, 0xdc, 0x56, 0xdb, 0x62, 0xf6, 0xb9, 0x13, 0xf8, 0x5e, 0xaf, 0xb4, 0x6a, 0xac, - 0xd5, 0xac, 0xae, 0x40, 0x3d, 0xc5, 0x8d, 0xb1, 0x4f, 0x05, 0xdc, 0xfc, 0xef, 0x2a, 0x80, 0x5c, - 0xd4, 0x21, 0xe5, 0x0e, 0xb9, 0x05, 0xe0, 0x06, 0x63, 0xc6, 0x69, 0x62, 0xfb, 0x1e, 0xee, 0xa5, - 0x64, 0xd5, 0x15, 0xe4, 0xc0, 0x23, 0xdf, 0x81, 0x8e, 0x46, 0x9f, 0xd3, 0x84, 0xe9, 0x35, 0xd7, - 0xad, 0xb6, 0x02, 0x7f, 0x2a, 0xa1, 0x62, 0x9c, 0xc1, 0x84, 0xa6, 0x81, 0x34, 0xf5, 0x41, 0x8a, - 0xee, 0x41, 0x55, 0xe3, 0x9a, 0xab, 0xc6, 0x5a, 0xd9, 0xd2, 0x4d, 0x62, 0x42, 0x79, 0xe8, 0x07, - 0x94, 0xf5, 0x4a, 0x28, 0xb8, 0xa6, 0xe6, 0xe3, 0x63, 0x3f, 0xa0, 0x96, 0x44, 0x91, 0xef, 0x03, - 0x88, 0x0f, 0xdb, 0x0f, 0x3d, 0xfa, 0xb2, 0xd7, 0x42, 0x6e, 0x74, 0x35, 0xa1, 0xd8, 0x06, 0x12, - 0xd7, 0x05, 0xcd, 0x81, 0x20, 0x21, 0x77, 0xa0, 0xc5, 0xb8, 0x93, 0xf0, 0x74, 0x41, 0x65, 0xdc, - 0x58, 0x13, 0x81, 0x7a, 0x4d, 0xb7, 0xa1, 0x41, 0x43, 0x2f, 0x25, 0xa9, 0x20, 0x09, 0xd0, 0xd0, - 0xd3, 0x04, 0x6b, 0x50, 0x65, 0xee, 0x29, 0x1d, 0x39, 0xac, 0x57, 0x55, 0x5a, 0xa5, 0xe6, 0xec, - 0x23, 0xd8, 0xd2, 0x68, 0xf2, 0x00, 0x9a, 0xf2, 0x53, 0x2d, 0xb1, 0x7d, 0xc5, 0x12, 0x1b, 0x92, - 0x4a, 0x2e, 0x72, 0x19, 0xea, 0x3e, 0xb3, 0x13, 0xe7, 0x85, 0x7d, 0x76, 0xde, 0xab, 0xa1, 0xb8, - 0xaa, 0x3e, 0xb3, 0x9c, 0x17, 0x4f, 0xce, 0xc5, 0x8e, 0x05, 0x22, 0x71, 0xc2, 0x13, 0xca, 0x7a, - 0x75, 0x9c, 0x3d, 0x1d, 0xce, 0x72, 0x5e, 0x58, 0x02, 0x61, 0xd5, 0x13, 0xf5, 0xc5, 0xc8, 0x23, - 0xe8, 0xa4, 0x1d, 0xd4, 0x22, 0x3a, 0x57, 0x2c, 0xa2, 0xa5, 0x7b, 0xc9, 0x65, 0x10, 0x28, 0x79, - 0x5e, 0xc0, 0x7a, 0xb0, 0x6a, 0xac, 0x35, 0x2d, 0xfc, 0x26, 0x3f, 0x80, 0x86, 0xe7, 0x05, 0x72, - 0x1c, 0xca, 0x7a, 0xdd, 0x2b, 0x46, 0x02, 0xcf, 0x0b, 0x0e, 0x24, 0x8d, 0x60, 0xb9, 0x44, 0xdb, - 0x09, 0x65, 0xe3, 0x80, 0xf7, 0xe6, 0x51, 0x07, 0x9a, 0x03, 0x6d, 0x33, 0xe3, 0x80, 0x93, 0x0f, - 0xa0, 0xe1, 0xc4, 0x7e, 0xca, 0x72, 0x82, 0xa6, 0xb3, 0xb0, 0xa1, 0xfd, 0xcf, 0xd6, 0xd1, 0x81, - 0xe2, 0xbd, 0x05, 0x4e, 0xec, 0x6b, 0x39, 0x3c, 0x80, 0x5a, 0x1c, 0x05, 0xbe, 0xeb, 0x53, 0xd6, - 0x5b, 0x40, 0x56, 0xdc, 0x4c, 0xad, 0x2d, 0x70, 0x5c, 0x3a, 0xa2, 0x21, 0x3f, 0x12, 0x04, 0x17, - 0x56, 0x4a, 0x48, 0x3e, 0x80, 0x1b, 0x21, 0x7d, 0x61, 0xbb, 0x51, 0x10, 0x38, 0xc2, 0x5b, 0x31, - 0x9b, 0x86, 0xce, 0x20, 0xa0, 0x5e, 0x6f, 0x11, 0x17, 0xb6, 0x18, 0xd2, 0x17, 0x3b, 0x29, 0x72, - 0x4f, 0xe2, 0x94, 0x4c, 0xf8, 0xcb, 0x50, 0xc8, 0x64, 0x49, 0xcb, 0xe4, 0xf8, 0x65, 0xf8, 0xe4, - 0x9c, 0xac, 0x43, 0xd5, 0x1b, 0xd8, 0x23, 0x27, 0x66, 0xbd, 0x1b, 0xb8, 0x8a, 0xf9, 0x74, 0x15, - 0x3e, 0x4f, 0x76, 0xb7, 0x0f, 0x9d, 0xd8, 0xaa, 0x78, 0x83, 0x43, 0x27, 0x66, 0xe4, 0x2e, 0x94, - 0x46, 0x91, 0x47, 0x7b, 0x37, 0x71, 0x87, 0x44, 0x13, 0x2a, 0xc3, 0x8b, 0x3c, 0x6a, 0x21, 0x9e, - 0x7c, 0x17, 0x2a, 0x4a, 0xc6, 0x3d, 0x1c, 0x72, 0x21, 0x4f, 0x29, 0xc5, 0xac, 0x48, 0x84, 0xc2, - 0x2a, 0x16, 0x33, 0xff, 0x73, 0xda, 0x7b, 0x4b, 0x2a, 0xac, 0x04, 0xf5, 0xfd, 0xcf, 0xe9, 0xc7, - 0xa5, 0x5a, 0xb1, 0x5b, 0xb2, 0x4a, 0xb1, 0xc3, 0x4f, 0xcd, 0x13, 0x68, 0x64, 0xc6, 0x20, 0x6f, - 0x43, 0x5d, 0x5a, 0xc4, 0x19, 0x95, 0x2e, 0xab, 0x69, 0xd5, 0x10, 0xf0, 0x84, 0x5e, 0x90, 0x9b, - 0x50, 0x15, 0x96, 0x20, 0x50, 0x05, 0x44, 0x55, 0x68, 0xe8, 0x09, 0x44, 0x6a, 0x9c, 0xc5, 0x2b, - 0x8d, 0xd3, 0xfc, 0x13, 0x03, 0xea, 0xc7, 0x82, 0x7b, 0xe8, 0x4f, 0x6e, 0x43, 0x23, 0x3e, 0xbd, - 0x60, 0xbe, 0xeb, 0x04, 0xda, 0xa1, 0x14, 0x2d, 0xd0, 0xa0, 0x03, 0xc1, 0xe1, 0x9a, 0x9b, 0xb8, - 0x0f, 0x3f, 0x78, 0x19, 0x25, 0x38, 0x59, 0xc9, 0x4a, 0xdb, 0x62, 0x91, 0x3c, 0xe2, 0x4e, 0x60, - 0x9f, 0x9d, 0x6b, 0xaf, 0x5c, 0x43, 0xc0, 0x93, 0x73, 0xdc, 0xbd, 0x44, 0x0e, 0x2e, 0x38, 0xba, - 0x0b, 0xdc, 0x3d, 0x82, 0xb6, 0x05, 0xc4, 0xfc, 0xa6, 0x00, 0x25, 0xb1, 0x30, 0xa1, 0xd1, 0xa1, - 0x33, 0xa2, 0x38, 0x79, 0xdd, 0xc2, 0x6f, 0x72, 0x03, 0x2a, 0xec, 0xd4, 0xd9, 0xfc, 0xe1, 0x43, - 0xbd, 0x43, 0xd9, 0xca, 0xf3, 0xa5, 0x78, 0x35, 0x5f, 0x4a, 0x39, 0xbe, 0xfc, 0xff, 0xf8, 0x97, - 0x2c, 0x2b, 0xaa, 0xd7, 0xb1, 0xa2, 0x76, 0x3d, 0x2b, 0xea, 0xd3, 0xac, 0x20, 0x9b, 0xd0, 0xe0, - 0x42, 0x24, 0xb6, 0x08, 0x2c, 0xac, 0xd7, 0xca, 0xab, 0x6b, 0x2a, 0x2d, 0x0b, 0xb8, 0xfe, 0x64, - 0xa4, 0x0d, 0x05, 0x77, 0x88, 0x5e, 0xa0, 0x6e, 0x15, 0xdc, 0xa1, 0xe0, 0x22, 0xaa, 0x59, 0x03, - 0x47, 0xc7, 0x6f, 0xb1, 0x2a, 0xd7, 0x8f, 0x4f, 0x45, 0xb0, 0x38, 0x47, 0x47, 0xde, 0xb4, 0x6a, - 0x12, 0x70, 0x70, 0x6e, 0xfe, 0xa2, 0x00, 0x35, 0xed, 0x1a, 0xc8, 0x77, 0x01, 0xc4, 0xdc, 0xb6, - 0x54, 0x1f, 0x63, 0x86, 0xfa, 0xd4, 0x47, 0x8a, 0x96, 0x09, 0x62, 0xcf, 0x49, 0x89, 0x0b, 0xb3, - 0x88, 0x05, 0x5e, 0x12, 0x67, 0xbc, 0x72, 0xf1, 0x7a, 0xaf, 0x9c, 0x77, 0xa2, 0xa5, 0xd7, 0x71, - 0xa2, 0xa9, 0x0f, 0x93, 0x7d, 0x2a, 0x57, 0x1b, 0xa5, 0x76, 0x6c, 0xb2, 0xa7, 0x76, 0xa2, 0xe5, - 0xd5, 0xa2, 0x76, 0xa2, 0xe6, 0xfb, 0xd0, 0x99, 0x72, 0x4f, 0x82, 0xcc, 0x0f, 0x87, 0x91, 0x32, - 0x40, 0xfc, 0x36, 0x9f, 0x02, 0xf4, 0xb9, 0xc3, 0xd9, 0x76, 0x10, 0xb9, 0x67, 0xaf, 0xb6, 0x9f, - 0x5b, 0x00, 0x3f, 0x63, 0x51, 0x68, 0xa3, 0xe4, 0x94, 0x32, 0xd7, 0x05, 0x04, 0xa5, 0x6a, 0xfe, - 0x08, 0xea, 0x38, 0x1a, 0x0a, 0x61, 0x1d, 0x2a, 0x03, 0x31, 0xaa, 0x16, 0x40, 0xea, 0x87, 0x26, - 0x13, 0x5a, 0x8a, 0xc2, 0xfc, 0x5b, 0x03, 0xda, 0x69, 0xcf, 0x34, 0x32, 0xbc, 0xb6, 0x1d, 0xbd, - 0x05, 0x35, 0xa1, 0x21, 0x36, 0x0d, 0x5d, 0x65, 0xb9, 0x55, 0xd1, 0xde, 0x0b, 0xdd, 0x14, 0x15, - 0x25, 0xbe, 0xb2, 0x5a, 0x44, 0x3d, 0x4f, 0xfc, 0xbc, 0x3e, 0x95, 0xf3, 0xfa, 0x24, 0x58, 0xe1, - 0x87, 0x81, 0x1f, 0x52, 0x5b, 0x08, 0x1f, 0xed, 0xa7, 0x69, 0x81, 0x04, 0xed, 0x3a, 0xdc, 0x31, - 0xff, 0xb8, 0x00, 0x15, 0x29, 0x73, 0xa1, 0xbc, 0xde, 0x40, 0xb1, 0xb5, 0xe0, 0x0d, 0xc8, 0x22, - 0x94, 0xb3, 0x0c, 0x92, 0x8d, 0x9c, 0xc1, 0x15, 0xaf, 0x33, 0xb8, 0xd2, 0xf5, 0x06, 0x57, 0xbe, - 0x64, 0x70, 0xbf, 0x05, 0x5d, 0xee, 0x0f, 0x03, 0x87, 0x9d, 0xda, 0x09, 0x8d, 0x03, 0xdf, 0x75, - 0x18, 0x2e, 0xb8, 0x65, 0x75, 0x14, 0xdc, 0x52, 0x60, 0xb1, 0x34, 0x26, 0xf8, 0x8c, 0x26, 0xdf, - 0xb4, 0x64, 0x83, 0xfc, 0x08, 0x1a, 0xf8, 0xa1, 0x62, 0x77, 0x0d, 0xe5, 0x75, 0x23, 0x27, 0xaf, - 0x54, 0x30, 0x16, 0x20, 0x29, 0x7e, 0x9b, 0x87, 0x50, 0x3e, 0xd8, 0x3d, 0x74, 0x62, 0xb1, 0xc6, - 0x71, 0xcc, 0x78, 0x42, 0x9d, 0x51, 0x46, 0x73, 0x34, 0xe8, 0xc0, 0x13, 0x4e, 0xcb, 0x8b, 0x5e, - 0x84, 0x13, 0x92, 0x02, 0x92, 0x34, 0x27, 0xc0, 0x03, 0xcf, 0x7c, 0x01, 0x4d, 0x11, 0xcd, 0xa4, - 0x8b, 0x70, 0xe2, 0x99, 0x3a, 0xf0, 0x1e, 0x54, 0x7c, 0x4f, 0x04, 0x42, 0x95, 0xbf, 0xb6, 0xf4, - 0x32, 0x71, 0x21, 0x56, 0xd9, 0xf7, 0x44, 0xcf, 0x7b, 0x00, 0xb1, 0x93, 0x70, 0x1f, 0xe3, 0xab, - 0x32, 0xd5, 0x29, 0xca, 0x0c, 0x81, 0xc9, 0xa0, 0x9e, 0x86, 0xd1, 0xff, 0xc3, 0xac, 0xdf, 0x83, - 0x0a, 0xca, 0x5a, 0xcf, 0xb8, 0x98, 0x8d, 0xd1, 0x7a, 0x57, 0x96, 0xa2, 0x31, 0x8f, 0xa0, 0xa6, - 0xfd, 0xc0, 0xb7, 0x8c, 0x90, 0xd2, 0x6b, 0x16, 0xb5, 0xd7, 0x34, 0x77, 0xa1, 0xbd, 0xa3, 0xb2, - 0xe7, 0x5d, 0x4c, 0xd3, 0x45, 0xea, 0xeb, 0x8e, 0x93, 0x84, 0x86, 0x5c, 0xa5, 0xd7, 0xba, 0x29, - 0x30, 0x89, 0x2c, 0x64, 0x54, 0x24, 0xd4, 0x4d, 0xf3, 0x5f, 0x0d, 0x28, 0xcb, 0xde, 0x5d, 0x28, - 0x8e, 0xd8, 0x89, 0x62, 0x84, 0xf8, 0x24, 0xdb, 0xd0, 0x9d, 0x64, 0xec, 0x76, 0xb6, 0x40, 0x48, - 0xd5, 0x25, 0xbf, 0x82, 0xfd, 0xb9, 0x34, 0x5b, 0x3f, 0xf0, 0xe4, 0xa8, 0x1b, 0x50, 0x3b, 0x3b, - 0x57, 0x7d, 0x4b, 0xd8, 0x77, 0x3e, 0x4d, 0xc2, 0x9e, 0xd0, 0x0b, 0xdd, 0xad, 0x7a, 0x76, 0x2e, - 0xe9, 0x1f, 0x40, 0x53, 0xd6, 0x24, 0xaa, 0x4f, 0x79, 0x56, 0x41, 0xb2, 0x3f, 0x67, 0x35, 0x24, - 0x15, 0x36, 0xb7, 0x6b, 0x50, 0xf1, 0x28, 0x77, 0xfc, 0xc0, 0xfc, 0x3b, 0x03, 0x56, 0xfa, 0xa8, - 0x61, 0xd2, 0x83, 0x1e, 0x3b, 0xec, 0xac, 0x4f, 0xdd, 0x71, 0xe2, 0xf3, 0x8b, 0x9d, 0x28, 0x1c, - 0xfa, 0x62, 0x57, 0x24, 0x0e, 0x1c, 0x3f, 0xe4, 0xf4, 0x25, 0x47, 0x7b, 0x4f, 0xc5, 0x90, 0x71, - 0x5b, 0x3b, 0xd2, 0x35, 0x84, 0xc3, 0x68, 0x7f, 0xce, 0xea, 0xa6, 0xf4, 0xc2, 0x19, 0x08, 0x59, - 0xec, 0xc1, 0xfc, 0xc8, 0x41, 0xc6, 0x9c, 0xd1, 0x0b, 0xdb, 0xc5, 0x81, 0x95, 0xb2, 0xa4, 0x09, - 0xe3, 0x21, 0x12, 0x3c, 0xa1, 0x6a, 0xde, 0xfd, 0x39, 0xab, 0x33, 0xca, 0x83, 0xb6, 0x9b, 0x00, - 0x93, 0x22, 0xd7, 0x0c, 0x00, 0x26, 0xd3, 0x92, 0x9f, 0x40, 0x43, 0x39, 0x2c, 0x7e, 0x11, 0x53, - 0x55, 0xfb, 0xad, 0x6c, 0xe4, 0x8a, 0xe2, 0xbd, 0xb4, 0x71, 0x48, 0xf9, 0x69, 0xe4, 0x59, 0x20, - 0xbb, 0x88, 0xfa, 0x0f, 0xeb, 0x2d, 0x39, 0xc0, 0x44, 0x97, 0x94, 0x0f, 0x7c, 0x42, 0x2f, 0xcc, - 0x3f, 0x37, 0xa0, 0x33, 0xb5, 0x44, 0xf2, 0x11, 0x74, 0x26, 0xe3, 0xbf, 0xc9, 0xbc, 0xed, 0x09, - 0x1a, 0xe7, 0x7e, 0x04, 0x8d, 0x09, 0x7f, 0x74, 0x9c, 0xbd, 0x99, 0x1f, 0x24, 0x9d, 0xdc, 0x82, - 0x94, 0x2f, 0xcc, 0xdc, 0x81, 0x4e, 0x3f, 0x4a, 0x38, 0xf5, 0xfa, 0xe3, 0x81, 0x8a, 0x78, 0xf7, - 0x01, 0xd8, 0x78, 0xa0, 0x03, 0xa5, 0xa1, 0x32, 0x8c, 0x8c, 0x12, 0xa9, 0xe8, 0xca, 0x74, 0x0f, - 0xf3, 0x3f, 0x2b, 0xd0, 0xca, 0x17, 0xfc, 0xaf, 0x28, 0x3e, 0x73, 0x16, 0x59, 0xb8, 0xda, 0x22, - 0x8b, 0xd7, 0xe7, 0x66, 0xa5, 0x57, 0xe7, 0x66, 0xe5, 0x4b, 0xb9, 0xd9, 0x2d, 0x91, 0x3b, 0x70, - 0x6a, 0x07, 0xfe, 0xc8, 0xe7, 0x2a, 0x3b, 0xab, 0x0b, 0xc8, 0x53, 0x01, 0x20, 0xab, 0xd0, 0x70, - 0xa3, 0x50, 0x1a, 0xb2, 0x7b, 0x81, 0x09, 0x5a, 0xcb, 0xca, 0x82, 0xc8, 0x4f, 0xa0, 0xc3, 0x78, - 0x94, 0x38, 0x27, 0xd4, 0x16, 0xaa, 0x47, 0x43, 0x0f, 0xf3, 0xb4, 0x9c, 0x53, 0x47, 0xf4, 0xb6, - 0xc4, 0x5a, 0x6d, 0x96, 0x6b, 0xe7, 0xcb, 0x43, 0xc8, 0x97, 0x87, 0xd2, 0xeb, 0x34, 0xd2, 0x5c, - 0x4d, 0xf8, 0x84, 0x68, 0x14, 0x27, 0x94, 0xb1, 0x54, 0x47, 0x9a, 0xa8, 0x23, 0xa9, 0xe2, 0xef, - 0x4c, 0xf0, 0x78, 0x10, 0xd1, 0x71, 0xf3, 0x00, 0xf2, 0x5d, 0x98, 0xcf, 0x8e, 0x11, 0xd0, 0x73, - 0x1a, 0x60, 0xad, 0x5d, 0xb6, 0xb2, 0x83, 0x3f, 0x15, 0x70, 0xf2, 0x20, 0xb5, 0x03, 0xcc, 0x67, - 0xda, 0x57, 0xd9, 0xa9, 0xd6, 0x7d, 0x34, 0x9e, 0x0f, 0xa1, 0xe3, 0x31, 0x6e, 0x67, 0x2b, 0xc0, - 0xce, 0xd5, 0x15, 0x60, 0xcb, 0x63, 0x7c, 0x6b, 0x52, 0x04, 0xe6, 0xf5, 0xad, 0xfb, 0x6a, 0x7d, - 0x23, 0x47, 0xd0, 0x63, 0xa8, 0xb4, 0xf6, 0xa4, 0xa3, 0x7d, 0x92, 0x44, 0xe3, 0x98, 0xf5, 0x96, - 0xf2, 0x65, 0xe4, 0x94, 0x72, 0x5b, 0x4b, 0x2c, 0x0f, 0xf8, 0x08, 0x7b, 0x91, 0x77, 0x85, 0x1b, - 0xc4, 0x30, 0x6e, 0x27, 0xd4, 0xf1, 0xb0, 0xc4, 0xad, 0x09, 0xa7, 0x87, 0x30, 0x8b, 0x3a, 0x5e, - 0x5a, 0xf8, 0x91, 0x57, 0x14, 0x7e, 0x6f, 0x43, 0x7d, 0x1c, 0xfa, 0x3f, 0x1f, 0x53, 0xa1, 0xf9, - 0x0b, 0x28, 0xc8, 0x9a, 0x04, 0x1c, 0x78, 0xa2, 0xd2, 0x74, 0x23, 0x74, 0x6d, 0x58, 0xac, 0x8a, - 0xac, 0x55, 0x6f, 0x74, 0x47, 0xc2, 0x2d, 0x4d, 0xf0, 0x71, 0xa9, 0x56, 0xe9, 0x56, 0x55, 0xcd, - 0xf7, 0x3f, 0x05, 0x58, 0x9c, 0xf6, 0xb3, 0xc8, 0xf9, 0xfb, 0x50, 0x55, 0xda, 0xa5, 0x5c, 0xea, - 0x55, 0x4a, 0xa8, 0xc9, 0x30, 0x69, 0x43, 0x2b, 0xe2, 0x4c, 0x07, 0x27, 0x6c, 0x1f, 0x33, 0xb2, - 0x04, 0xc2, 0xd4, 0x04, 0x42, 0xe6, 0x50, 0x65, 0x1a, 0x7a, 0xc7, 0x2c, 0x8d, 0xd9, 0xa5, 0x4c, - 0xcc, 0x7e, 0x17, 0x9a, 0xb2, 0x0e, 0x19, 0xfa, 0x01, 0xa7, 0x09, 0xa6, 0xc7, 0x75, 0x4b, 0xd6, - 0x26, 0x8f, 0x11, 0x34, 0x53, 0x75, 0x2b, 0x6f, 0xa8, 0xba, 0xcf, 0xa1, 0xc3, 0x54, 0x38, 0xd1, - 0x6e, 0xbf, 0x8a, 0xdb, 0xbc, 0x3b, 0xd9, 0xe6, 0x75, 0xd1, 0xc7, 0x6a, 0xb3, 0xa9, 0x36, 0x9e, - 0xa8, 0x8d, 0x63, 0x4f, 0xb8, 0x00, 0xce, 0x74, 0x05, 0x6e, 0x55, 0x44, 0xe2, 0x35, 0x66, 0xe6, - 0x97, 0x05, 0x91, 0x2c, 0xe7, 0xcc, 0xd5, 0x84, 0x52, 0x18, 0x45, 0xb1, 0xe2, 0x6f, 0x5a, 0xbd, - 0x3c, 0x8b, 0xa2, 0x78, 0x7f, 0xce, 0x42, 0x1c, 0x79, 0x1f, 0xca, 0x41, 0xe4, 0x3a, 0xc1, 0x74, - 0x06, 0xf3, 0x54, 0x00, 0xf7, 0xe7, 0x2c, 0x89, 0x25, 0xef, 0x40, 0x81, 0x3d, 0x50, 0x31, 0x1d, - 0xd2, 0x1d, 0x3c, 0xd8, 0x9f, 0xb3, 0x0a, 0xec, 0x01, 0xb9, 0x0d, 0xc5, 0x13, 0x97, 0xa9, 0xb0, - 0xdd, 0xd0, 0xe8, 0x8f, 0x76, 0xfa, 0xfb, 0x73, 0x96, 0xc0, 0x90, 0x0f, 0xa1, 0xe5, 0x06, 0xd1, - 0xd8, 0xb3, 0xbd, 0x8b, 0xd0, 0x19, 0xf9, 0xae, 0x8a, 0xd6, 0x8b, 0x93, 0xec, 0x20, 0x1a, 0x7b, - 0xbb, 0x12, 0xb7, 0x3f, 0x67, 0x35, 0xdd, 0x4c, 0x5b, 0x6c, 0xe3, 0xd4, 0x1b, 0xca, 0xe4, 0x35, - 0xb3, 0x8d, 0xfd, 0xdd, 0xc7, 0x62, 0x7c, 0xc4, 0x91, 0x7d, 0x20, 0xce, 0xe7, 0xe3, 0x84, 0xda, - 0x83, 0x20, 0x1a, 0xd8, 0x5a, 0xb1, 0x24, 0xc7, 0x7b, 0xba, 0xc7, 0x96, 0xa0, 0xd8, 0x0e, 0xa2, - 0x81, 0xe2, 0x93, 0x88, 0xd8, 0xce, 0x14, 0x6c, 0xbb, 0x0e, 0x55, 0xe5, 0x1c, 0xcd, 0x0a, 0x94, - 0x04, 0xaf, 0xcc, 0xb7, 0xa1, 0x8c, 0xec, 0x10, 0xfa, 0x24, 0x94, 0x5a, 0xe7, 0x80, 0xa8, 0xe0, - 0x7f, 0x56, 0x82, 0x42, 0xff, 0x81, 0xc8, 0xe3, 0x69, 0xe8, 0xc5, 0x91, 0xaf, 0x72, 0xaa, 0xba, - 0x95, 0xb6, 0x45, 0x81, 0x92, 0x39, 0x5c, 0xad, 0xa7, 0x87, 0xa9, 0x37, 0xa0, 0x32, 0x18, 0xbb, - 0x67, 0x94, 0xab, 0x64, 0x4d, 0xb5, 0x04, 0x3c, 0x4e, 0xe8, 0xd0, 0x7f, 0xa9, 0x14, 0x57, 0xb5, - 0x64, 0x18, 0x91, 0xfe, 0xdb, 0x0d, 0x1c, 0x26, 0x93, 0xfe, 0xba, 0x08, 0x23, 0x08, 0xdc, 0x11, - 0x30, 0x91, 0x9d, 0x31, 0x26, 0xf5, 0xb5, 0x6e, 0x89, 0x4f, 0x01, 0x71, 0xdc, 0x00, 0x99, 0x51, - 0xb7, 0xc4, 0xa7, 0x88, 0x24, 0x8e, 0xeb, 0x52, 0xc6, 0x30, 0x56, 0xd5, 0xe4, 0xc9, 0xa8, 0x84, - 0x88, 0x70, 0xb5, 0x0e, 0xf3, 0x8c, 0xba, 0x09, 0xe5, 0x76, 0x86, 0xaa, 0x8e, 0x54, 0x1d, 0x89, - 0xd8, 0x4a, 0x69, 0xd7, 0xa0, 0x3b, 0x8c, 0x12, 0x97, 0xda, 0x82, 0x19, 0x36, 0xe3, 0x17, 0x01, - 0x55, 0x91, 0xa1, 0x8d, 0xf0, 0x23, 0x87, 0x9f, 0xf6, 0x05, 0x94, 0xdc, 0x81, 0x36, 0x63, 0xd4, - 0x3e, 0x1b, 0xe1, 0x78, 0xc2, 0xc7, 0xc8, 0x60, 0xd1, 0x60, 0x8c, 0x3e, 0x19, 0x89, 0xc1, 0x0e, - 0x3c, 0x61, 0xe3, 0x49, 0x14, 0x50, 0xdb, 0x49, 0xe4, 0xa9, 0x6c, 0xdd, 0xaa, 0x8a, 0xf6, 0x56, - 0x22, 0xe3, 0xe3, 0x4b, 0x4e, 0x93, 0x50, 0x96, 0xa1, 0x2d, 0xc4, 0x82, 0x06, 0x1d, 0x78, 0x64, - 0x03, 0x16, 0xa2, 0xc1, 0xcf, 0xa8, 0xcb, 0x6d, 0x51, 0x3e, 0xa6, 0x67, 0x6b, 0x6d, 0x5c, 0xcd, - 0xbc, 0x44, 0x3d, 0x8d, 0xdc, 0x33, 0x7d, 0xb0, 0x26, 0xd8, 0xa9, 0x4d, 0x3c, 0x3a, 0xa3, 0xd2, - 0xf3, 0x0b, 0x76, 0x2a, 0x33, 0x16, 0x30, 0x21, 0xd7, 0x38, 0x89, 0xce, 0x7d, 0x8f, 0x26, 0x78, - 0xe6, 0x58, 0xb7, 0xd2, 0xb6, 0x48, 0x96, 0xe3, 0x24, 0x1a, 0xfa, 0x01, 0x55, 0x27, 0x8b, 0xba, - 0x69, 0x7e, 0x61, 0x40, 0xf1, 0xa3, 0x9d, 0xfe, 0xab, 0xb4, 0x42, 0x49, 0xbf, 0x70, 0x85, 0xf4, - 0x8b, 0xd7, 0x4b, 0xbf, 0x34, 0x43, 0xfa, 0xef, 0x43, 0x3b, 0x4e, 0xa8, 0x47, 0x87, 0x7e, 0x48, - 0x3d, 0x5b, 0x88, 0x5d, 0xea, 0x48, 0x6b, 0x02, 0xdd, 0x72, 0x03, 0x51, 0x1b, 0xba, 0x02, 0x10, - 0x72, 0xdf, 0x09, 0x18, 0x1a, 0x8d, 0xd2, 0x98, 0x4e, 0x06, 0x2e, 0xcc, 0xc2, 0x1c, 0x41, 0x17, - 0xed, 0x66, 0x67, 0xcc, 0x78, 0x34, 0xc2, 0xe4, 0x4b, 0xcc, 0x92, 0x49, 0xff, 0x74, 0x56, 0x5c, - 0xb7, 0x5a, 0x13, 0xa8, 0x20, 0xdb, 0x84, 0xa5, 0x3c, 0x99, 0x9d, 0xa9, 0xd3, 0xeb, 0xd6, 0x42, - 0x8e, 0xba, 0x8f, 0x28, 0xe1, 0xc6, 0xba, 0xd3, 0x76, 0xfa, 0x9b, 0x67, 0xe3, 0xbb, 0xd0, 0x74, - 0x5c, 0x37, 0x1a, 0x87, 0xdc, 0xc6, 0x00, 0x22, 0x99, 0xd8, 0x50, 0xb0, 0x67, 0x22, 0x8e, 0xdc, - 0x02, 0x60, 0xa7, 0x4e, 0x42, 0x65, 0xbe, 0x27, 0x99, 0x57, 0x97, 0x10, 0xb1, 0xf7, 0x89, 0x89, - 0x31, 0xff, 0x24, 0x6f, 0x62, 0x7d, 0xff, 0x44, 0x08, 0x20, 0xc3, 0x1a, 0xe6, 0x46, 0x31, 0xd5, - 0x16, 0x36, 0x81, 0xf7, 0x05, 0x98, 0xfc, 0xe4, 0x12, 0xb3, 0x61, 0x86, 0x5b, 0xcb, 0x88, 0x67, - 0x4a, 0x0c, 0xe6, 0x9f, 0x1a, 0x50, 0xd9, 0x96, 0x4c, 0x79, 0x3d, 0x2f, 0x55, 0xbc, 0xc2, 0x4b, - 0x95, 0xae, 0x60, 0x70, 0xf9, 0x7a, 0x06, 0x57, 0x2e, 0x33, 0x58, 0x54, 0x93, 0xcd, 0xac, 0xd3, - 0x27, 0x77, 0xd3, 0x59, 0x0c, 0x55, 0xc8, 0xe9, 0x34, 0x05, 0xa1, 0xe9, 0xac, 0x77, 0xa0, 0xa5, - 0xed, 0x4f, 0x8a, 0x46, 0x4a, 0xbd, 0xa9, 0x81, 0x28, 0x9b, 0x1f, 0x42, 0xd9, 0xe1, 0x3c, 0xd1, - 0x05, 0xf7, 0xed, 0x59, 0x61, 0x66, 0x63, 0x4b, 0x50, 0xec, 0x85, 0x3c, 0xb9, 0xb0, 0x24, 0xf5, - 0xf2, 0x23, 0x80, 0x09, 0x50, 0xb8, 0xcd, 0x89, 0x66, 0x8b, 0x4f, 0xb2, 0x08, 0xe5, 0x73, 0x27, - 0x18, 0xeb, 0x39, 0x65, 0xe3, 0x77, 0x0a, 0x8f, 0x0c, 0x73, 0x05, 0x4a, 0x22, 0x1c, 0x49, 0x1e, - 0x8e, 0x22, 0xae, 0x8f, 0x09, 0x54, 0xcb, 0xfc, 0x27, 0x03, 0xda, 0x53, 0x37, 0x75, 0x77, 0xf4, - 0x4d, 0x9a, 0x91, 0x0f, 0xbc, 0xb9, 0x8b, 0xb4, 0x6f, 0x57, 0x6e, 0xbc, 0xce, 0xfd, 0xd5, 0xd4, - 0xb5, 0x47, 0xf9, 0xb5, 0xae, 0x3d, 0xcc, 0x7b, 0xd0, 0xde, 0x09, 0xa8, 0x13, 0x4e, 0xea, 0xa5, - 0x5c, 0xd2, 0x68, 0xe4, 0x93, 0x46, 0xf3, 0x08, 0x3a, 0x29, 0xf9, 0x9b, 0x6c, 0xbb, 0x07, 0x55, - 0x36, 0x46, 0x5b, 0xc1, 0x4d, 0xd7, 0x2c, 0xdd, 0x34, 0x1f, 0x41, 0x5b, 0xdd, 0x66, 0xea, 0x05, - 0xdc, 0x85, 0x0e, 0x73, 0xce, 0xa9, 0xcd, 0x23, 0x3b, 0x9b, 0x4f, 0xd6, 0xac, 0x96, 0x00, 0x1f, - 0x47, 0xca, 0x87, 0x98, 0x7f, 0x63, 0x40, 0x27, 0xed, 0xfa, 0x86, 0x32, 0x98, 0xec, 0xb0, 0x30, - 0x95, 0x16, 0x7f, 0x0f, 0x88, 0x1b, 0x05, 0x81, 0x08, 0x3a, 0x78, 0x1d, 0x88, 0xfe, 0x41, 0x25, - 0xa1, 0x5d, 0x85, 0x11, 0x6c, 0xdf, 0x11, 0x70, 0x11, 0x58, 0x73, 0xd4, 0x78, 0x98, 0x2d, 0x6b, - 0xc1, 0x4e, 0x86, 0xb8, 0xef, 0x7f, 0x4e, 0xcd, 0x05, 0x98, 0xdf, 0x39, 0xa5, 0xee, 0xd9, 0x96, - 0x37, 0xf2, 0x43, 0xb5, 0x59, 0xf3, 0x17, 0x06, 0x90, 0x2c, 0xf4, 0x4d, 0xf6, 0xf1, 0xba, 0x57, - 0xbc, 0xeb, 0x30, 0x7f, 0xea, 0x30, 0x3b, 0xa6, 0xa1, 0xe7, 0x87, 0x27, 0xb6, 0x23, 0x66, 0xc2, - 0x1d, 0xd5, 0xac, 0xce, 0xa9, 0xc3, 0x8e, 0x24, 0x1c, 0x17, 0x60, 0xfe, 0x8b, 0x01, 0xb7, 0xf6, - 0x54, 0x04, 0x56, 0x8c, 0xb6, 0xa8, 0x10, 0x43, 0x2a, 0x9e, 0x19, 0x35, 0xa7, 0xf1, 0x46, 0x35, - 0xe7, 0x6d, 0x68, 0xa8, 0xa8, 0x9e, 0x31, 0x77, 0x90, 0xa0, 0x67, 0x2a, 0xa1, 0x4f, 0xe4, 0x9c, - 0x92, 0x42, 0x7a, 0xaf, 0x86, 0x82, 0x21, 0xc9, 0xfb, 0xd0, 0xc6, 0xda, 0x24, 0xe4, 0x76, 0x40, - 0xc3, 0x13, 0x7e, 0xaa, 0x98, 0xde, 0x52, 0xd0, 0xa7, 0x08, 0x34, 0x57, 0x61, 0xe5, 0xaa, 0xcd, - 0x48, 0x46, 0x9b, 0x7f, 0x69, 0xc0, 0xf2, 0x14, 0x49, 0xdf, 0x39, 0xff, 0x0d, 0x6e, 0xf6, 0xf2, - 0x4e, 0x8a, 0xb3, 0x76, 0x72, 0x0b, 0xde, 0x9e, 0xb9, 0x4c, 0xb5, 0x8d, 0x5f, 0xa9, 0x6b, 0x11, - 0xcf, 0xe1, 0x0e, 0x59, 0xd7, 0xde, 0xc2, 0xc8, 0x9f, 0x4e, 0xee, 0xaa, 0xeb, 0x0d, 0xac, 0x99, - 0x95, 0xd7, 0x78, 0x08, 0x0d, 0x54, 0x5c, 0x55, 0xb2, 0xca, 0xbb, 0x88, 0xa5, 0xe9, 0x1e, 0x58, - 0x9a, 0x5a, 0x78, 0x3f, 0xae, 0xaa, 0x54, 0x2c, 0xdd, 0x84, 0x84, 0xd2, 0x23, 0x5e, 0xac, 0xea, - 0x84, 0x05, 0xdd, 0x06, 0x21, 0xaa, 0x28, 0x38, 0xa7, 0x99, 0xfa, 0x0d, 0x34, 0x48, 0xd6, 0x76, - 0x23, 0xe7, 0xa5, 0xc0, 0x49, 0xa1, 0x95, 0x47, 0xce, 0x4b, 0x05, 0xf6, 0x43, 0x01, 0x2e, 0x2b, - 0xb0, 0x1f, 0x1e, 0x8b, 0x15, 0xe2, 0xe3, 0x90, 0xd4, 0xb1, 0x55, 0x95, 0x63, 0xcb, 0xdc, 0x13, - 0x6b, 0xc7, 0xd6, 0x18, 0x4d, 0x1a, 0xe6, 0xbf, 0x19, 0xd0, 0xca, 0xad, 0x7f, 0x56, 0xb2, 0x4f, - 0x7e, 0x0c, 0x9d, 0xc9, 0xad, 0x90, 0x3c, 0x67, 0x28, 0x5c, 0xc3, 0xb5, 0x56, 0x7a, 0x45, 0x84, - 0x25, 0xef, 0x64, 0xc9, 0xc5, 0xec, 0x92, 0xaf, 0xd8, 0xe0, 0x5d, 0xe8, 0x08, 0xea, 0x2c, 0x73, - 0xe4, 0x4e, 0x5b, 0xd2, 0xf4, 0x35, 0x7f, 0x6e, 0x40, 0x45, 0xa9, 0x82, 0xbc, 0xce, 0x53, 0x2d, - 0xf3, 0x9f, 0x2b, 0xd0, 0xcc, 0xae, 0x26, 0x73, 0x4f, 0x62, 0xe4, 0xee, 0x49, 0xf4, 0x46, 0x0b, - 0x99, 0x8d, 0xae, 0xc3, 0x7c, 0x38, 0x1e, 0x0d, 0x68, 0x62, 0x47, 0x43, 0x9b, 0x86, 0x3c, 0xf1, - 0xa9, 0x5c, 0x75, 0xd1, 0xea, 0x48, 0xc4, 0xf3, 0xe1, 0x9e, 0x04, 0x67, 0xb6, 0x55, 0x9a, 0xbd, - 0xad, 0x72, 0x76, 0x5b, 0x53, 0xf2, 0xae, 0x5c, 0x92, 0xf7, 0xdb, 0x50, 0x57, 0x07, 0xbb, 0xbe, - 0x87, 0xe2, 0x2b, 0x5a, 0x35, 0x09, 0x98, 0x3e, 0x7f, 0xab, 0x5d, 0x1d, 0x10, 0xeb, 0x33, 0x4e, - 0xc4, 0x27, 0xf7, 0x88, 0xef, 0x41, 0x09, 0x8b, 0xfa, 0x06, 0x2a, 0x47, 0x37, 0x1b, 0x1f, 0xb1, - 0x9a, 0x47, 0xac, 0x18, 0xce, 0x67, 0x78, 0x5d, 0x89, 0xa5, 0x48, 0xcd, 0xaa, 0xf8, 0x0c, 0x2f, - 0x94, 0xdf, 0x82, 0x9a, 0x3c, 0x42, 0x50, 0x65, 0x48, 0xd1, 0xaa, 0x62, 0xfb, 0xc0, 0xcb, 0x08, - 0xa3, 0x9d, 0x15, 0x06, 0xf9, 0x6d, 0x58, 0x16, 0x3c, 0x1a, 0xd0, 0x13, 0xe4, 0x94, 0xed, 0x87, - 0xb6, 0x47, 0x87, 0xce, 0x38, 0xe0, 0xb6, 0x3b, 0xc4, 0xc2, 0xa3, 0x64, 0x2d, 0x8d, 0xfc, 0x70, - 0x5b, 0x10, 0x1c, 0xb3, 0x83, 0x70, 0x57, 0x62, 0x77, 0x86, 0xe8, 0xdf, 0xf0, 0x09, 0x45, 0x34, - 0x1c, 0x32, 0xca, 0xb1, 0x0a, 0x29, 0x59, 0x0d, 0x84, 0x3d, 0x47, 0xd0, 0x84, 0x44, 0xcd, 0x3d, - 0x9f, 0x21, 0x91, 0x1e, 0x61, 0xe6, 0x99, 0x06, 0x79, 0xc3, 0x33, 0x8d, 0xec, 0x5d, 0xd5, 0xc2, - 0xd4, 0x5d, 0xd5, 0x1a, 0x74, 0x95, 0xd4, 0x26, 0xf2, 0x59, 0x44, 0x21, 0xb4, 0x25, 0xbc, 0xaf, - 0xa5, 0xf4, 0x1e, 0xb4, 0xf5, 0xc1, 0xbd, 0x12, 0xd6, 0x12, 0xd2, 0xa9, 0xe3, 0xfc, 0x3d, 0x29, - 0xb2, 0x87, 0x93, 0xe3, 0xfd, 0x38, 0x72, 0x4f, 0xd5, 0xf3, 0x86, 0x85, 0x7c, 0xcc, 0xda, 0x13, - 0xa8, 0xf4, 0x84, 0x5f, 0x34, 0x88, 0x05, 0x8b, 0xe8, 0xa1, 0x32, 0x29, 0x33, 0x9a, 0xe9, 0x4d, - 0xf4, 0xc3, 0xab, 0xf9, 0x93, 0x65, 0x21, 0xf0, 0xc9, 0x11, 0x35, 0x9a, 0x2c, 0x19, 0x5e, 0x82, - 0x99, 0xbf, 0x34, 0x60, 0x3e, 0x7b, 0x5a, 0xb3, 0xa7, 0xf3, 0x82, 0x53, 0x27, 0x8e, 0x69, 0x68, - 0x3b, 0xfa, 0x1a, 0xa5, 0x26, 0x01, 0x5b, 0x78, 0x8c, 0x8c, 0x51, 0xd7, 0x76, 0x23, 0x4f, 0xfb, - 0xf1, 0x3a, 0x42, 0x76, 0x22, 0x4f, 0x04, 0x6c, 0xf9, 0xa2, 0xcd, 0x1e, 0x51, 0xc6, 0x44, 0xca, - 0x22, 0x83, 0x56, 0x13, 0x81, 0x87, 0x12, 0x96, 0x73, 0x9a, 0xfa, 0x92, 0x52, 0x3a, 0x4d, 0xf3, - 0x21, 0x94, 0xfa, 0xb1, 0x83, 0xb9, 0xb9, 0xd2, 0x0a, 0xb9, 0x00, 0xd5, 0xca, 0xa8, 0x61, 0x21, - 0xe7, 0x13, 0xf6, 0xa0, 0x21, 0xfa, 0xb1, 0xe7, 0x43, 0xfd, 0x2a, 0xe1, 0x92, 0x8b, 0x33, 0xa1, - 0xcc, 0x04, 0xc9, 0xf4, 0x9d, 0xb7, 0xe8, 0x67, 0x49, 0x94, 0xf9, 0xcb, 0x22, 0xf4, 0x9e, 0x46, - 0x27, 0x98, 0xab, 0x8c, 0x07, 0x42, 0x4d, 0x1c, 0x57, 0x1d, 0xf2, 0x3b, 0xe9, 0x25, 0xbd, 0x91, - 0xbf, 0xa4, 0x9f, 0xd8, 0xb4, 0x7a, 0x62, 0x91, 0xda, 0xf4, 0xd4, 0x7d, 0x15, 0x59, 0x85, 0xa6, - 0x1f, 0xc6, 0x63, 0x6e, 0xe7, 0xbc, 0x22, 0x20, 0xec, 0x10, 0x7d, 0xc8, 0x84, 0x22, 0x1b, 0x01, - 0x14, 0x05, 0x3a, 0x9f, 0xbb, 0xd0, 0x51, 0xcb, 0xb2, 0x87, 0x49, 0x34, 0x9a, 0x78, 0x9a, 0x96, - 0x02, 0x3f, 0x4e, 0xa2, 0xd1, 0x31, 0xbe, 0xbd, 0xd3, 0x74, 0xe3, 0x90, 0xfb, 0x81, 0xad, 0x2e, - 0x41, 0x4b, 0x56, 0x5b, 0xc1, 0x3f, 0x11, 0xe0, 0x63, 0x26, 0xbc, 0x81, 0x98, 0x6d, 0xe2, 0x77, - 0x84, 0xd3, 0x53, 0x5e, 0x47, 0x2c, 0x34, 0xe3, 0x75, 0x46, 0xce, 0x4b, 0x81, 0x58, 0xc5, 0xb7, - 0x78, 0x70, 0x85, 0x8f, 0x29, 0xf0, 0x8b, 0x9c, 0x23, 0x69, 0xe4, 0x1d, 0xc9, 0x3d, 0xa8, 0xb2, - 0x68, 0x9c, 0xb8, 0x94, 0xf5, 0x9a, 0xf9, 0x1b, 0xff, 0x8c, 0x00, 0x2d, 0x4d, 0x63, 0xfe, 0xbd, - 0x01, 0x8b, 0xb3, 0x24, 0x42, 0x3e, 0x80, 0x12, 0x7a, 0x30, 0x43, 0xe9, 0x7f, 0x7a, 0xbc, 0x37, - 0x5b, 0x7a, 0x16, 0x52, 0x93, 0x7b, 0xd0, 0x60, 0x8c, 0xdb, 0xd1, 0x98, 0xc7, 0x63, 0x3e, 0xfb, - 0xf9, 0x03, 0x30, 0xc6, 0x9f, 0x4b, 0x3c, 0xd9, 0x86, 0x79, 0x25, 0x5e, 0x8c, 0xbd, 0xa7, 0x7e, - 0xc8, 0x75, 0xed, 0x95, 0x66, 0x3e, 0xd2, 0x62, 0xc5, 0x1c, 0xfb, 0x7e, 0xc8, 0xad, 0x4e, 0x92, - 0x6b, 0x33, 0xf3, 0x8f, 0xa0, 0x9d, 0x27, 0xf9, 0x96, 0xb7, 0x9f, 0xd3, 0x8e, 0x43, 0x9e, 0x59, - 0xbe, 0xd2, 0x71, 0x98, 0x7f, 0x00, 0x4b, 0xb3, 0x98, 0xc2, 0xc8, 0x2e, 0xb4, 0x59, 0x0e, 0xa2, - 0x12, 0xa5, 0x77, 0xae, 0xe3, 0xa5, 0x35, 0xd5, 0xc7, 0xfc, 0xf7, 0x02, 0xcc, 0x2b, 0xc2, 0x9d, - 0x89, 0x74, 0xb0, 0x7c, 0xd0, 0xad, 0x54, 0x53, 0x0d, 0x5d, 0x3e, 0x68, 0x8c, 0x52, 0xd6, 0x0d, - 0x58, 0xc8, 0x50, 0xa7, 0xfa, 0x2a, 0xed, 0x69, 0x7e, 0x82, 0xd2, 0x2a, 0xab, 0x8f, 0xbf, 0x8b, - 0x99, 0xe3, 0x6f, 0xe1, 0xc3, 0xa3, 0xd1, 0x88, 0x86, 0x5c, 0x9f, 0x7c, 0xa4, 0x6d, 0xf2, 0x0e, - 0xd4, 0x9d, 0x84, 0xfb, 0x43, 0xc7, 0xe5, 0xfa, 0x6c, 0x71, 0x02, 0x10, 0xa9, 0x67, 0xda, 0xb0, - 0x4f, 0x1d, 0xa6, 0xf3, 0x8d, 0x56, 0x0a, 0xdd, 0x77, 0xd8, 0x29, 0xf9, 0x0e, 0x74, 0x4e, 0x68, - 0x48, 0x13, 0x87, 0x53, 0x4f, 0xbd, 0x9e, 0x91, 0x27, 0x8f, 0xed, 0x14, 0x2c, 0x1f, 0xcd, 0x4c, - 0x1b, 0x71, 0xed, 0x92, 0x11, 0x4f, 0x3b, 0x82, 0xfa, 0xb4, 0x23, 0x30, 0xff, 0xd1, 0x90, 0x89, - 0xec, 0x9e, 0xe7, 0xf3, 0x99, 0xde, 0x6c, 0x13, 0x96, 0x3c, 0x1a, 0x50, 0x4e, 0xed, 0xf4, 0x09, - 0xcb, 0xe4, 0x45, 0x4f, 0xdd, 0x5a, 0x90, 0xc8, 0x23, 0x85, 0x93, 0x0b, 0x7b, 0x02, 0x8b, 0xaa, - 0x4f, 0x10, 0x9d, 0x64, 0xba, 0x48, 0x85, 0x7e, 0x2b, 0xcd, 0xf4, 0x90, 0x26, 0x6b, 0x8d, 0x44, - 0x76, 0x7b, 0x2a, 0x7b, 0xc9, 0xc1, 0xee, 0x40, 0xcb, 0xa3, 0x8c, 0x27, 0x63, 0x97, 0xdb, 0x8c, - 0x06, 0x43, 0xf5, 0x08, 0xb6, 0xa9, 0x81, 0x7d, 0x1a, 0x0c, 0xcd, 0x3f, 0x84, 0xae, 0x45, 0x5f, - 0x24, 0x3e, 0xe7, 0x54, 0xbe, 0x99, 0x39, 0xd8, 0x25, 0xf7, 0x61, 0x31, 0x7d, 0x3b, 0x11, 0x0d, - 0x6d, 0xfd, 0xad, 0x1e, 0x51, 0x10, 0xdd, 0x7e, 0x3e, 0xfc, 0x44, 0x7d, 0x09, 0xd1, 0xa6, 0x54, - 0x32, 0xc9, 0x4e, 0xdb, 0xe6, 0x37, 0x06, 0x74, 0xf6, 0x5e, 0xf2, 0xc4, 0x79, 0x3c, 0x0e, 0x02, - 0x19, 0xc5, 0xc8, 0x8e, 0x08, 0xd9, 0x6a, 0x56, 0x5b, 0xbd, 0x50, 0x90, 0xaa, 0xdd, 0x9b, 0x18, - 0x6d, 0x7e, 0x55, 0xc2, 0x6c, 0xb3, 0x10, 0x36, 0x39, 0x6b, 0x28, 0x5c, 0x7d, 0xd6, 0xd0, 0x83, - 0x9a, 0xc3, 0x6c, 0x7f, 0x38, 0xc9, 0x7c, 0x2b, 0x0e, 0x3b, 0x18, 0x1e, 0x33, 0x91, 0x66, 0xca, - 0x54, 0x5a, 0x9e, 0x1d, 0xa1, 0xe7, 0x50, 0x6a, 0xd9, 0x41, 0xc4, 0x11, 0xc2, 0xd1, 0x1d, 0x2c, - 0x43, 0x6d, 0xe8, 0x87, 0x3e, 0x3b, 0xa5, 0x1e, 0x2a, 0x67, 0xcd, 0x4a, 0xdb, 0x99, 0x67, 0x88, - 0xe3, 0xb1, 0xef, 0xe9, 0x77, 0x39, 0x12, 0xf4, 0xc9, 0xd8, 0xf7, 0xcc, 0x17, 0x30, 0x7f, 0x49, - 0x5e, 0xdf, 0x36, 0xfc, 0x89, 0x55, 0xbf, 0x38, 0x8d, 0xe4, 0x15, 0x12, 0xcd, 0xd7, 0x61, 0x1d, - 0x44, 0x88, 0xd1, 0x55, 0x25, 0xf6, 0x45, 0x01, 0xea, 0x87, 0xfe, 0x49, 0x82, 0x6f, 0x3a, 0xf1, - 0xe1, 0x45, 0x42, 0x1d, 0xae, 0xde, 0x2b, 0xd4, 0x2d, 0xdd, 0x24, 0x9b, 0x93, 0xd7, 0xc8, 0xf2, - 0xaa, 0x29, 0x95, 0x41, 0xda, 0x5b, 0xd7, 0x2d, 0xe9, 0x3b, 0xe5, 0x7b, 0x50, 0xa7, 0x9e, 0xcf, - 0x6d, 0xe5, 0xe0, 0x8b, 0xd3, 0x0f, 0x62, 0x85, 0x55, 0x58, 0x35, 0x41, 0x82, 0x81, 0xf9, 0x5d, - 0x68, 0xf2, 0x64, 0x1c, 0xba, 0x68, 0x99, 0x3c, 0x52, 0x7e, 0xa3, 0x91, 0xc2, 0x8e, 0x23, 0xf2, - 0x21, 0x34, 0xb2, 0x8e, 0x6e, 0x4a, 0xe3, 0x2f, 0xf9, 0x2f, 0x2b, 0x4b, 0x2d, 0x2c, 0x3f, 0x55, - 0xf5, 0xf4, 0xfe, 0x42, 0x58, 0x59, 0x5b, 0x83, 0xa5, 0x34, 0xc9, 0x0f, 0xe1, 0x26, 0x15, 0xba, - 0x68, 0x0f, 0xc7, 0x41, 0x60, 0x2b, 0xc1, 0x09, 0xee, 0xcb, 0x47, 0xcd, 0x75, 0x6b, 0x91, 0xe6, - 0x55, 0xf5, 0x48, 0xe0, 0xd6, 0x9f, 0xc1, 0xea, 0xab, 0x5e, 0xde, 0x93, 0x0e, 0x34, 0x3e, 0xc1, - 0x2b, 0x32, 0x7c, 0x60, 0xde, 0x9d, 0x23, 0x2d, 0xa8, 0xff, 0xd4, 0xf1, 0xf9, 0x56, 0x1c, 0x07, - 0x17, 0x5d, 0x83, 0x00, 0x54, 0x1e, 0xa3, 0xd2, 0x74, 0x0b, 0xeb, 0x1f, 0xc3, 0xca, 0xf5, 0x2f, - 0xe3, 0xc9, 0x3c, 0xb4, 0xd2, 0xce, 0xbb, 0x51, 0x28, 0xc6, 0x5b, 0x82, 0xf9, 0xcc, 0x04, 0xf2, - 0x0d, 0x71, 0xd7, 0x58, 0xff, 0x5d, 0xe8, 0x4c, 0xa5, 0xcf, 0xa4, 0x01, 0xd5, 0x4f, 0x9e, 0x3d, - 0x79, 0xf6, 0xfc, 0xa7, 0xcf, 0xba, 0x73, 0xa4, 0x0a, 0xc5, 0xa7, 0x9f, 0x7d, 0x20, 0x17, 0xd0, - 0x7f, 0xb6, 0x75, 0x74, 0xf4, 0xfb, 0xdd, 0x02, 0xa9, 0x41, 0xe9, 0xb3, 0xfe, 0xf1, 0x6e, 0xb7, - 0xb8, 0xbe, 0x9a, 0x3e, 0x80, 0x17, 0xd9, 0x61, 0x0d, 0x4a, 0xfd, 0x9d, 0x2d, 0xd1, 0xad, 0x06, - 0xa5, 0xc7, 0x07, 0x4f, 0xf7, 0xba, 0xc6, 0xfa, 0x2d, 0x68, 0x64, 0x6a, 0x57, 0x52, 0x81, 0xc2, - 0xa7, 0x3f, 0xe8, 0xce, 0xe1, 0xef, 0x66, 0xd7, 0x58, 0xbf, 0x0d, 0x35, 0x9d, 0x59, 0x88, 0x29, - 0xa4, 0xae, 0xcb, 0x79, 0x8f, 0xc6, 0x62, 0x81, 0xeb, 0xd0, 0x9d, 0x56, 0x24, 0xd1, 0xf9, 0xf0, - 0xbe, 0x1c, 0xe4, 0xf0, 0x07, 0x5d, 0x03, 0x7f, 0x37, 0xbb, 0x85, 0xcd, 0x6f, 0x0a, 0x50, 0x51, - 0x3e, 0xe2, 0x43, 0x50, 0xff, 0xc8, 0x20, 0x4b, 0x53, 0x2f, 0x0e, 0x25, 0xd3, 0x97, 0x6f, 0x4c, - 0x83, 0xd5, 0x11, 0xc3, 0xdc, 0x7d, 0x83, 0x1c, 0xc1, 0x02, 0x1e, 0x56, 0x65, 0x8f, 0x8c, 0x9e, - 0xc7, 0x24, 0xd5, 0xa7, 0x4b, 0xe7, 0x5b, 0xcb, 0xcb, 0xb3, 0x50, 0x99, 0x11, 0x4f, 0x61, 0x69, - 0xa6, 0xc8, 0xc8, 0x7b, 0xaf, 0xf3, 0xdf, 0x8c, 0xe5, 0xf7, 0x5f, 0x41, 0x25, 0x67, 0x5a, 0x33, - 0xee, 0x1b, 0xe4, 0xc7, 0x50, 0x8d, 0x25, 0x11, 0xb9, 0x31, 0xd5, 0x4b, 0x8f, 0x76, 0xf3, 0x12, - 0x5c, 0xaf, 0x54, 0xf4, 0x76, 0xe5, 0xc1, 0x27, 0xc9, 0xbc, 0x80, 0xca, 0x1e, 0x9c, 0x4e, 0x7a, - 0x4f, 0x9d, 0x90, 0x9a, 0x73, 0x9b, 0xff, 0x20, 0x9d, 0x75, 0xf6, 0xf8, 0x86, 0x7c, 0x06, 0x55, - 0x75, 0xa2, 0x45, 0xd2, 0x5d, 0x5c, 0x7b, 0xf2, 0xb6, 0x7c, 0xf7, 0x55, 0x64, 0xe9, 0x6a, 0x7f, - 0x0f, 0x4a, 0xcc, 0x39, 0xa7, 0xc4, 0xbc, 0xa2, 0x47, 0xe6, 0x88, 0x6b, 0xf9, 0xce, 0xb5, 0x34, - 0x7a, 0xc8, 0xed, 0xcd, 0x5f, 0xff, 0x55, 0xcd, 0xf8, 0xe2, 0xab, 0x15, 0xe3, 0xcb, 0xaf, 0x56, - 0x8c, 0xff, 0xfa, 0x6a, 0xc5, 0xf8, 0xd5, 0xd7, 0x2b, 0x73, 0x7f, 0xf1, 0xf5, 0xca, 0xdc, 0x97, - 0x5f, 0xaf, 0xcc, 0xfd, 0xfa, 0xeb, 0x95, 0x39, 0xe8, 0x46, 0xc9, 0xc9, 0x06, 0xf7, 0xcf, 0xce, - 0x37, 0xce, 0xce, 0xf1, 0xcf, 0x38, 0x83, 0x0a, 0xfe, 0x3c, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x18, 0x57, 0x55, 0x72, 0x10, 0x34, 0x00, 0x00, + // 4865 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7b, 0xcd, 0x6f, 0x1c, 0x47, + 0x76, 0x38, 0x7b, 0xbe, 0xe7, 0xcd, 0x27, 0x8b, 0xa4, 0x34, 0xa6, 0x2d, 0x8a, 0x6e, 0xd9, 0x5a, + 0xfe, 0xe8, 0x15, 0xd7, 0x4b, 0xd9, 0x5a, 0xfd, 0xe2, 0x0d, 0x0c, 0x7e, 0xc9, 0xa4, 0x25, 0x4a, + 0x4c, 0x0f, 0xed, 0x45, 0x1c, 0x04, 0x8d, 0x9e, 0xee, 0x1a, 0xb2, 0x97, 0x3d, 0xdd, 0xbd, 0x5d, + 0x35, 0x94, 0xe8, 0x43, 0x0e, 0x39, 0xe4, 0xb6, 0xd8, 0x4d, 0x90, 0x43, 0xfe, 0x81, 0x00, 0x39, + 0x24, 0x40, 0xae, 0x39, 0x25, 0x87, 0x04, 0x31, 0x90, 0x00, 0x31, 0x90, 0x1c, 0xf6, 0x96, 0xc0, + 0x46, 0xf2, 0x47, 0x04, 0x58, 0x20, 0xa8, 0x57, 0x55, 0x3d, 0xdd, 0xc3, 0x21, 0x25, 0x39, 0xc1, + 0x9e, 0x38, 0xf5, 0xde, 0xab, 0xae, 0x57, 0xef, 0xfb, 0x55, 0x15, 0x01, 0x06, 0x49, 0x3c, 0xd8, + 0x88, 0x93, 0x88, 0x47, 0xa4, 0x32, 0x70, 0xdc, 0xb3, 0x71, 0xbc, 0xdc, 0x3a, 0x3b, 0x4f, 0x62, + 0x57, 0x83, 0x97, 0x5b, 0x34, 0x49, 0xa2, 0x94, 0x6a, 0xb9, 0x39, 0xa2, 0xdc, 0x49, 0x47, 0x84, + 0x86, 0x6e, 0x72, 0x11, 0x73, 0x3f, 0x0a, 0x53, 0xd8, 0xe2, 0x49, 0x74, 0x12, 0xe1, 0xcf, 0x1f, + 0x88, 0x5f, 0x0a, 0xda, 0x49, 0xc6, 0x8c, 0xe3, 0x4f, 0x09, 0x30, 0xff, 0xd2, 0x80, 0xb7, 0x8e, + 0x12, 0x1a, 0x3b, 0x09, 0xed, 0x87, 0x4e, 0xcc, 0x4e, 0x23, 0xbe, 0x8d, 0x0c, 0x58, 0xf4, 0x67, + 0x63, 0xca, 0x38, 0x79, 0x08, 0x05, 0x7e, 0xd1, 0x33, 0x56, 0x8d, 0xb5, 0xf6, 0xe6, 0xda, 0x86, + 0x64, 0x6e, 0xe3, 0xba, 0x19, 0xc7, 0x17, 0x31, 0xb5, 0x0a, 0xfc, 0x82, 0xac, 0x41, 0x35, 0xa1, + 0x27, 0x7e, 0x14, 0xb2, 0x5e, 0x61, 0xb5, 0xb8, 0xd6, 0xd8, 0x6c, 0x6f, 0x28, 0xae, 0x2d, 0x04, + 0x5b, 0x1a, 0x4d, 0xd6, 0xa0, 0x1b, 0x50, 0x87, 0x51, 0xdb, 0x0f, 0x6d, 0x46, 0xdd, 0x28, 0xf4, + 0x58, 0xaf, 0xb8, 0x6a, 0xac, 0x95, 0xac, 0x36, 0xc2, 0x0f, 0xc2, 0xbe, 0x84, 0x9a, 0xff, 0x66, + 0xc0, 0xad, 0x2b, 0x16, 0x67, 0x71, 0x14, 0x32, 0x4a, 0x1e, 0x64, 0xf8, 0xbd, 0x7b, 0x2d, 0xbf, + 0x7b, 0xe7, 0x34, 0x9c, 0x70, 0x7b, 0x17, 0x2a, 0x92, 0x9d, 0x5e, 0x61, 0xd5, 0x98, 0xc1, 0xac, + 0xc2, 0x92, 0x77, 0xa0, 0x8c, 0xaa, 0x40, 0x06, 0x05, 0x99, 0x56, 0xcc, 0x9e, 0xf8, 0x6b, 0x49, + 0x24, 0xb9, 0x07, 0x0b, 0x81, 0xc3, 0xb8, 0xad, 0xb6, 0xc5, 0xec, 0x73, 0x27, 0xf0, 0xbd, 0x5e, + 0x69, 0xd5, 0x58, 0xab, 0x59, 0x5d, 0x81, 0x7a, 0x82, 0x1b, 0x63, 0x9f, 0x0b, 0xb8, 0xf9, 0x9f, + 0x55, 0x00, 0xc9, 0xd4, 0x21, 0xe5, 0x0e, 0xb9, 0x05, 0xe0, 0x06, 0x63, 0xc6, 0x69, 0x62, 0xfb, + 0x1e, 0xee, 0xa5, 0x64, 0xd5, 0x15, 0xe4, 0xc0, 0x23, 0xdf, 0x83, 0x8e, 0x46, 0x9f, 0xd3, 0x84, + 0x69, 0x9e, 0xeb, 0x56, 0x5b, 0x81, 0x3f, 0x97, 0x50, 0xf1, 0x9d, 0xc1, 0x84, 0xa6, 0x81, 0x34, + 0xf5, 0x41, 0x8a, 0xee, 0x41, 0x55, 0xe3, 0x9a, 0xab, 0xc6, 0x5a, 0xd9, 0xd2, 0x43, 0x62, 0x42, + 0x79, 0xe8, 0x07, 0x94, 0xf5, 0x4a, 0xa8, 0xb8, 0xa6, 0x96, 0xe3, 0x23, 0x3f, 0xa0, 0x96, 0x44, + 0x91, 0x1f, 0x00, 0x88, 0x1f, 0xb6, 0x1f, 0x7a, 0xf4, 0x45, 0xaf, 0x85, 0xd2, 0xe8, 0x6a, 0x42, + 0xb1, 0x0d, 0x24, 0xae, 0x0b, 0x9a, 0x03, 0x41, 0x42, 0xee, 0x40, 0x8b, 0x71, 0x27, 0xe1, 0x29, + 0x43, 0x65, 0xdc, 0x58, 0x13, 0x81, 0x9a, 0xa7, 0xdb, 0xd0, 0xa0, 0xa1, 0x97, 0x92, 0x54, 0x90, + 0x04, 0x68, 0xe8, 0x69, 0x82, 0x35, 0xa8, 0x32, 0xf7, 0x94, 0x8e, 0x1c, 0xd6, 0xab, 0x2a, 0xab, + 0x52, 0x6b, 0xf6, 0x11, 0x6c, 0x69, 0x34, 0xb9, 0x0f, 0x4d, 0xf9, 0x53, 0xb1, 0xd8, 0xbe, 0x82, + 0xc5, 0x86, 0xa4, 0x92, 0x4c, 0x2e, 0x43, 0xdd, 0x67, 0x76, 0xe2, 0x3c, 0xb7, 0xcf, 0xce, 0x7b, + 0x35, 0x54, 0x57, 0xd5, 0x67, 0x96, 0xf3, 0xfc, 0xf1, 0xb9, 0xd8, 0xb1, 0x40, 0x24, 0x4e, 0x78, + 0x42, 0x59, 0xaf, 0x8e, 0xab, 0xa7, 0x9f, 0xb3, 0x9c, 0xe7, 0x96, 0x40, 0x58, 0xf5, 0x44, 0xfd, + 0x62, 0xe4, 0x21, 0x74, 0xd2, 0x09, 0x8a, 0x89, 0xce, 0x15, 0x4c, 0xb4, 0xf4, 0x2c, 0xc9, 0x06, + 0x81, 0x92, 0xe7, 0x05, 0xac, 0x07, 0xab, 0xc6, 0x5a, 0xd3, 0xc2, 0xdf, 0xe4, 0x87, 0xd0, 0xf0, + 0xbc, 0x40, 0x7e, 0x87, 0xb2, 0x5e, 0xf7, 0x8a, 0x2f, 0x81, 0xe7, 0x05, 0x07, 0x92, 0x46, 0x88, + 0x5c, 0xa2, 0xed, 0x84, 0xb2, 0x71, 0xc0, 0x7b, 0xf3, 0x68, 0x03, 0xcd, 0x81, 0xf6, 0x99, 0x71, + 0xc0, 0xc9, 0x07, 0xd0, 0x70, 0x62, 0x3f, 0x15, 0x39, 0x41, 0xd7, 0x59, 0xd8, 0xd0, 0xf1, 0x67, + 0xeb, 0xe8, 0x40, 0xc9, 0xde, 0x02, 0x27, 0xf6, 0xb5, 0x1e, 0xee, 0x43, 0x2d, 0x8e, 0x02, 0xdf, + 0xf5, 0x29, 0xeb, 0x2d, 0xa0, 0x28, 0x6e, 0xa6, 0xde, 0x16, 0x38, 0x2e, 0x1d, 0xd1, 0x90, 0x1f, + 0x09, 0x82, 0x0b, 0x2b, 0x25, 0x24, 0x1f, 0xc0, 0x8d, 0x90, 0x3e, 0xb7, 0xdd, 0x28, 0x08, 0x1c, + 0x11, 0xad, 0x98, 0x4d, 0x43, 0x67, 0x10, 0x50, 0xaf, 0xb7, 0x88, 0x8c, 0x2d, 0x86, 0xf4, 0xf9, + 0x4e, 0x8a, 0xdc, 0x93, 0x38, 0xa5, 0x13, 0xfe, 0x22, 0x14, 0x3a, 0x59, 0xd2, 0x3a, 0x39, 0x7e, + 0x11, 0x3e, 0x3e, 0x27, 0xeb, 0x50, 0xf5, 0x06, 0xf6, 0xc8, 0x89, 0x59, 0xef, 0x06, 0x72, 0x31, + 0x9f, 0x72, 0xe1, 0xf3, 0x64, 0x77, 0xfb, 0xd0, 0x89, 0xad, 0x8a, 0x37, 0x38, 0x74, 0x62, 0x46, + 0xee, 0x42, 0x69, 0x14, 0x79, 0xb4, 0x77, 0x13, 0x77, 0x48, 0x34, 0xa1, 0x72, 0xbc, 0xc8, 0xa3, + 0x16, 0xe2, 0xc9, 0x7b, 0x50, 0x51, 0x3a, 0xee, 0xe1, 0x27, 0x17, 0xf2, 0x94, 0x52, 0xcd, 0x8a, + 0x44, 0x18, 0xac, 0x12, 0x31, 0xf3, 0xbf, 0xa4, 0xbd, 0x37, 0xa4, 0xc1, 0x4a, 0x50, 0xdf, 0xff, + 0x92, 0x7e, 0x5a, 0xaa, 0x15, 0xbb, 0x25, 0xab, 0x14, 0x3b, 0xfc, 0xd4, 0x3c, 0x81, 0x46, 0xe6, + 0x1b, 0xe4, 0x4d, 0xa8, 0x4b, 0x8f, 0x38, 0xa3, 0x32, 0x64, 0x35, 0xad, 0x1a, 0x02, 0x1e, 0xd3, + 0x0b, 0x72, 0x13, 0xaa, 0xc2, 0x13, 0x04, 0xaa, 0x80, 0xa8, 0x0a, 0x0d, 0x3d, 0x81, 0x48, 0x9d, + 0xb3, 0x78, 0xa5, 0x73, 0x9a, 0x7f, 0x64, 0x40, 0xfd, 0x58, 0x48, 0x0f, 0xe3, 0xc9, 0x6d, 0x68, + 0xc4, 0xa7, 0x17, 0xcc, 0x77, 0x9d, 0x40, 0x07, 0x94, 0xa2, 0x05, 0x1a, 0x74, 0x20, 0x24, 0x5c, + 0x73, 0x13, 0xf7, 0xc1, 0x07, 0x2f, 0xa2, 0x04, 0x17, 0x2b, 0x59, 0xe9, 0x58, 0x30, 0xc9, 0x23, + 0xee, 0x04, 0xf6, 0xd9, 0xb9, 0x8e, 0xca, 0x35, 0x04, 0x3c, 0x3e, 0xc7, 0xdd, 0x4b, 0xe4, 0xe0, + 0x82, 0x63, 0xb8, 0xc0, 0xdd, 0x23, 0x68, 0x5b, 0x40, 0xcc, 0x5f, 0x17, 0xa0, 0x24, 0x18, 0x13, + 0x16, 0x1d, 0x3a, 0x23, 0x8a, 0x8b, 0xd7, 0x2d, 0xfc, 0x4d, 0x6e, 0x40, 0x85, 0x9d, 0x3a, 0x9b, + 0x1f, 0x3e, 0xd0, 0x3b, 0x94, 0xa3, 0xbc, 0x5c, 0x8a, 0x57, 0xcb, 0xa5, 0x94, 0x93, 0xcb, 0xff, + 0x4d, 0x7c, 0xc9, 0x8a, 0xa2, 0x7a, 0x9d, 0x28, 0x6a, 0xd7, 0x8b, 0xa2, 0x3e, 0x2d, 0x0a, 0xb2, + 0x09, 0x0d, 0x2e, 0x54, 0x62, 0x8b, 0xc4, 0xc2, 0x7a, 0xad, 0xbc, 0xb9, 0xa6, 0xda, 0xb2, 0x80, + 0xeb, 0x9f, 0x8c, 0xb4, 0xa1, 0xe0, 0x0e, 0x31, 0x0a, 0xd4, 0xad, 0x82, 0x3b, 0x14, 0x52, 0x44, + 0x33, 0x6b, 0xe0, 0xd7, 0xf1, 0xb7, 0xe0, 0xca, 0xf5, 0xe3, 0x53, 0x91, 0x2c, 0xce, 0x31, 0x90, + 0x37, 0xad, 0x9a, 0x04, 0x1c, 0x9c, 0x9b, 0x3f, 0x2f, 0x40, 0x4d, 0x87, 0x06, 0xf2, 0x1e, 0x80, + 0x58, 0xdb, 0x96, 0xe6, 0x63, 0xcc, 0x30, 0x9f, 0xfa, 0x48, 0xd1, 0x32, 0x41, 0xec, 0x39, 0x29, + 0x71, 0x61, 0x16, 0xb1, 0xc0, 0x4b, 0xe2, 0x4c, 0x54, 0x2e, 0x5e, 0x1f, 0x95, 0xf3, 0x41, 0xb4, + 0xf4, 0x2a, 0x41, 0x34, 0x8d, 0x61, 0x72, 0x4e, 0xe5, 0x6a, 0xa7, 0xd4, 0x81, 0x4d, 0xce, 0xd4, + 0x41, 0xb4, 0xbc, 0x5a, 0xd4, 0x41, 0xd4, 0x7c, 0x17, 0x3a, 0x53, 0xe1, 0x49, 0x90, 0xf9, 0xe1, + 0x30, 0x52, 0x0e, 0x88, 0xbf, 0xcd, 0x27, 0x00, 0x7d, 0xee, 0x70, 0xb6, 0x1d, 0x44, 0xee, 0xd9, + 0xcb, 0xfd, 0xe7, 0x16, 0xc0, 0x4f, 0x59, 0x14, 0xda, 0xa8, 0x39, 0x65, 0xcc, 0x75, 0x01, 0x41, + 0xad, 0x9a, 0x3f, 0x82, 0x3a, 0x7e, 0x0d, 0x95, 0xb0, 0x0e, 0x95, 0x81, 0xf8, 0xaa, 0x56, 0x40, + 0x1a, 0x87, 0x26, 0x0b, 0x5a, 0x8a, 0xc2, 0xfc, 0x6b, 0x03, 0xda, 0xe9, 0xcc, 0x34, 0x33, 0xbc, + 0xb2, 0x1f, 0xbd, 0x01, 0x35, 0x61, 0x21, 0x36, 0x0d, 0x5d, 0xe5, 0xb9, 0x55, 0x31, 0xde, 0x0b, + 0xdd, 0x14, 0x15, 0x25, 0xbe, 0xf2, 0x5a, 0x44, 0x3d, 0x4b, 0xfc, 0xbc, 0x3d, 0x95, 0xf3, 0xf6, + 0x24, 0x44, 0xe1, 0x87, 0x81, 0x1f, 0x52, 0x5b, 0x28, 0x1f, 0xfd, 0xa7, 0x69, 0x81, 0x04, 0xed, + 0x3a, 0xdc, 0x31, 0xff, 0xb0, 0x00, 0x15, 0xa9, 0x73, 0x61, 0xbc, 0xde, 0x40, 0x89, 0xb5, 0xe0, + 0x0d, 0xc8, 0x22, 0x94, 0xb3, 0x02, 0x92, 0x83, 0x9c, 0xc3, 0x15, 0xaf, 0x73, 0xb8, 0xd2, 0xf5, + 0x0e, 0x57, 0xbe, 0xe4, 0x70, 0xff, 0x0f, 0xba, 0xdc, 0x1f, 0x06, 0x0e, 0x3b, 0xb5, 0x13, 0x1a, + 0x07, 0xbe, 0xeb, 0x30, 0x64, 0xb8, 0x65, 0x75, 0x14, 0xdc, 0x52, 0x60, 0xc1, 0x1a, 0x13, 0x72, + 0x46, 0x97, 0x6f, 0x5a, 0x72, 0x40, 0x7e, 0x04, 0x0d, 0xfc, 0xa1, 0x72, 0x77, 0x0d, 0xf5, 0x75, + 0x23, 0xa7, 0xaf, 0x54, 0x31, 0x16, 0x20, 0x29, 0xfe, 0x36, 0x0f, 0xa1, 0x7c, 0xb0, 0x7b, 0xe8, + 0xc4, 0x82, 0xc7, 0x71, 0xcc, 0x78, 0x42, 0x9d, 0x51, 0xc6, 0x72, 0x34, 0xe8, 0xc0, 0x13, 0x41, + 0xcb, 0x8b, 0x9e, 0x87, 0x13, 0x92, 0x02, 0x92, 0x34, 0x27, 0xc0, 0x03, 0xcf, 0x7c, 0x0e, 0x4d, + 0x91, 0xcd, 0x64, 0x88, 0x70, 0xe2, 0x99, 0x36, 0xf0, 0x0e, 0x54, 0x7c, 0x4f, 0x24, 0x42, 0x55, + 0xbf, 0xb6, 0x34, 0x9b, 0xc8, 0x88, 0x55, 0xf6, 0x3d, 0x31, 0xf3, 0x1e, 0x40, 0xec, 0x24, 0xdc, + 0xc7, 0xfc, 0xaa, 0x5c, 0x75, 0x8a, 0x32, 0x43, 0x60, 0x32, 0xa8, 0xa7, 0x69, 0xf4, 0x7f, 0xb1, + 0xea, 0xf7, 0xa1, 0x82, 0xba, 0xd6, 0x2b, 0x2e, 0x66, 0x73, 0xb4, 0xde, 0x95, 0xa5, 0x68, 0xcc, + 0x23, 0xa8, 0xe9, 0x38, 0xf0, 0x1d, 0x33, 0xa4, 0x8c, 0x9a, 0x45, 0x1d, 0x35, 0xcd, 0x5d, 0x68, + 0xef, 0xa8, 0xea, 0x79, 0x17, 0xcb, 0x74, 0x51, 0xfa, 0xba, 0xe3, 0x24, 0xa1, 0x21, 0x57, 0xe5, + 0xb5, 0x1e, 0x0a, 0x4c, 0x22, 0x1b, 0x19, 0x95, 0x09, 0xf5, 0xd0, 0xfc, 0x67, 0x03, 0xca, 0x72, + 0x76, 0x17, 0x8a, 0x23, 0x76, 0xa2, 0x04, 0x21, 0x7e, 0x92, 0x6d, 0xe8, 0x4e, 0x2a, 0x76, 0x3b, + 0xdb, 0x20, 0xa4, 0xe6, 0x92, 0xe7, 0x60, 0x7f, 0x2e, 0xad, 0xd6, 0x0f, 0x3c, 0xf9, 0xd5, 0x0d, + 0xa8, 0x9d, 0x9d, 0xab, 0xb9, 0x25, 0x9c, 0x3b, 0x9f, 0x16, 0x61, 0x8f, 0xe9, 0x85, 0x9e, 0x56, + 0x3d, 0x3b, 0x97, 0xf4, 0xf7, 0xa1, 0x29, 0x7b, 0x12, 0x35, 0xa7, 0x3c, 0xab, 0x21, 0xd9, 0x9f, + 0xb3, 0x1a, 0x92, 0x0a, 0x87, 0xdb, 0x35, 0xa8, 0x78, 0x94, 0x3b, 0x7e, 0x60, 0xfe, 0x8d, 0x01, + 0x2b, 0x7d, 0xb4, 0x30, 0x19, 0x41, 0x8f, 0x1d, 0x76, 0xd6, 0xa7, 0xee, 0x38, 0xf1, 0xf9, 0xc5, + 0x4e, 0x14, 0x0e, 0x7d, 0xb1, 0x2b, 0x12, 0x07, 0x8e, 0x1f, 0x72, 0xfa, 0x82, 0xa3, 0xbf, 0xa7, + 0x6a, 0xc8, 0x84, 0xad, 0x1d, 0x19, 0x1a, 0xc2, 0x61, 0xb4, 0x3f, 0x67, 0x75, 0x53, 0x7a, 0x11, + 0x0c, 0x84, 0x2e, 0xf6, 0x60, 0x7e, 0xe4, 0xa0, 0x60, 0xce, 0xe8, 0x85, 0xed, 0xe2, 0x87, 0x95, + 0xb1, 0xa4, 0x05, 0xe3, 0x21, 0x12, 0x3c, 0xa6, 0x6a, 0xdd, 0xfd, 0x39, 0xab, 0x33, 0xca, 0x83, + 0xb6, 0x9b, 0x00, 0x93, 0x26, 0xd7, 0x0c, 0x00, 0x26, 0xcb, 0x92, 0x8f, 0xa1, 0xa1, 0x02, 0x16, + 0xbf, 0x88, 0xa9, 0xea, 0xfd, 0x56, 0x36, 0x72, 0x4d, 0xf1, 0x5e, 0x3a, 0x38, 0xa4, 0xfc, 0x34, + 0xf2, 0x2c, 0x90, 0x53, 0x44, 0xff, 0x87, 0xfd, 0x96, 0xfc, 0xc0, 0xc4, 0x96, 0x54, 0x0c, 0x7c, + 0x4c, 0x2f, 0xcc, 0x3f, 0x35, 0xa0, 0x33, 0xc5, 0x22, 0xf9, 0x04, 0x3a, 0x93, 0xef, 0xbf, 0xce, + 0xba, 0xed, 0x09, 0x1a, 0xd7, 0x7e, 0x08, 0x8d, 0x89, 0x7c, 0x74, 0x9e, 0xbd, 0x99, 0xff, 0x48, + 0xba, 0xb8, 0x05, 0xa9, 0x5c, 0x98, 0xb9, 0x03, 0x9d, 0x7e, 0x94, 0x70, 0xea, 0xf5, 0xc7, 0x03, + 0x95, 0xf1, 0xde, 0x07, 0x60, 0xe3, 0x81, 0x4e, 0x94, 0x86, 0xaa, 0x30, 0x32, 0x46, 0xa4, 0xb2, + 0x2b, 0xd3, 0x33, 0xcc, 0x7f, 0xaf, 0x40, 0x2b, 0xdf, 0xf0, 0xbf, 0xa4, 0xf9, 0xcc, 0x79, 0x64, + 0xe1, 0x6a, 0x8f, 0x2c, 0x5e, 0x5f, 0x9b, 0x95, 0x5e, 0x5e, 0x9b, 0x95, 0x2f, 0xd5, 0x66, 0xb7, + 0x44, 0xed, 0xc0, 0xa9, 0x1d, 0xf8, 0x23, 0x9f, 0xab, 0xea, 0xac, 0x2e, 0x20, 0x4f, 0x04, 0x80, + 0xac, 0x42, 0xc3, 0x8d, 0x42, 0xe9, 0xc8, 0xee, 0x05, 0x16, 0x68, 0x2d, 0x2b, 0x0b, 0x22, 0x1f, + 0x43, 0x87, 0xf1, 0x28, 0x71, 0x4e, 0xa8, 0x2d, 0x4c, 0x8f, 0x86, 0x1e, 0xd6, 0x69, 0xb9, 0xa0, + 0x8e, 0xe8, 0x6d, 0x89, 0xb5, 0xda, 0x2c, 0x37, 0xce, 0xb7, 0x87, 0x90, 0x6f, 0x0f, 0x65, 0xd4, + 0x69, 0xa4, 0xb5, 0x9a, 0x88, 0x09, 0xd1, 0x28, 0x4e, 0x28, 0x63, 0xa9, 0x8d, 0x34, 0xd1, 0x46, + 0x52, 0xc3, 0xdf, 0x99, 0xe0, 0xf1, 0x20, 0xa2, 0xe3, 0xe6, 0x01, 0xe4, 0x3d, 0x98, 0xcf, 0x7e, + 0x23, 0xa0, 0xe7, 0x34, 0xc0, 0x5e, 0xbb, 0x6c, 0x65, 0x3f, 0xfe, 0x44, 0xc0, 0xc9, 0xfd, 0xd4, + 0x0f, 0xb0, 0x9e, 0x69, 0x5f, 0xe5, 0xa7, 0xda, 0xf6, 0xd1, 0x79, 0x3e, 0x82, 0x8e, 0xc7, 0xb8, + 0x9d, 0xed, 0x00, 0x3b, 0x57, 0x77, 0x80, 0x2d, 0x8f, 0xf1, 0xad, 0x49, 0x13, 0x98, 0xb7, 0xb7, + 0xee, 0xcb, 0xed, 0x8d, 0x1c, 0x41, 0x8f, 0xa1, 0xd1, 0xda, 0x93, 0x89, 0xf6, 0x49, 0x12, 0x8d, + 0x63, 0xd6, 0x5b, 0xca, 0xb7, 0x91, 0x53, 0xc6, 0x6d, 0x2d, 0xb1, 0x3c, 0xe0, 0x13, 0x9c, 0x45, + 0xde, 0x16, 0x61, 0x10, 0xd3, 0xb8, 0x9d, 0x50, 0xc7, 0xc3, 0x16, 0xb7, 0x26, 0x82, 0x1e, 0xc2, + 0x2c, 0xea, 0x78, 0x69, 0xe3, 0x47, 0x5e, 0xd2, 0xf8, 0xbd, 0x09, 0xf5, 0x71, 0xe8, 0xff, 0x6c, + 0x4c, 0x85, 0xe5, 0x2f, 0xa0, 0x22, 0x6b, 0x12, 0x70, 0xe0, 0x89, 0x4e, 0xd3, 0x8d, 0x30, 0xb4, + 0x61, 0xb3, 0x2a, 0xaa, 0x56, 0xbd, 0xd1, 0x1d, 0x09, 0xb7, 0x34, 0xc1, 0xa7, 0xa5, 0x5a, 0xa5, + 0x5b, 0x55, 0x3d, 0xdf, 0x7f, 0x15, 0x60, 0x71, 0x3a, 0xce, 0xa2, 0xe4, 0xdf, 0x87, 0xaa, 0xb2, + 0x2e, 0x15, 0x52, 0xaf, 0x32, 0x42, 0x4d, 0x86, 0x45, 0x1b, 0x7a, 0x11, 0x67, 0x3a, 0x39, 0xe1, + 0xf8, 0x98, 0x91, 0x25, 0x10, 0xae, 0x26, 0x10, 0xb2, 0x86, 0x2a, 0xd3, 0xd0, 0x3b, 0x66, 0x69, + 0xce, 0x2e, 0x65, 0x72, 0xf6, 0xdb, 0xd0, 0x94, 0x7d, 0xc8, 0xd0, 0x0f, 0x38, 0x4d, 0xb0, 0x3c, + 0xae, 0x5b, 0xb2, 0x37, 0x79, 0x84, 0xa0, 0x99, 0xa6, 0x5b, 0x79, 0x4d, 0xd3, 0x7d, 0x06, 0x1d, + 0xa6, 0xd2, 0x89, 0x0e, 0xfb, 0x55, 0xdc, 0xe6, 0xdd, 0xc9, 0x36, 0xaf, 0xcb, 0x3e, 0x56, 0x9b, + 0x4d, 0x8d, 0xf1, 0x44, 0x6d, 0x1c, 0x7b, 0x22, 0x04, 0x70, 0xa6, 0x3b, 0x70, 0xab, 0x22, 0x0a, + 0xaf, 0x31, 0x33, 0xbf, 0x2e, 0x88, 0x62, 0x39, 0xe7, 0xae, 0x26, 0x94, 0xc2, 0x28, 0x8a, 0x95, + 0x7c, 0xd3, 0xee, 0xe5, 0x69, 0x14, 0xc5, 0xfb, 0x73, 0x16, 0xe2, 0xc8, 0xbb, 0x50, 0x0e, 0x22, + 0xd7, 0x09, 0xa6, 0x2b, 0x98, 0x27, 0x02, 0xb8, 0x3f, 0x67, 0x49, 0x2c, 0x79, 0x0b, 0x0a, 0xec, + 0xbe, 0xca, 0xe9, 0x90, 0xee, 0xe0, 0xfe, 0xfe, 0x9c, 0x55, 0x60, 0xf7, 0xc9, 0x6d, 0x28, 0x9e, + 0xb8, 0x4c, 0xa5, 0xed, 0x86, 0x46, 0x7f, 0xb2, 0xd3, 0xdf, 0x9f, 0xb3, 0x04, 0x86, 0x7c, 0x04, + 0x2d, 0x37, 0x88, 0xc6, 0x9e, 0xed, 0x5d, 0x84, 0xce, 0xc8, 0x77, 0x55, 0xb6, 0x5e, 0x9c, 0x54, + 0x07, 0xd1, 0xd8, 0xdb, 0x95, 0xb8, 0xfd, 0x39, 0xab, 0xe9, 0x66, 0xc6, 0x62, 0x1b, 0xa7, 0xde, + 0x50, 0x16, 0xaf, 0x99, 0x6d, 0xec, 0xef, 0x3e, 0x12, 0xdf, 0x47, 0x1c, 0xd9, 0x07, 0xe2, 0x7c, + 0x39, 0x4e, 0xa8, 0x3d, 0x08, 0xa2, 0x81, 0xad, 0x0d, 0x4b, 0x4a, 0xbc, 0xa7, 0x67, 0x6c, 0x09, + 0x8a, 0xed, 0x20, 0x1a, 0x28, 0x39, 0x89, 0x8c, 0xed, 0x4c, 0xc1, 0xb6, 0xeb, 0x50, 0x55, 0xc1, + 0xd1, 0xac, 0x40, 0x49, 0xc8, 0xca, 0x7c, 0x13, 0xca, 0x28, 0x0e, 0x61, 0x4f, 0xc2, 0xa8, 0x75, + 0x0d, 0x88, 0x06, 0xfe, 0x27, 0x25, 0x28, 0xf4, 0xef, 0x8b, 0x3a, 0x9e, 0x86, 0x5e, 0x1c, 0xf9, + 0xaa, 0xa6, 0xaa, 0x5b, 0xe9, 0x58, 0x34, 0x28, 0x99, 0xc3, 0xd5, 0x7a, 0x7a, 0x98, 0x7a, 0x03, + 0x2a, 0x83, 0xb1, 0x7b, 0x46, 0xb9, 0x2a, 0xd6, 0xd4, 0x48, 0xc0, 0xe3, 0x84, 0x0e, 0xfd, 0x17, + 0xca, 0x70, 0xd5, 0x48, 0xa6, 0x11, 0x19, 0xbf, 0xdd, 0xc0, 0x61, 0xb2, 0xe8, 0xaf, 0x8b, 0x34, + 0x82, 0xc0, 0x1d, 0x01, 0x13, 0xd5, 0x19, 0x63, 0xd2, 0x5e, 0xeb, 0x96, 0xf8, 0x29, 0x20, 0x8e, + 0x1b, 0xa0, 0x30, 0xea, 0x96, 0xf8, 0x29, 0x32, 0x89, 0xe3, 0xba, 0x94, 0x31, 0xcc, 0x55, 0x35, + 0x79, 0x32, 0x2a, 0x21, 0x22, 0x5d, 0xad, 0xc3, 0x3c, 0xa3, 0x6e, 0x42, 0xb9, 0x9d, 0xa1, 0xaa, + 0x23, 0x55, 0x47, 0x22, 0xb6, 0x52, 0xda, 0x35, 0xe8, 0x0e, 0xa3, 0xc4, 0xa5, 0xb6, 0x10, 0x86, + 0xcd, 0xf8, 0x45, 0x40, 0x55, 0x66, 0x68, 0x23, 0xfc, 0xc8, 0xe1, 0xa7, 0x7d, 0x01, 0x25, 0x77, + 0xa0, 0xcd, 0x18, 0xb5, 0xcf, 0x46, 0xf8, 0x3d, 0x11, 0x63, 0x64, 0xb2, 0x68, 0x30, 0x46, 0x1f, + 0x8f, 0xc4, 0xc7, 0x0e, 0x3c, 0xe1, 0xe3, 0x49, 0x14, 0x50, 0xdb, 0x49, 0xe4, 0xa9, 0x6c, 0xdd, + 0xaa, 0x8a, 0xf1, 0x56, 0x22, 0xf3, 0xe3, 0x0b, 0x4e, 0x93, 0x50, 0xb6, 0xa1, 0x2d, 0xc4, 0x82, + 0x06, 0x1d, 0x78, 0x64, 0x03, 0x16, 0xa2, 0xc1, 0x4f, 0xa9, 0xcb, 0x6d, 0xd1, 0x3e, 0xa6, 0x67, + 0x6b, 0x6d, 0xe4, 0x66, 0x5e, 0xa2, 0x9e, 0x44, 0xee, 0x99, 0x3e, 0x58, 0x13, 0xe2, 0xd4, 0x2e, + 0x1e, 0x9d, 0x51, 0x19, 0xf9, 0x85, 0x38, 0x95, 0x1b, 0x0b, 0x98, 0xd0, 0x6b, 0x9c, 0x44, 0xe7, + 0xbe, 0x47, 0x13, 0x3c, 0x73, 0xac, 0x5b, 0xe9, 0x58, 0x14, 0xcb, 0x71, 0x12, 0x0d, 0xfd, 0x80, + 0xaa, 0x93, 0x45, 0x3d, 0x34, 0xbf, 0x32, 0xa0, 0xf8, 0xc9, 0x4e, 0xff, 0x65, 0x56, 0xa1, 0xb4, + 0x5f, 0xb8, 0x42, 0xfb, 0xc5, 0xeb, 0xb5, 0x5f, 0x9a, 0xa1, 0xfd, 0x77, 0xa1, 0x1d, 0x27, 0xd4, + 0xa3, 0x43, 0x3f, 0xa4, 0x9e, 0x2d, 0xd4, 0x2e, 0x6d, 0xa4, 0x35, 0x81, 0x6e, 0xb9, 0x81, 0xe8, + 0x0d, 0x5d, 0x01, 0x08, 0xb9, 0xef, 0x04, 0x0c, 0x9d, 0x46, 0x59, 0x4c, 0x27, 0x03, 0x17, 0x6e, + 0x61, 0x8e, 0xa0, 0x8b, 0x7e, 0xb3, 0x33, 0x66, 0x3c, 0x1a, 0x61, 0xf1, 0x25, 0x56, 0xc9, 0x94, + 0x7f, 0xba, 0x2a, 0xae, 0x5b, 0xad, 0x09, 0x54, 0x90, 0x6d, 0xc2, 0x52, 0x9e, 0xcc, 0xce, 0xf4, + 0xe9, 0x75, 0x6b, 0x21, 0x47, 0xdd, 0x47, 0x94, 0x08, 0x63, 0xdd, 0x69, 0x3f, 0xfd, 0xcd, 0x8b, + 0xf1, 0x6d, 0x68, 0x3a, 0xae, 0x1b, 0x8d, 0x43, 0x6e, 0x63, 0x02, 0x91, 0x42, 0x6c, 0x28, 0xd8, + 0x53, 0x91, 0x47, 0x6e, 0x01, 0xb0, 0x53, 0x27, 0xa1, 0xb2, 0xde, 0x93, 0xc2, 0xab, 0x4b, 0x88, + 0xd8, 0xfb, 0xc4, 0xc5, 0x98, 0x7f, 0x92, 0x77, 0xb1, 0xbe, 0x7f, 0x22, 0x14, 0x90, 0x11, 0x0d, + 0x73, 0xa3, 0x98, 0x6a, 0x0f, 0x9b, 0xc0, 0xfb, 0x02, 0x4c, 0x3e, 0xbe, 0x24, 0x6c, 0x98, 0x11, + 0xd6, 0x32, 0xea, 0x99, 0x52, 0x83, 0xf9, 0xc7, 0x06, 0x54, 0xb6, 0xa5, 0x50, 0x5e, 0x2d, 0x4a, + 0x15, 0xaf, 0x88, 0x52, 0xa5, 0x2b, 0x04, 0x5c, 0xbe, 0x5e, 0xc0, 0x95, 0xcb, 0x02, 0x16, 0xdd, + 0x64, 0x33, 0x1b, 0xf4, 0xc9, 0xdd, 0x74, 0x15, 0x43, 0x35, 0x72, 0xba, 0x4c, 0x41, 0x68, 0xba, + 0xea, 0x1d, 0x68, 0x69, 0xff, 0x93, 0xaa, 0x91, 0x5a, 0x6f, 0x6a, 0x20, 0xea, 0xe6, 0x43, 0x28, + 0x3b, 0x9c, 0x27, 0xba, 0xe1, 0xbe, 0x3d, 0x2b, 0xcd, 0x6c, 0x6c, 0x09, 0x8a, 0xbd, 0x90, 0x27, + 0x17, 0x96, 0xa4, 0x5e, 0x7e, 0x08, 0x30, 0x01, 0x8a, 0xb0, 0x39, 0xb1, 0x6c, 0xf1, 0x93, 0x2c, + 0x42, 0xf9, 0xdc, 0x09, 0xc6, 0x7a, 0x4d, 0x39, 0xf8, 0xad, 0xc2, 0x43, 0xc3, 0x5c, 0x81, 0x92, + 0x48, 0x47, 0x52, 0x86, 0xa3, 0x88, 0xeb, 0x63, 0x02, 0x35, 0x32, 0xff, 0xc1, 0x80, 0xf6, 0xd4, + 0x4d, 0xdd, 0x1d, 0x7d, 0x93, 0x66, 0xe4, 0x13, 0x6f, 0xee, 0x22, 0xed, 0xbb, 0xb5, 0x1b, 0xaf, + 0x72, 0x7f, 0x35, 0x75, 0xed, 0x51, 0x7e, 0xa5, 0x6b, 0x0f, 0xf3, 0x1e, 0xb4, 0x77, 0x02, 0xea, + 0x84, 0x93, 0x7e, 0x29, 0x57, 0x34, 0x1a, 0xf9, 0xa2, 0xd1, 0x3c, 0x82, 0x4e, 0x4a, 0xfe, 0x3a, + 0xdb, 0xee, 0x41, 0x95, 0x8d, 0xd1, 0x57, 0x70, 0xd3, 0x35, 0x4b, 0x0f, 0xcd, 0x87, 0xd0, 0x56, + 0xb7, 0x99, 0x9a, 0x81, 0xbb, 0xd0, 0x61, 0xce, 0x39, 0xb5, 0x79, 0x64, 0x67, 0xeb, 0xc9, 0x9a, + 0xd5, 0x12, 0xe0, 0xe3, 0x48, 0xc5, 0x10, 0xf3, 0xaf, 0x0c, 0xe8, 0xa4, 0x53, 0x5f, 0x53, 0x07, + 0x93, 0x1d, 0x16, 0xa6, 0xca, 0xe2, 0xef, 0x03, 0x71, 0xa3, 0x20, 0x10, 0x49, 0x07, 0xaf, 0x03, + 0x31, 0x3e, 0xa8, 0x22, 0xb4, 0xab, 0x30, 0x42, 0xec, 0x3b, 0x02, 0x2e, 0x12, 0x6b, 0x8e, 0x1a, + 0x0f, 0xb3, 0x65, 0x2f, 0xd8, 0xc9, 0x10, 0xf7, 0xfd, 0x2f, 0xa9, 0xb9, 0x00, 0xf3, 0x3b, 0xa7, + 0xd4, 0x3d, 0xdb, 0xf2, 0x46, 0x7e, 0xa8, 0x36, 0x6b, 0xfe, 0xdc, 0x00, 0x92, 0x85, 0xbe, 0xce, + 0x3e, 0x5e, 0xf5, 0x8a, 0x77, 0x1d, 0xe6, 0x4f, 0x1d, 0x66, 0xc7, 0x34, 0xf4, 0xfc, 0xf0, 0xc4, + 0x76, 0xc4, 0x4a, 0xb8, 0xa3, 0x9a, 0xd5, 0x39, 0x75, 0xd8, 0x91, 0x84, 0x23, 0x03, 0xe6, 0x3f, + 0x19, 0x70, 0x6b, 0x4f, 0x65, 0x60, 0x25, 0x68, 0x8b, 0x0a, 0x35, 0xa4, 0xea, 0x99, 0xd1, 0x73, + 0x1a, 0xaf, 0xd5, 0x73, 0xde, 0x86, 0x86, 0xca, 0xea, 0x19, 0x77, 0x07, 0x09, 0x7a, 0xaa, 0x0a, + 0xfa, 0x44, 0xae, 0x29, 0x29, 0x64, 0xf4, 0x6a, 0x28, 0x18, 0x92, 0xbc, 0x0b, 0x6d, 0xec, 0x4d, + 0x42, 0x6e, 0x07, 0x34, 0x3c, 0xe1, 0xa7, 0x4a, 0xe8, 0x2d, 0x05, 0x7d, 0x82, 0x40, 0x73, 0x15, + 0x56, 0xae, 0xda, 0x8c, 0x14, 0xb4, 0xf9, 0xe7, 0x06, 0x2c, 0x4f, 0x91, 0xf4, 0x9d, 0xf3, 0xdf, + 0xe0, 0x66, 0x2f, 0xef, 0xa4, 0x38, 0x6b, 0x27, 0xb7, 0xe0, 0xcd, 0x99, 0x6c, 0xaa, 0x6d, 0xfc, + 0x52, 0x5d, 0x8b, 0x78, 0x0e, 0x77, 0xc8, 0xba, 0x8e, 0x16, 0x46, 0xfe, 0x74, 0x72, 0x57, 0x5d, + 0x6f, 0x60, 0xcf, 0xac, 0xa2, 0xc6, 0x03, 0x68, 0xa0, 0xe1, 0xaa, 0x96, 0x55, 0xde, 0x45, 0x2c, + 0x4d, 0xcf, 0xc0, 0xd6, 0xd4, 0xc2, 0xfb, 0x71, 0xd5, 0xa5, 0x62, 0xeb, 0x26, 0x34, 0x94, 0x1e, + 0xf1, 0x62, 0x57, 0x27, 0x3c, 0xe8, 0x36, 0x08, 0x55, 0x45, 0xc1, 0x39, 0xcd, 0xf4, 0x6f, 0xa0, + 0x41, 0xb2, 0xb7, 0x1b, 0x39, 0x2f, 0x04, 0x4e, 0x2a, 0xad, 0x3c, 0x72, 0x5e, 0x28, 0xb0, 0x1f, + 0x0a, 0x70, 0x59, 0x81, 0xfd, 0xf0, 0x58, 0x70, 0x88, 0x8f, 0x43, 0xd2, 0xc0, 0x56, 0x55, 0x81, + 0x2d, 0x73, 0x4f, 0xac, 0x03, 0x5b, 0x63, 0x34, 0x19, 0x98, 0xff, 0x62, 0x40, 0x2b, 0xc7, 0xff, + 0xac, 0x62, 0x9f, 0xfc, 0x18, 0x3a, 0x93, 0x5b, 0x21, 0x79, 0xce, 0x50, 0xb8, 0x46, 0x6a, 0xad, + 0xf4, 0x8a, 0x08, 0x5b, 0xde, 0x09, 0xcb, 0xc5, 0x2c, 0xcb, 0x57, 0x6c, 0xf0, 0x2e, 0x74, 0x04, + 0x75, 0x56, 0x38, 0x72, 0xa7, 0x2d, 0xe9, 0xfa, 0x5a, 0x3e, 0x37, 0xa0, 0xa2, 0x4c, 0x41, 0x5e, + 0xe7, 0xa9, 0x91, 0xf9, 0x8f, 0x15, 0x68, 0x66, 0xb9, 0xc9, 0xdc, 0x93, 0x18, 0xb9, 0x7b, 0x12, + 0xbd, 0xd1, 0x42, 0x66, 0xa3, 0xeb, 0x30, 0x1f, 0x8e, 0x47, 0x03, 0x9a, 0xd8, 0xd1, 0xd0, 0xa6, + 0x21, 0x4f, 0x7c, 0x2a, 0xb9, 0x2e, 0x5a, 0x1d, 0x89, 0x78, 0x36, 0xdc, 0x93, 0xe0, 0xcc, 0xb6, + 0x4a, 0xb3, 0xb7, 0x55, 0xce, 0x6e, 0x6b, 0x4a, 0xdf, 0x95, 0x4b, 0xfa, 0x7e, 0x13, 0xea, 0xea, + 0x60, 0xd7, 0xf7, 0x50, 0x7d, 0x45, 0xab, 0x26, 0x01, 0xd3, 0xe7, 0x6f, 0xb5, 0xab, 0x13, 0x62, + 0x7d, 0xc6, 0x89, 0xf8, 0xe4, 0x1e, 0xf1, 0x1d, 0x28, 0x61, 0x53, 0xdf, 0x40, 0xe3, 0xe8, 0x66, + 0xf3, 0x23, 0x76, 0xf3, 0x88, 0x15, 0x9f, 0xf3, 0x19, 0x5e, 0x57, 0x62, 0x2b, 0x52, 0xb3, 0x2a, + 0x3e, 0xc3, 0x0b, 0xe5, 0x37, 0xa0, 0x26, 0x8f, 0x10, 0x54, 0x1b, 0x52, 0xb4, 0xaa, 0x38, 0x3e, + 0xf0, 0x32, 0xca, 0x68, 0x67, 0x95, 0x41, 0xfe, 0x3f, 0x2c, 0x0b, 0x19, 0x0d, 0xe8, 0x09, 0x4a, + 0xca, 0xf6, 0x43, 0xdb, 0xa3, 0x43, 0x67, 0x1c, 0x70, 0xdb, 0x1d, 0x62, 0xe3, 0x51, 0xb2, 0x96, + 0x46, 0x7e, 0xb8, 0x2d, 0x08, 0x8e, 0xd9, 0x41, 0xb8, 0x2b, 0xb1, 0x3b, 0x43, 0x8c, 0x6f, 0xf8, + 0x84, 0x22, 0x1a, 0x0e, 0x19, 0xe5, 0xd8, 0x85, 0x94, 0xac, 0x06, 0xc2, 0x9e, 0x21, 0x68, 0x42, + 0xa2, 0xd6, 0x9e, 0xcf, 0x90, 0xc8, 0x88, 0x30, 0xf3, 0x4c, 0x83, 0xbc, 0xe6, 0x99, 0x46, 0xf6, + 0xae, 0x6a, 0x61, 0xea, 0xae, 0x6a, 0x0d, 0xba, 0x4a, 0x6b, 0x13, 0xfd, 0x2c, 0xa2, 0x12, 0xda, + 0x12, 0xde, 0xd7, 0x5a, 0x7a, 0x07, 0xda, 0xfa, 0xe0, 0x5e, 0x29, 0x6b, 0x09, 0xe9, 0xd4, 0x71, + 0xfe, 0x9e, 0x54, 0xd9, 0x83, 0xc9, 0xf1, 0x7e, 0x1c, 0xb9, 0xa7, 0xea, 0x79, 0xc3, 0x42, 0x3e, + 0x67, 0xed, 0x09, 0x54, 0x7a, 0xc2, 0x2f, 0x06, 0xc4, 0x82, 0x45, 0x8c, 0x50, 0x99, 0x92, 0x19, + 0xdd, 0xf4, 0x26, 0xc6, 0xe1, 0xd5, 0xfc, 0xc9, 0xb2, 0x50, 0xf8, 0xe4, 0x88, 0x1a, 0x5d, 0x96, + 0x0c, 0x2f, 0xc1, 0xcc, 0x5f, 0x18, 0x30, 0x9f, 0x3d, 0xad, 0xd9, 0xd3, 0x75, 0xc1, 0xa9, 0x13, + 0xc7, 0x34, 0xb4, 0x1d, 0x7d, 0x8d, 0x52, 0x93, 0x80, 0x2d, 0x3c, 0x46, 0xc6, 0xac, 0x6b, 0xbb, + 0x91, 0xa7, 0xe3, 0x78, 0x1d, 0x21, 0x3b, 0x91, 0x27, 0x12, 0xb6, 0x7c, 0xd1, 0x66, 0x8f, 0x28, + 0x63, 0xa2, 0x64, 0x91, 0x49, 0xab, 0x89, 0xc0, 0x43, 0x09, 0xcb, 0x05, 0x4d, 0x7d, 0x49, 0x29, + 0x83, 0xa6, 0xf9, 0x00, 0x4a, 0xfd, 0xd8, 0xc1, 0xda, 0x5c, 0x59, 0x85, 0x64, 0x40, 0x8d, 0x32, + 0x66, 0x58, 0xc8, 0xc5, 0x84, 0x3d, 0x68, 0x88, 0x79, 0xec, 0xd9, 0x50, 0xbf, 0x4a, 0xb8, 0x14, + 0xe2, 0x4c, 0x28, 0x33, 0x41, 0x32, 0x7d, 0xe7, 0x2d, 0xe6, 0x59, 0x12, 0x65, 0xfe, 0xa2, 0x08, + 0xbd, 0x27, 0xd1, 0x09, 0xd6, 0x2a, 0xe3, 0x81, 0x30, 0x13, 0xc7, 0x55, 0x87, 0xfc, 0x4e, 0x7a, + 0x49, 0x6f, 0xe4, 0x2f, 0xe9, 0x27, 0x3e, 0xad, 0x9e, 0x58, 0xa4, 0x3e, 0x3d, 0x75, 0x5f, 0x45, + 0x56, 0xa1, 0xe9, 0x87, 0xf1, 0x98, 0xdb, 0xb9, 0xa8, 0x08, 0x08, 0x3b, 0xc4, 0x18, 0x32, 0xa1, + 0xc8, 0x66, 0x00, 0x45, 0x81, 0xc1, 0xe7, 0x2e, 0x74, 0x14, 0x5b, 0xf6, 0x30, 0x89, 0x46, 0x93, + 0x48, 0xd3, 0x52, 0xe0, 0x47, 0x49, 0x34, 0x3a, 0xc6, 0xb7, 0x77, 0x9a, 0x6e, 0x1c, 0x72, 0x3f, + 0xb0, 0xd5, 0x25, 0x68, 0xc9, 0x6a, 0x2b, 0xf8, 0x67, 0x02, 0x7c, 0xcc, 0x44, 0x34, 0x10, 0xab, + 0x4d, 0xe2, 0x8e, 0x08, 0x7a, 0x2a, 0xea, 0x08, 0x46, 0x33, 0x51, 0x67, 0xe4, 0xbc, 0x10, 0x88, + 0x55, 0x7c, 0x8b, 0x07, 0x57, 0xc4, 0x98, 0x02, 0xbf, 0xc8, 0x05, 0x92, 0x46, 0x3e, 0x90, 0xdc, + 0x83, 0x2a, 0x8b, 0xc6, 0x89, 0x4b, 0x59, 0xaf, 0x99, 0xbf, 0xf1, 0xcf, 0x28, 0xd0, 0xd2, 0x34, + 0xe6, 0xdf, 0x1a, 0xb0, 0x38, 0x4b, 0x23, 0xe4, 0x03, 0x28, 0x61, 0x04, 0x33, 0x94, 0xfd, 0xa7, + 0xc7, 0x7b, 0xb3, 0xb5, 0x67, 0x21, 0x35, 0xb9, 0x07, 0x0d, 0xc6, 0xb8, 0x1d, 0x8d, 0x79, 0x3c, + 0xe6, 0xb3, 0x9f, 0x3f, 0x00, 0x63, 0xfc, 0x99, 0xc4, 0x93, 0x6d, 0x98, 0x57, 0xea, 0xc5, 0xdc, + 0x7b, 0xea, 0x87, 0x5c, 0xf7, 0x5e, 0x69, 0xe5, 0x23, 0x3d, 0x56, 0xac, 0xb1, 0xef, 0x87, 0xdc, + 0xea, 0x24, 0xb9, 0x31, 0x33, 0xff, 0x00, 0xda, 0x79, 0x92, 0xef, 0x78, 0xfb, 0x39, 0x1d, 0x38, + 0xe4, 0x99, 0xe5, 0x4b, 0x03, 0x87, 0xf9, 0xfb, 0xb0, 0x34, 0x4b, 0x28, 0x8c, 0xec, 0x42, 0x9b, + 0xe5, 0x20, 0xaa, 0x50, 0x7a, 0xeb, 0x3a, 0x59, 0x5a, 0x53, 0x73, 0xcc, 0x7f, 0x2d, 0xc0, 0xbc, + 0x22, 0xdc, 0x99, 0x68, 0x07, 0xdb, 0x07, 0x3d, 0x4a, 0x2d, 0xd5, 0xd0, 0xed, 0x83, 0xc6, 0x28, + 0x63, 0xdd, 0x80, 0x85, 0x0c, 0x75, 0x6a, 0xaf, 0xd2, 0x9f, 0xe6, 0x27, 0x28, 0x6d, 0xb2, 0xfa, + 0xf8, 0xbb, 0x98, 0x39, 0xfe, 0x16, 0x31, 0x3c, 0x1a, 0x8d, 0x68, 0xc8, 0xf5, 0xc9, 0x47, 0x3a, + 0x26, 0x6f, 0x41, 0xdd, 0x49, 0xb8, 0x3f, 0x74, 0x5c, 0xae, 0xcf, 0x16, 0x27, 0x00, 0x51, 0x7a, + 0xa6, 0x03, 0xfb, 0xd4, 0x61, 0xba, 0xde, 0x68, 0xa5, 0xd0, 0x7d, 0x87, 0x9d, 0x92, 0xef, 0x41, + 0xe7, 0x84, 0x86, 0x34, 0x71, 0x38, 0xf5, 0xd4, 0xeb, 0x19, 0x79, 0xf2, 0xd8, 0x4e, 0xc1, 0xf2, + 0xd1, 0xcc, 0xb4, 0x13, 0xd7, 0x2e, 0x39, 0xf1, 0x74, 0x20, 0xa8, 0x4f, 0x07, 0x02, 0xf3, 0xef, + 0x0d, 0x59, 0xc8, 0xee, 0x79, 0x3e, 0x9f, 0x19, 0xcd, 0x36, 0x61, 0xc9, 0xa3, 0x01, 0xe5, 0xd4, + 0x4e, 0x9f, 0xb0, 0x4c, 0x5e, 0xf4, 0xd4, 0xad, 0x05, 0x89, 0x3c, 0x52, 0x38, 0xc9, 0xd8, 0x63, + 0x58, 0x54, 0x73, 0x82, 0xe8, 0x24, 0x33, 0x45, 0x1a, 0xf4, 0x1b, 0x69, 0xa5, 0x87, 0x34, 0x59, + 0x6f, 0x24, 0x72, 0xda, 0x13, 0x39, 0x4b, 0x7e, 0xec, 0x0e, 0xb4, 0x3c, 0xca, 0x78, 0x32, 0x76, + 0xb9, 0xcd, 0x68, 0x30, 0x54, 0x8f, 0x60, 0x9b, 0x1a, 0xd8, 0xa7, 0xc1, 0xd0, 0xfc, 0x3d, 0xe8, + 0x5a, 0xf4, 0x79, 0xe2, 0x73, 0x4e, 0xe5, 0x9b, 0x99, 0x83, 0x5d, 0xf2, 0x1e, 0xcc, 0x3b, 0xa1, + 0x8b, 0xfd, 0x87, 0xad, 0x5f, 0x4c, 0xa8, 0x17, 0x14, 0x5d, 0x8d, 0xf8, 0x4c, 0xc1, 0x85, 0x56, + 0x53, 0x1a, 0x59, 0x5f, 0xa7, 0x63, 0xf3, 0xbf, 0x0d, 0x68, 0x1e, 0x84, 0x27, 0x94, 0x71, 0xea, + 0xf5, 0xfb, 0xc7, 0x8c, 0xec, 0x88, 0x54, 0xad, 0x56, 0xb3, 0xd5, 0xcb, 0x04, 0x69, 0xd2, 0xbd, + 0x89, 0xb3, 0xe6, 0xb9, 0x11, 0xee, 0x9a, 0x85, 0xb0, 0xc9, 0x19, 0x43, 0xe1, 0xea, 0x33, 0x86, + 0x1e, 0xd4, 0x1c, 0x66, 0xfb, 0xc3, 0x49, 0xc5, 0x5b, 0x71, 0xd8, 0xc1, 0xf0, 0x98, 0x89, 0xf2, + 0x52, 0x96, 0xd0, 0xf2, 0xcc, 0x08, 0x23, 0x86, 0x32, 0xc7, 0x0e, 0x22, 0x8e, 0x10, 0x8e, 0x61, + 0x60, 0x19, 0x6a, 0x43, 0x3f, 0xf4, 0xd9, 0x29, 0xf5, 0xd0, 0x28, 0x6b, 0x56, 0x3a, 0xce, 0x3c, + 0x3f, 0x1c, 0x8f, 0x7d, 0x4f, 0xbf, 0xc7, 0x91, 0xa0, 0xcf, 0xc6, 0xbe, 0x67, 0x3e, 0x87, 0xf9, + 0x4b, 0x7a, 0xfa, 0xae, 0x69, 0x4f, 0x70, 0xfd, 0xfc, 0x34, 0x92, 0x57, 0x47, 0x34, 0xdf, 0x7f, + 0x75, 0x10, 0x21, 0xbe, 0xae, 0x3a, 0xb0, 0xaf, 0x0a, 0x50, 0x3f, 0xf4, 0x4f, 0x12, 0x7c, 0xcb, + 0x89, 0x0f, 0x2e, 0x12, 0xea, 0x70, 0xf5, 0x4e, 0xa1, 0x6e, 0xe9, 0x21, 0xd9, 0x9c, 0xbc, 0x42, + 0x96, 0x57, 0x4c, 0xa9, 0x0e, 0xd2, 0xd9, 0xba, 0x5f, 0x49, 0xdf, 0x27, 0xdf, 0x83, 0x3a, 0xf5, + 0x7c, 0x6e, 0xab, 0xc0, 0x5e, 0x9c, 0x7e, 0x08, 0x2b, 0xbc, 0xc1, 0xaa, 0x09, 0x12, 0x4c, 0xc8, + 0x6f, 0x43, 0x93, 0x27, 0xe3, 0xd0, 0x45, 0x8f, 0xe4, 0x91, 0x8a, 0x17, 0x8d, 0x14, 0x76, 0x1c, + 0x91, 0x8f, 0xa0, 0x91, 0x0d, 0x70, 0x53, 0x96, 0x7e, 0x29, 0x6e, 0x59, 0x59, 0x6a, 0xe1, 0xf1, + 0xa9, 0x89, 0xa7, 0xf7, 0x16, 0xc2, 0xbb, 0xda, 0x1a, 0x2c, 0xb5, 0x49, 0x3e, 0x84, 0x9b, 0xf4, + 0x05, 0x4f, 0x1c, 0x7b, 0x38, 0x0e, 0x02, 0x5b, 0x29, 0x4e, 0x48, 0x5f, 0x3e, 0x66, 0xae, 0x5b, + 0x8b, 0x88, 0x7e, 0x34, 0x0e, 0x02, 0x59, 0x68, 0x1d, 0x09, 0xdc, 0xfa, 0x53, 0x58, 0x7d, 0xd9, + 0x8b, 0x7b, 0xd2, 0x81, 0xc6, 0x67, 0x78, 0x35, 0x86, 0x0f, 0xcb, 0xbb, 0x73, 0xa4, 0x05, 0xf5, + 0x9f, 0x38, 0x3e, 0xdf, 0x8a, 0xe3, 0xe0, 0xa2, 0x6b, 0x10, 0x80, 0xca, 0x23, 0x34, 0x9a, 0x6e, + 0x61, 0xfd, 0x53, 0x58, 0xb9, 0xfe, 0x45, 0x3c, 0x99, 0x87, 0x56, 0x3a, 0x79, 0x37, 0x0a, 0xc5, + 0xf7, 0x96, 0x60, 0x3e, 0xb3, 0x80, 0x7c, 0x3b, 0xdc, 0x35, 0xd6, 0x7f, 0x1b, 0x3a, 0x53, 0x65, + 0x33, 0x69, 0x40, 0xf5, 0xb3, 0xa7, 0x8f, 0x9f, 0x3e, 0xfb, 0xc9, 0xd3, 0xee, 0x1c, 0xa9, 0x42, + 0xf1, 0xc9, 0x17, 0x1f, 0x48, 0x06, 0xfa, 0x4f, 0xb7, 0x8e, 0x8e, 0x7e, 0xb7, 0x5b, 0x20, 0x35, + 0x28, 0x7d, 0xd1, 0x3f, 0xde, 0xed, 0x16, 0xd7, 0x57, 0xd3, 0x87, 0xef, 0xa2, 0x2a, 0xac, 0x41, + 0xa9, 0xbf, 0xb3, 0x25, 0xa6, 0xd5, 0xa0, 0xf4, 0xe8, 0xe0, 0xc9, 0x5e, 0xd7, 0x58, 0xbf, 0x05, + 0x8d, 0x4c, 0xcf, 0x4a, 0x2a, 0x50, 0xf8, 0xfc, 0x87, 0xdd, 0x39, 0xfc, 0xbb, 0xd9, 0x35, 0xd6, + 0x6f, 0x43, 0x4d, 0x57, 0x14, 0x62, 0x09, 0x69, 0xeb, 0x72, 0xdd, 0xa3, 0xb1, 0x60, 0x70, 0x1d, + 0xba, 0xd3, 0x86, 0x24, 0x26, 0x1f, 0xbe, 0x2f, 0x3f, 0x72, 0xf8, 0xc3, 0xae, 0x81, 0x7f, 0x37, + 0xbb, 0x85, 0xcd, 0x5f, 0x17, 0xa0, 0x22, 0xd9, 0x21, 0x1f, 0x81, 0xfa, 0x4f, 0x0c, 0xb2, 0x34, + 0xf5, 0xd2, 0x50, 0x0a, 0x7d, 0xf9, 0xc6, 0x34, 0x58, 0x1d, 0x2d, 0xcc, 0xbd, 0x6f, 0x90, 0x23, + 0x58, 0xc0, 0x43, 0xaa, 0xec, 0x51, 0xd1, 0xb3, 0x98, 0xa4, 0xf6, 0x74, 0xe9, 0x5c, 0x6b, 0x79, + 0x79, 0x16, 0x2a, 0xf3, 0xc5, 0x53, 0x58, 0x9a, 0xa9, 0x32, 0xf2, 0xce, 0xab, 0xfc, 0x4f, 0xc6, + 0xf2, 0xbb, 0x2f, 0xa1, 0x92, 0x2b, 0xad, 0x19, 0xef, 0x1b, 0xe4, 0xc7, 0x50, 0x8d, 0x25, 0x11, + 0xb9, 0x31, 0x35, 0x4b, 0x7f, 0xed, 0xe6, 0x25, 0xb8, 0xe6, 0x54, 0xcc, 0x76, 0xe5, 0x81, 0x27, + 0xc9, 0xbc, 0x7c, 0xca, 0x1e, 0x98, 0x4e, 0x66, 0x4f, 0x9d, 0x8c, 0x9a, 0x73, 0x9b, 0x7f, 0x67, + 0x40, 0x67, 0xea, 0xd8, 0x86, 0x7c, 0x01, 0x55, 0x75, 0x92, 0x45, 0xd2, 0x5d, 0x5c, 0x7b, 0xe2, + 0xb6, 0x7c, 0xf7, 0x65, 0x64, 0x29, 0xb7, 0xbf, 0x03, 0x25, 0xe6, 0x9c, 0x53, 0x62, 0x5e, 0x31, + 0x23, 0x73, 0xb4, 0xb5, 0x7c, 0xe7, 0x5a, 0x1a, 0xfd, 0xc9, 0xed, 0xcd, 0x5f, 0xfd, 0x45, 0xcd, + 0xf8, 0xea, 0x9b, 0x15, 0xe3, 0xeb, 0x6f, 0x56, 0x8c, 0xff, 0xf8, 0x66, 0xc5, 0xf8, 0xe5, 0xb7, + 0x2b, 0x73, 0x7f, 0xf6, 0xed, 0xca, 0xdc, 0xd7, 0xdf, 0xae, 0xcc, 0xfd, 0xea, 0xdb, 0x95, 0x39, + 0xe8, 0x46, 0xc9, 0xc9, 0x06, 0xf7, 0xcf, 0xce, 0x37, 0xce, 0xce, 0xf1, 0x9f, 0x70, 0x06, 0x15, + 0xfc, 0x73, 0xff, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x04, 0xa3, 0x7f, 0x78, 0x08, 0x34, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9781,15 +9783,15 @@ func (m *RewrittenTableID) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x10 } - if m.UpstreamOfUpstream != 0 { - i = encodeVarintBrpb(dAtA, i, uint64(m.UpstreamOfUpstream)) + if m.AncestorUpstream != 0 { + i = encodeVarintBrpb(dAtA, i, uint64(m.AncestorUpstream)) i-- dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *ExtraFullBackup) Marshal() (dAtA []byte, err error) { +func (m *IngestedSSTs) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -9799,12 +9801,12 @@ func (m *ExtraFullBackup) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ExtraFullBackup) MarshalTo(dAtA []byte) (int, error) { +func (m *IngestedSSTs) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ExtraFullBackup) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *IngestedSSTs) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -11718,8 +11720,8 @@ func (m *RewrittenTableID) Size() (n int) { } var l int _ = l - if m.UpstreamOfUpstream != 0 { - n += 1 + sovBrpb(uint64(m.UpstreamOfUpstream)) + if m.AncestorUpstream != 0 { + n += 1 + sovBrpb(uint64(m.AncestorUpstream)) } if m.Upstream != 0 { n += 1 + sovBrpb(uint64(m.Upstream)) @@ -11727,7 +11729,7 @@ func (m *RewrittenTableID) Size() (n int) { return n } -func (m *ExtraFullBackup) Size() (n int) { +func (m *IngestedSSTs) Size() (n int) { if m == nil { return 0 } @@ -22604,9 +22606,9 @@ func (m *RewrittenTableID) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field UpstreamOfUpstream", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AncestorUpstream", wireType) } - m.UpstreamOfUpstream = 0 + m.AncestorUpstream = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -22616,7 +22618,7 @@ func (m *RewrittenTableID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.UpstreamOfUpstream |= int64(b&0x7F) << shift + m.AncestorUpstream |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -22661,7 +22663,7 @@ func (m *RewrittenTableID) Unmarshal(dAtA []byte) error { } return nil } -func (m *ExtraFullBackup) Unmarshal(dAtA []byte) error { +func (m *IngestedSSTs) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -22684,10 +22686,10 @@ func (m *ExtraFullBackup) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ExtraFullBackup: wiretype end group for non-group") + return fmt.Errorf("proto: IngestedSSTs: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ExtraFullBackup: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: IngestedSSTs: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/proto/brpb.proto b/proto/brpb.proto index ec400790c..c9ac52ece 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -900,19 +900,20 @@ message MetaEdit { // RewrittenTableID records a sort of modification over the SSTs during restoring. // -// When "backing up" this "restored" SST, we want to backup what it was "restored". +// When "backing up" this "restored" SST, we want to backup the original SST before any rewrite. // But in some cases, SSTs are not restored "as is", TiKV may rewrite or truncate its // content by the client's request. message RewrittenTableID { // The table ID in the backup data. - int64 upstream_of_upstream = 1; + int64 ancestor_upstream = 1; // The rewritten table ID during restoring. int64 upstream = 2; } -// ExtraFullBackup is created by BR restoring to a cluster with PITR enabled. -// This is uploaded by the BR CLI. -message ExtraFullBackup { +// IngestedSSTs is created by a client that wants to put data to the cluster by `Ingest` APIs, +// these write cannot be directly recorded by log backup. The client should put a migration +// that contains the SSTs it uploaded. +message IngestedSSTs { // The table IDs rewritten during restoring. repeated RewrittenTableID rewritten_tables = 1; // The SST files restored. @@ -931,8 +932,8 @@ message ExtraFullBackup { // be restored when there is a finished backup with the same // `backup_uuid`. bool finished = 5; - // When checkpoint enabled, one restoration may be - // sperated to many of `ExtraFullBackup`s. + // When checkpoint enabled, one restoration may be separated to many + // of `ExtraFullBackup`s. // `ExtraFullBackup`s sharing the same UUID should be treated as one. // That is: // - The `as_if_ts` should be the largest one among all finished extra backups. diff --git a/scripts/proto.lock b/scripts/proto.lock index a08a62c0a..0a88cbbd7 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -2007,7 +2007,7 @@ "fields": [ { "id": 1, - "name": "upstream_of_upstream", + "name": "ancestor_upstream", "type": "int64" }, { @@ -2018,7 +2018,7 @@ ] }, { - "name": "ExtraFullBackup", + "name": "IngestedSSTs", "fields": [ { "id": 1, From 7b6b57b329bc0c6fbca85618b7bb47b447f9d10c Mon Sep 17 00:00:00 2001 From: hillium Date: Tue, 7 Jan 2025 15:32:09 +0800 Subject: [PATCH 10/10] rename extra full backup to ingested SSTs Signed-off-by: hillium --- pkg/brpb/brpb.pb.go | 651 ++++++++++++++++++++++---------------------- proto/brpb.proto | 18 +- scripts/proto.lock | 2 +- 3 files changed, 335 insertions(+), 336 deletions(-) diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index eb21b781e..306f9df39 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -218,7 +218,7 @@ const ( MigrationVersion_M0 MigrationVersion = 0 // Added `creator` and `version`. MigrationVersion_M1 MigrationVersion = 1 - // Added `extra_full_backup_paths`. + // Added `ingested_sst_paths`. MigrationVersion_M2 MigrationVersion = 2 ) @@ -4955,7 +4955,7 @@ type IngestedSSTs struct { RewrittenTables []*RewrittenTableID `protobuf:"bytes,1,rep,name=rewritten_tables,json=rewrittenTables,proto3" json:"rewritten_tables,omitempty"` // The SST files restored. Files []*File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` - // Treating the whole extra full backup as an huge atomic + // Treating the whole batch of SSTs as an huge atomic // write as this timestamp. // That is, when user wants to PiTR to sometime after this, // everything restored will present after the PiTR. @@ -4964,17 +4964,17 @@ type IngestedSSTs struct { // The hint of the common prefix of the files. // Used for speed up garbage collecting. FilesPrefixHint string `protobuf:"bytes,4,opt,name=files_prefix_hint,json=filesPrefixHint,proto3" json:"files_prefix_hint,omitempty"` - // Whether this piece of extra full backup is finished. + // Whether this batch have finished. // If not, `as_if_ts` should be ignored and this should only // be restored when there is a finished backup with the same // `backup_uuid`. Finished bool `protobuf:"varint,5,opt,name=finished,proto3" json:"finished,omitempty"` // When checkpoint enabled, one restoration may be separated to many - // of `ExtraFullBackup`s. - // `ExtraFullBackup`s sharing the same UUID should be treated as one. + // of `IngestedSST`s. + // `IngestedSST`s sharing the same UUID should be treated as one. // That is: - // - The `as_if_ts` should be the largest one among all finished extra backups. - // - When restoring, all backups sharing the same uuid should be restored or not. + // - The `as_if_ts` should be the largest one among all finished ingested SST batches. + // - When restoring, all batches sharing the same uuid should be restored or not. BackupUuid []byte `protobuf:"bytes,6,opt,name=backup_uuid,json=backupUuid,proto3" json:"backup_uuid,omitempty"` } @@ -5125,9 +5125,9 @@ type Migration struct { Compactions []*LogFileCompaction `protobuf:"bytes,3,rep,name=compactions,proto3" json:"compactions,omitempty"` // Delete all files matches this prefix. DestructPrefix []string `protobuf:"bytes,4,rep,name=destruct_prefix,json=destructPrefix,proto3" json:"destruct_prefix,omitempty"` - // The extra full backups. + // The ingested SSTs. // It is mutable during restoring, hence a reference. - ExtraFullBackupPaths []string `protobuf:"bytes,7,rep,name=extra_full_backup_paths,json=extraFullBackupPaths,proto3" json:"extra_full_backup_paths,omitempty"` + IngestedSstPaths []string `protobuf:"bytes,7,rep,name=ingested_sst_paths,json=ingestedSstPaths,proto3" json:"ingested_sst_paths,omitempty"` } func (m *Migration) Reset() { *m = Migration{} } @@ -5205,9 +5205,9 @@ func (m *Migration) GetDestructPrefix() []string { return nil } -func (m *Migration) GetExtraFullBackupPaths() []string { +func (m *Migration) GetIngestedSstPaths() []string { if m != nil { - return m.ExtraFullBackupPaths + return m.IngestedSstPaths } return nil } @@ -5287,312 +5287,311 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4865 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7b, 0xcd, 0x6f, 0x1c, 0x47, - 0x76, 0x38, 0x7b, 0xbe, 0xe7, 0xcd, 0x27, 0x8b, 0xa4, 0x34, 0xa6, 0x2d, 0x8a, 0x6e, 0xd9, 0x5a, - 0xfe, 0xe8, 0x15, 0xd7, 0x4b, 0xd9, 0x5a, 0xfd, 0xe2, 0x0d, 0x0c, 0x7e, 0xc9, 0xa4, 0x25, 0x4a, - 0x4c, 0x0f, 0xed, 0x45, 0x1c, 0x04, 0x8d, 0x9e, 0xee, 0x1a, 0xb2, 0x97, 0x3d, 0xdd, 0xbd, 0x5d, - 0x35, 0x94, 0xe8, 0x43, 0x0e, 0x39, 0xe4, 0xb6, 0xd8, 0x4d, 0x90, 0x43, 0xfe, 0x81, 0x00, 0x39, - 0x24, 0x40, 0xae, 0x39, 0x25, 0x87, 0x04, 0x31, 0x90, 0x00, 0x31, 0x90, 0x1c, 0xf6, 0x96, 0xc0, - 0x46, 0xf2, 0x47, 0x04, 0x58, 0x20, 0xa8, 0x57, 0x55, 0x3d, 0xdd, 0xc3, 0x21, 0x25, 0x39, 0xc1, - 0x9e, 0x38, 0xf5, 0xde, 0xab, 0xae, 0x57, 0xef, 0xfb, 0x55, 0x15, 0x01, 0x06, 0x49, 0x3c, 0xd8, - 0x88, 0x93, 0x88, 0x47, 0xa4, 0x32, 0x70, 0xdc, 0xb3, 0x71, 0xbc, 0xdc, 0x3a, 0x3b, 0x4f, 0x62, - 0x57, 0x83, 0x97, 0x5b, 0x34, 0x49, 0xa2, 0x94, 0x6a, 0xb9, 0x39, 0xa2, 0xdc, 0x49, 0x47, 0x84, - 0x86, 0x6e, 0x72, 0x11, 0x73, 0x3f, 0x0a, 0x53, 0xd8, 0xe2, 0x49, 0x74, 0x12, 0xe1, 0xcf, 0x1f, - 0x88, 0x5f, 0x0a, 0xda, 0x49, 0xc6, 0x8c, 0xe3, 0x4f, 0x09, 0x30, 0xff, 0xd2, 0x80, 0xb7, 0x8e, - 0x12, 0x1a, 0x3b, 0x09, 0xed, 0x87, 0x4e, 0xcc, 0x4e, 0x23, 0xbe, 0x8d, 0x0c, 0x58, 0xf4, 0x67, - 0x63, 0xca, 0x38, 0x79, 0x08, 0x05, 0x7e, 0xd1, 0x33, 0x56, 0x8d, 0xb5, 0xf6, 0xe6, 0xda, 0x86, - 0x64, 0x6e, 0xe3, 0xba, 0x19, 0xc7, 0x17, 0x31, 0xb5, 0x0a, 0xfc, 0x82, 0xac, 0x41, 0x35, 0xa1, - 0x27, 0x7e, 0x14, 0xb2, 0x5e, 0x61, 0xb5, 0xb8, 0xd6, 0xd8, 0x6c, 0x6f, 0x28, 0xae, 0x2d, 0x04, - 0x5b, 0x1a, 0x4d, 0xd6, 0xa0, 0x1b, 0x50, 0x87, 0x51, 0xdb, 0x0f, 0x6d, 0x46, 0xdd, 0x28, 0xf4, - 0x58, 0xaf, 0xb8, 0x6a, 0xac, 0x95, 0xac, 0x36, 0xc2, 0x0f, 0xc2, 0xbe, 0x84, 0x9a, 0xff, 0x66, - 0xc0, 0xad, 0x2b, 0x16, 0x67, 0x71, 0x14, 0x32, 0x4a, 0x1e, 0x64, 0xf8, 0xbd, 0x7b, 0x2d, 0xbf, - 0x7b, 0xe7, 0x34, 0x9c, 0x70, 0x7b, 0x17, 0x2a, 0x92, 0x9d, 0x5e, 0x61, 0xd5, 0x98, 0xc1, 0xac, - 0xc2, 0x92, 0x77, 0xa0, 0x8c, 0xaa, 0x40, 0x06, 0x05, 0x99, 0x56, 0xcc, 0x9e, 0xf8, 0x6b, 0x49, - 0x24, 0xb9, 0x07, 0x0b, 0x81, 0xc3, 0xb8, 0xad, 0xb6, 0xc5, 0xec, 0x73, 0x27, 0xf0, 0xbd, 0x5e, - 0x69, 0xd5, 0x58, 0xab, 0x59, 0x5d, 0x81, 0x7a, 0x82, 0x1b, 0x63, 0x9f, 0x0b, 0xb8, 0xf9, 0x9f, - 0x55, 0x00, 0xc9, 0xd4, 0x21, 0xe5, 0x0e, 0xb9, 0x05, 0xe0, 0x06, 0x63, 0xc6, 0x69, 0x62, 0xfb, - 0x1e, 0xee, 0xa5, 0x64, 0xd5, 0x15, 0xe4, 0xc0, 0x23, 0xdf, 0x83, 0x8e, 0x46, 0x9f, 0xd3, 0x84, - 0x69, 0x9e, 0xeb, 0x56, 0x5b, 0x81, 0x3f, 0x97, 0x50, 0xf1, 0x9d, 0xc1, 0x84, 0xa6, 0x81, 0x34, - 0xf5, 0x41, 0x8a, 0xee, 0x41, 0x55, 0xe3, 0x9a, 0xab, 0xc6, 0x5a, 0xd9, 0xd2, 0x43, 0x62, 0x42, - 0x79, 0xe8, 0x07, 0x94, 0xf5, 0x4a, 0xa8, 0xb8, 0xa6, 0x96, 0xe3, 0x23, 0x3f, 0xa0, 0x96, 0x44, - 0x91, 0x1f, 0x00, 0x88, 0x1f, 0xb6, 0x1f, 0x7a, 0xf4, 0x45, 0xaf, 0x85, 0xd2, 0xe8, 0x6a, 0x42, - 0xb1, 0x0d, 0x24, 0xae, 0x0b, 0x9a, 0x03, 0x41, 0x42, 0xee, 0x40, 0x8b, 0x71, 0x27, 0xe1, 0x29, - 0x43, 0x65, 0xdc, 0x58, 0x13, 0x81, 0x9a, 0xa7, 0xdb, 0xd0, 0xa0, 0xa1, 0x97, 0x92, 0x54, 0x90, - 0x04, 0x68, 0xe8, 0x69, 0x82, 0x35, 0xa8, 0x32, 0xf7, 0x94, 0x8e, 0x1c, 0xd6, 0xab, 0x2a, 0xab, - 0x52, 0x6b, 0xf6, 0x11, 0x6c, 0x69, 0x34, 0xb9, 0x0f, 0x4d, 0xf9, 0x53, 0xb1, 0xd8, 0xbe, 0x82, - 0xc5, 0x86, 0xa4, 0x92, 0x4c, 0x2e, 0x43, 0xdd, 0x67, 0x76, 0xe2, 0x3c, 0xb7, 0xcf, 0xce, 0x7b, - 0x35, 0x54, 0x57, 0xd5, 0x67, 0x96, 0xf3, 0xfc, 0xf1, 0xb9, 0xd8, 0xb1, 0x40, 0x24, 0x4e, 0x78, - 0x42, 0x59, 0xaf, 0x8e, 0xab, 0xa7, 0x9f, 0xb3, 0x9c, 0xe7, 0x96, 0x40, 0x58, 0xf5, 0x44, 0xfd, - 0x62, 0xe4, 0x21, 0x74, 0xd2, 0x09, 0x8a, 0x89, 0xce, 0x15, 0x4c, 0xb4, 0xf4, 0x2c, 0xc9, 0x06, - 0x81, 0x92, 0xe7, 0x05, 0xac, 0x07, 0xab, 0xc6, 0x5a, 0xd3, 0xc2, 0xdf, 0xe4, 0x87, 0xd0, 0xf0, - 0xbc, 0x40, 0x7e, 0x87, 0xb2, 0x5e, 0xf7, 0x8a, 0x2f, 0x81, 0xe7, 0x05, 0x07, 0x92, 0x46, 0x88, - 0x5c, 0xa2, 0xed, 0x84, 0xb2, 0x71, 0xc0, 0x7b, 0xf3, 0x68, 0x03, 0xcd, 0x81, 0xf6, 0x99, 0x71, - 0xc0, 0xc9, 0x07, 0xd0, 0x70, 0x62, 0x3f, 0x15, 0x39, 0x41, 0xd7, 0x59, 0xd8, 0xd0, 0xf1, 0x67, - 0xeb, 0xe8, 0x40, 0xc9, 0xde, 0x02, 0x27, 0xf6, 0xb5, 0x1e, 0xee, 0x43, 0x2d, 0x8e, 0x02, 0xdf, - 0xf5, 0x29, 0xeb, 0x2d, 0xa0, 0x28, 0x6e, 0xa6, 0xde, 0x16, 0x38, 0x2e, 0x1d, 0xd1, 0x90, 0x1f, - 0x09, 0x82, 0x0b, 0x2b, 0x25, 0x24, 0x1f, 0xc0, 0x8d, 0x90, 0x3e, 0xb7, 0xdd, 0x28, 0x08, 0x1c, - 0x11, 0xad, 0x98, 0x4d, 0x43, 0x67, 0x10, 0x50, 0xaf, 0xb7, 0x88, 0x8c, 0x2d, 0x86, 0xf4, 0xf9, - 0x4e, 0x8a, 0xdc, 0x93, 0x38, 0xa5, 0x13, 0xfe, 0x22, 0x14, 0x3a, 0x59, 0xd2, 0x3a, 0x39, 0x7e, - 0x11, 0x3e, 0x3e, 0x27, 0xeb, 0x50, 0xf5, 0x06, 0xf6, 0xc8, 0x89, 0x59, 0xef, 0x06, 0x72, 0x31, - 0x9f, 0x72, 0xe1, 0xf3, 0x64, 0x77, 0xfb, 0xd0, 0x89, 0xad, 0x8a, 0x37, 0x38, 0x74, 0x62, 0x46, - 0xee, 0x42, 0x69, 0x14, 0x79, 0xb4, 0x77, 0x13, 0x77, 0x48, 0x34, 0xa1, 0x72, 0xbc, 0xc8, 0xa3, - 0x16, 0xe2, 0xc9, 0x7b, 0x50, 0x51, 0x3a, 0xee, 0xe1, 0x27, 0x17, 0xf2, 0x94, 0x52, 0xcd, 0x8a, - 0x44, 0x18, 0xac, 0x12, 0x31, 0xf3, 0xbf, 0xa4, 0xbd, 0x37, 0xa4, 0xc1, 0x4a, 0x50, 0xdf, 0xff, - 0x92, 0x7e, 0x5a, 0xaa, 0x15, 0xbb, 0x25, 0xab, 0x14, 0x3b, 0xfc, 0xd4, 0x3c, 0x81, 0x46, 0xe6, - 0x1b, 0xe4, 0x4d, 0xa8, 0x4b, 0x8f, 0x38, 0xa3, 0x32, 0x64, 0x35, 0xad, 0x1a, 0x02, 0x1e, 0xd3, - 0x0b, 0x72, 0x13, 0xaa, 0xc2, 0x13, 0x04, 0xaa, 0x80, 0xa8, 0x0a, 0x0d, 0x3d, 0x81, 0x48, 0x9d, - 0xb3, 0x78, 0xa5, 0x73, 0x9a, 0x7f, 0x64, 0x40, 0xfd, 0x58, 0x48, 0x0f, 0xe3, 0xc9, 0x6d, 0x68, - 0xc4, 0xa7, 0x17, 0xcc, 0x77, 0x9d, 0x40, 0x07, 0x94, 0xa2, 0x05, 0x1a, 0x74, 0x20, 0x24, 0x5c, - 0x73, 0x13, 0xf7, 0xc1, 0x07, 0x2f, 0xa2, 0x04, 0x17, 0x2b, 0x59, 0xe9, 0x58, 0x30, 0xc9, 0x23, - 0xee, 0x04, 0xf6, 0xd9, 0xb9, 0x8e, 0xca, 0x35, 0x04, 0x3c, 0x3e, 0xc7, 0xdd, 0x4b, 0xe4, 0xe0, - 0x82, 0x63, 0xb8, 0xc0, 0xdd, 0x23, 0x68, 0x5b, 0x40, 0xcc, 0x5f, 0x17, 0xa0, 0x24, 0x18, 0x13, - 0x16, 0x1d, 0x3a, 0x23, 0x8a, 0x8b, 0xd7, 0x2d, 0xfc, 0x4d, 0x6e, 0x40, 0x85, 0x9d, 0x3a, 0x9b, - 0x1f, 0x3e, 0xd0, 0x3b, 0x94, 0xa3, 0xbc, 0x5c, 0x8a, 0x57, 0xcb, 0xa5, 0x94, 0x93, 0xcb, 0xff, - 0x4d, 0x7c, 0xc9, 0x8a, 0xa2, 0x7a, 0x9d, 0x28, 0x6a, 0xd7, 0x8b, 0xa2, 0x3e, 0x2d, 0x0a, 0xb2, - 0x09, 0x0d, 0x2e, 0x54, 0x62, 0x8b, 0xc4, 0xc2, 0x7a, 0xad, 0xbc, 0xb9, 0xa6, 0xda, 0xb2, 0x80, - 0xeb, 0x9f, 0x8c, 0xb4, 0xa1, 0xe0, 0x0e, 0x31, 0x0a, 0xd4, 0xad, 0x82, 0x3b, 0x14, 0x52, 0x44, - 0x33, 0x6b, 0xe0, 0xd7, 0xf1, 0xb7, 0xe0, 0xca, 0xf5, 0xe3, 0x53, 0x91, 0x2c, 0xce, 0x31, 0x90, - 0x37, 0xad, 0x9a, 0x04, 0x1c, 0x9c, 0x9b, 0x3f, 0x2f, 0x40, 0x4d, 0x87, 0x06, 0xf2, 0x1e, 0x80, - 0x58, 0xdb, 0x96, 0xe6, 0x63, 0xcc, 0x30, 0x9f, 0xfa, 0x48, 0xd1, 0x32, 0x41, 0xec, 0x39, 0x29, - 0x71, 0x61, 0x16, 0xb1, 0xc0, 0x4b, 0xe2, 0x4c, 0x54, 0x2e, 0x5e, 0x1f, 0x95, 0xf3, 0x41, 0xb4, - 0xf4, 0x2a, 0x41, 0x34, 0x8d, 0x61, 0x72, 0x4e, 0xe5, 0x6a, 0xa7, 0xd4, 0x81, 0x4d, 0xce, 0xd4, - 0x41, 0xb4, 0xbc, 0x5a, 0xd4, 0x41, 0xd4, 0x7c, 0x17, 0x3a, 0x53, 0xe1, 0x49, 0x90, 0xf9, 0xe1, - 0x30, 0x52, 0x0e, 0x88, 0xbf, 0xcd, 0x27, 0x00, 0x7d, 0xee, 0x70, 0xb6, 0x1d, 0x44, 0xee, 0xd9, - 0xcb, 0xfd, 0xe7, 0x16, 0xc0, 0x4f, 0x59, 0x14, 0xda, 0xa8, 0x39, 0x65, 0xcc, 0x75, 0x01, 0x41, - 0xad, 0x9a, 0x3f, 0x82, 0x3a, 0x7e, 0x0d, 0x95, 0xb0, 0x0e, 0x95, 0x81, 0xf8, 0xaa, 0x56, 0x40, - 0x1a, 0x87, 0x26, 0x0b, 0x5a, 0x8a, 0xc2, 0xfc, 0x6b, 0x03, 0xda, 0xe9, 0xcc, 0x34, 0x33, 0xbc, - 0xb2, 0x1f, 0xbd, 0x01, 0x35, 0x61, 0x21, 0x36, 0x0d, 0x5d, 0xe5, 0xb9, 0x55, 0x31, 0xde, 0x0b, - 0xdd, 0x14, 0x15, 0x25, 0xbe, 0xf2, 0x5a, 0x44, 0x3d, 0x4b, 0xfc, 0xbc, 0x3d, 0x95, 0xf3, 0xf6, - 0x24, 0x44, 0xe1, 0x87, 0x81, 0x1f, 0x52, 0x5b, 0x28, 0x1f, 0xfd, 0xa7, 0x69, 0x81, 0x04, 0xed, - 0x3a, 0xdc, 0x31, 0xff, 0xb0, 0x00, 0x15, 0xa9, 0x73, 0x61, 0xbc, 0xde, 0x40, 0x89, 0xb5, 0xe0, - 0x0d, 0xc8, 0x22, 0x94, 0xb3, 0x02, 0x92, 0x83, 0x9c, 0xc3, 0x15, 0xaf, 0x73, 0xb8, 0xd2, 0xf5, - 0x0e, 0x57, 0xbe, 0xe4, 0x70, 0xff, 0x0f, 0xba, 0xdc, 0x1f, 0x06, 0x0e, 0x3b, 0xb5, 0x13, 0x1a, - 0x07, 0xbe, 0xeb, 0x30, 0x64, 0xb8, 0x65, 0x75, 0x14, 0xdc, 0x52, 0x60, 0xc1, 0x1a, 0x13, 0x72, - 0x46, 0x97, 0x6f, 0x5a, 0x72, 0x40, 0x7e, 0x04, 0x0d, 0xfc, 0xa1, 0x72, 0x77, 0x0d, 0xf5, 0x75, - 0x23, 0xa7, 0xaf, 0x54, 0x31, 0x16, 0x20, 0x29, 0xfe, 0x36, 0x0f, 0xa1, 0x7c, 0xb0, 0x7b, 0xe8, - 0xc4, 0x82, 0xc7, 0x71, 0xcc, 0x78, 0x42, 0x9d, 0x51, 0xc6, 0x72, 0x34, 0xe8, 0xc0, 0x13, 0x41, - 0xcb, 0x8b, 0x9e, 0x87, 0x13, 0x92, 0x02, 0x92, 0x34, 0x27, 0xc0, 0x03, 0xcf, 0x7c, 0x0e, 0x4d, - 0x91, 0xcd, 0x64, 0x88, 0x70, 0xe2, 0x99, 0x36, 0xf0, 0x0e, 0x54, 0x7c, 0x4f, 0x24, 0x42, 0x55, - 0xbf, 0xb6, 0x34, 0x9b, 0xc8, 0x88, 0x55, 0xf6, 0x3d, 0x31, 0xf3, 0x1e, 0x40, 0xec, 0x24, 0xdc, - 0xc7, 0xfc, 0xaa, 0x5c, 0x75, 0x8a, 0x32, 0x43, 0x60, 0x32, 0xa8, 0xa7, 0x69, 0xf4, 0x7f, 0xb1, - 0xea, 0xf7, 0xa1, 0x82, 0xba, 0xd6, 0x2b, 0x2e, 0x66, 0x73, 0xb4, 0xde, 0x95, 0xa5, 0x68, 0xcc, - 0x23, 0xa8, 0xe9, 0x38, 0xf0, 0x1d, 0x33, 0xa4, 0x8c, 0x9a, 0x45, 0x1d, 0x35, 0xcd, 0x5d, 0x68, - 0xef, 0xa8, 0xea, 0x79, 0x17, 0xcb, 0x74, 0x51, 0xfa, 0xba, 0xe3, 0x24, 0xa1, 0x21, 0x57, 0xe5, - 0xb5, 0x1e, 0x0a, 0x4c, 0x22, 0x1b, 0x19, 0x95, 0x09, 0xf5, 0xd0, 0xfc, 0x67, 0x03, 0xca, 0x72, - 0x76, 0x17, 0x8a, 0x23, 0x76, 0xa2, 0x04, 0x21, 0x7e, 0x92, 0x6d, 0xe8, 0x4e, 0x2a, 0x76, 0x3b, - 0xdb, 0x20, 0xa4, 0xe6, 0x92, 0xe7, 0x60, 0x7f, 0x2e, 0xad, 0xd6, 0x0f, 0x3c, 0xf9, 0xd5, 0x0d, - 0xa8, 0x9d, 0x9d, 0xab, 0xb9, 0x25, 0x9c, 0x3b, 0x9f, 0x16, 0x61, 0x8f, 0xe9, 0x85, 0x9e, 0x56, - 0x3d, 0x3b, 0x97, 0xf4, 0xf7, 0xa1, 0x29, 0x7b, 0x12, 0x35, 0xa7, 0x3c, 0xab, 0x21, 0xd9, 0x9f, - 0xb3, 0x1a, 0x92, 0x0a, 0x87, 0xdb, 0x35, 0xa8, 0x78, 0x94, 0x3b, 0x7e, 0x60, 0xfe, 0x8d, 0x01, - 0x2b, 0x7d, 0xb4, 0x30, 0x19, 0x41, 0x8f, 0x1d, 0x76, 0xd6, 0xa7, 0xee, 0x38, 0xf1, 0xf9, 0xc5, - 0x4e, 0x14, 0x0e, 0x7d, 0xb1, 0x2b, 0x12, 0x07, 0x8e, 0x1f, 0x72, 0xfa, 0x82, 0xa3, 0xbf, 0xa7, - 0x6a, 0xc8, 0x84, 0xad, 0x1d, 0x19, 0x1a, 0xc2, 0x61, 0xb4, 0x3f, 0x67, 0x75, 0x53, 0x7a, 0x11, - 0x0c, 0x84, 0x2e, 0xf6, 0x60, 0x7e, 0xe4, 0xa0, 0x60, 0xce, 0xe8, 0x85, 0xed, 0xe2, 0x87, 0x95, - 0xb1, 0xa4, 0x05, 0xe3, 0x21, 0x12, 0x3c, 0xa6, 0x6a, 0xdd, 0xfd, 0x39, 0xab, 0x33, 0xca, 0x83, - 0xb6, 0x9b, 0x00, 0x93, 0x26, 0xd7, 0x0c, 0x00, 0x26, 0xcb, 0x92, 0x8f, 0xa1, 0xa1, 0x02, 0x16, - 0xbf, 0x88, 0xa9, 0xea, 0xfd, 0x56, 0x36, 0x72, 0x4d, 0xf1, 0x5e, 0x3a, 0x38, 0xa4, 0xfc, 0x34, - 0xf2, 0x2c, 0x90, 0x53, 0x44, 0xff, 0x87, 0xfd, 0x96, 0xfc, 0xc0, 0xc4, 0x96, 0x54, 0x0c, 0x7c, - 0x4c, 0x2f, 0xcc, 0x3f, 0x35, 0xa0, 0x33, 0xc5, 0x22, 0xf9, 0x04, 0x3a, 0x93, 0xef, 0xbf, 0xce, - 0xba, 0xed, 0x09, 0x1a, 0xd7, 0x7e, 0x08, 0x8d, 0x89, 0x7c, 0x74, 0x9e, 0xbd, 0x99, 0xff, 0x48, - 0xba, 0xb8, 0x05, 0xa9, 0x5c, 0x98, 0xb9, 0x03, 0x9d, 0x7e, 0x94, 0x70, 0xea, 0xf5, 0xc7, 0x03, - 0x95, 0xf1, 0xde, 0x07, 0x60, 0xe3, 0x81, 0x4e, 0x94, 0x86, 0xaa, 0x30, 0x32, 0x46, 0xa4, 0xb2, - 0x2b, 0xd3, 0x33, 0xcc, 0x7f, 0xaf, 0x40, 0x2b, 0xdf, 0xf0, 0xbf, 0xa4, 0xf9, 0xcc, 0x79, 0x64, - 0xe1, 0x6a, 0x8f, 0x2c, 0x5e, 0x5f, 0x9b, 0x95, 0x5e, 0x5e, 0x9b, 0x95, 0x2f, 0xd5, 0x66, 0xb7, - 0x44, 0xed, 0xc0, 0xa9, 0x1d, 0xf8, 0x23, 0x9f, 0xab, 0xea, 0xac, 0x2e, 0x20, 0x4f, 0x04, 0x80, - 0xac, 0x42, 0xc3, 0x8d, 0x42, 0xe9, 0xc8, 0xee, 0x05, 0x16, 0x68, 0x2d, 0x2b, 0x0b, 0x22, 0x1f, - 0x43, 0x87, 0xf1, 0x28, 0x71, 0x4e, 0xa8, 0x2d, 0x4c, 0x8f, 0x86, 0x1e, 0xd6, 0x69, 0xb9, 0xa0, - 0x8e, 0xe8, 0x6d, 0x89, 0xb5, 0xda, 0x2c, 0x37, 0xce, 0xb7, 0x87, 0x90, 0x6f, 0x0f, 0x65, 0xd4, - 0x69, 0xa4, 0xb5, 0x9a, 0x88, 0x09, 0xd1, 0x28, 0x4e, 0x28, 0x63, 0xa9, 0x8d, 0x34, 0xd1, 0x46, - 0x52, 0xc3, 0xdf, 0x99, 0xe0, 0xf1, 0x20, 0xa2, 0xe3, 0xe6, 0x01, 0xe4, 0x3d, 0x98, 0xcf, 0x7e, - 0x23, 0xa0, 0xe7, 0x34, 0xc0, 0x5e, 0xbb, 0x6c, 0x65, 0x3f, 0xfe, 0x44, 0xc0, 0xc9, 0xfd, 0xd4, - 0x0f, 0xb0, 0x9e, 0x69, 0x5f, 0xe5, 0xa7, 0xda, 0xf6, 0xd1, 0x79, 0x3e, 0x82, 0x8e, 0xc7, 0xb8, - 0x9d, 0xed, 0x00, 0x3b, 0x57, 0x77, 0x80, 0x2d, 0x8f, 0xf1, 0xad, 0x49, 0x13, 0x98, 0xb7, 0xb7, - 0xee, 0xcb, 0xed, 0x8d, 0x1c, 0x41, 0x8f, 0xa1, 0xd1, 0xda, 0x93, 0x89, 0xf6, 0x49, 0x12, 0x8d, - 0x63, 0xd6, 0x5b, 0xca, 0xb7, 0x91, 0x53, 0xc6, 0x6d, 0x2d, 0xb1, 0x3c, 0xe0, 0x13, 0x9c, 0x45, - 0xde, 0x16, 0x61, 0x10, 0xd3, 0xb8, 0x9d, 0x50, 0xc7, 0xc3, 0x16, 0xb7, 0x26, 0x82, 0x1e, 0xc2, - 0x2c, 0xea, 0x78, 0x69, 0xe3, 0x47, 0x5e, 0xd2, 0xf8, 0xbd, 0x09, 0xf5, 0x71, 0xe8, 0xff, 0x6c, - 0x4c, 0x85, 0xe5, 0x2f, 0xa0, 0x22, 0x6b, 0x12, 0x70, 0xe0, 0x89, 0x4e, 0xd3, 0x8d, 0x30, 0xb4, - 0x61, 0xb3, 0x2a, 0xaa, 0x56, 0xbd, 0xd1, 0x1d, 0x09, 0xb7, 0x34, 0xc1, 0xa7, 0xa5, 0x5a, 0xa5, - 0x5b, 0x55, 0x3d, 0xdf, 0x7f, 0x15, 0x60, 0x71, 0x3a, 0xce, 0xa2, 0xe4, 0xdf, 0x87, 0xaa, 0xb2, - 0x2e, 0x15, 0x52, 0xaf, 0x32, 0x42, 0x4d, 0x86, 0x45, 0x1b, 0x7a, 0x11, 0x67, 0x3a, 0x39, 0xe1, - 0xf8, 0x98, 0x91, 0x25, 0x10, 0xae, 0x26, 0x10, 0xb2, 0x86, 0x2a, 0xd3, 0xd0, 0x3b, 0x66, 0x69, - 0xce, 0x2e, 0x65, 0x72, 0xf6, 0xdb, 0xd0, 0x94, 0x7d, 0xc8, 0xd0, 0x0f, 0x38, 0x4d, 0xb0, 0x3c, - 0xae, 0x5b, 0xb2, 0x37, 0x79, 0x84, 0xa0, 0x99, 0xa6, 0x5b, 0x79, 0x4d, 0xd3, 0x7d, 0x06, 0x1d, - 0xa6, 0xd2, 0x89, 0x0e, 0xfb, 0x55, 0xdc, 0xe6, 0xdd, 0xc9, 0x36, 0xaf, 0xcb, 0x3e, 0x56, 0x9b, - 0x4d, 0x8d, 0xf1, 0x44, 0x6d, 0x1c, 0x7b, 0x22, 0x04, 0x70, 0xa6, 0x3b, 0x70, 0xab, 0x22, 0x0a, - 0xaf, 0x31, 0x33, 0xbf, 0x2e, 0x88, 0x62, 0x39, 0xe7, 0xae, 0x26, 0x94, 0xc2, 0x28, 0x8a, 0x95, - 0x7c, 0xd3, 0xee, 0xe5, 0x69, 0x14, 0xc5, 0xfb, 0x73, 0x16, 0xe2, 0xc8, 0xbb, 0x50, 0x0e, 0x22, - 0xd7, 0x09, 0xa6, 0x2b, 0x98, 0x27, 0x02, 0xb8, 0x3f, 0x67, 0x49, 0x2c, 0x79, 0x0b, 0x0a, 0xec, - 0xbe, 0xca, 0xe9, 0x90, 0xee, 0xe0, 0xfe, 0xfe, 0x9c, 0x55, 0x60, 0xf7, 0xc9, 0x6d, 0x28, 0x9e, - 0xb8, 0x4c, 0xa5, 0xed, 0x86, 0x46, 0x7f, 0xb2, 0xd3, 0xdf, 0x9f, 0xb3, 0x04, 0x86, 0x7c, 0x04, - 0x2d, 0x37, 0x88, 0xc6, 0x9e, 0xed, 0x5d, 0x84, 0xce, 0xc8, 0x77, 0x55, 0xb6, 0x5e, 0x9c, 0x54, - 0x07, 0xd1, 0xd8, 0xdb, 0x95, 0xb8, 0xfd, 0x39, 0xab, 0xe9, 0x66, 0xc6, 0x62, 0x1b, 0xa7, 0xde, - 0x50, 0x16, 0xaf, 0x99, 0x6d, 0xec, 0xef, 0x3e, 0x12, 0xdf, 0x47, 0x1c, 0xd9, 0x07, 0xe2, 0x7c, - 0x39, 0x4e, 0xa8, 0x3d, 0x08, 0xa2, 0x81, 0xad, 0x0d, 0x4b, 0x4a, 0xbc, 0xa7, 0x67, 0x6c, 0x09, - 0x8a, 0xed, 0x20, 0x1a, 0x28, 0x39, 0x89, 0x8c, 0xed, 0x4c, 0xc1, 0xb6, 0xeb, 0x50, 0x55, 0xc1, - 0xd1, 0xac, 0x40, 0x49, 0xc8, 0xca, 0x7c, 0x13, 0xca, 0x28, 0x0e, 0x61, 0x4f, 0xc2, 0xa8, 0x75, - 0x0d, 0x88, 0x06, 0xfe, 0x27, 0x25, 0x28, 0xf4, 0xef, 0x8b, 0x3a, 0x9e, 0x86, 0x5e, 0x1c, 0xf9, - 0xaa, 0xa6, 0xaa, 0x5b, 0xe9, 0x58, 0x34, 0x28, 0x99, 0xc3, 0xd5, 0x7a, 0x7a, 0x98, 0x7a, 0x03, - 0x2a, 0x83, 0xb1, 0x7b, 0x46, 0xb9, 0x2a, 0xd6, 0xd4, 0x48, 0xc0, 0xe3, 0x84, 0x0e, 0xfd, 0x17, - 0xca, 0x70, 0xd5, 0x48, 0xa6, 0x11, 0x19, 0xbf, 0xdd, 0xc0, 0x61, 0xb2, 0xe8, 0xaf, 0x8b, 0x34, - 0x82, 0xc0, 0x1d, 0x01, 0x13, 0xd5, 0x19, 0x63, 0xd2, 0x5e, 0xeb, 0x96, 0xf8, 0x29, 0x20, 0x8e, - 0x1b, 0xa0, 0x30, 0xea, 0x96, 0xf8, 0x29, 0x32, 0x89, 0xe3, 0xba, 0x94, 0x31, 0xcc, 0x55, 0x35, - 0x79, 0x32, 0x2a, 0x21, 0x22, 0x5d, 0xad, 0xc3, 0x3c, 0xa3, 0x6e, 0x42, 0xb9, 0x9d, 0xa1, 0xaa, - 0x23, 0x55, 0x47, 0x22, 0xb6, 0x52, 0xda, 0x35, 0xe8, 0x0e, 0xa3, 0xc4, 0xa5, 0xb6, 0x10, 0x86, - 0xcd, 0xf8, 0x45, 0x40, 0x55, 0x66, 0x68, 0x23, 0xfc, 0xc8, 0xe1, 0xa7, 0x7d, 0x01, 0x25, 0x77, - 0xa0, 0xcd, 0x18, 0xb5, 0xcf, 0x46, 0xf8, 0x3d, 0x11, 0x63, 0x64, 0xb2, 0x68, 0x30, 0x46, 0x1f, - 0x8f, 0xc4, 0xc7, 0x0e, 0x3c, 0xe1, 0xe3, 0x49, 0x14, 0x50, 0xdb, 0x49, 0xe4, 0xa9, 0x6c, 0xdd, - 0xaa, 0x8a, 0xf1, 0x56, 0x22, 0xf3, 0xe3, 0x0b, 0x4e, 0x93, 0x50, 0xb6, 0xa1, 0x2d, 0xc4, 0x82, - 0x06, 0x1d, 0x78, 0x64, 0x03, 0x16, 0xa2, 0xc1, 0x4f, 0xa9, 0xcb, 0x6d, 0xd1, 0x3e, 0xa6, 0x67, - 0x6b, 0x6d, 0xe4, 0x66, 0x5e, 0xa2, 0x9e, 0x44, 0xee, 0x99, 0x3e, 0x58, 0x13, 0xe2, 0xd4, 0x2e, - 0x1e, 0x9d, 0x51, 0x19, 0xf9, 0x85, 0x38, 0x95, 0x1b, 0x0b, 0x98, 0xd0, 0x6b, 0x9c, 0x44, 0xe7, - 0xbe, 0x47, 0x13, 0x3c, 0x73, 0xac, 0x5b, 0xe9, 0x58, 0x14, 0xcb, 0x71, 0x12, 0x0d, 0xfd, 0x80, - 0xaa, 0x93, 0x45, 0x3d, 0x34, 0xbf, 0x32, 0xa0, 0xf8, 0xc9, 0x4e, 0xff, 0x65, 0x56, 0xa1, 0xb4, - 0x5f, 0xb8, 0x42, 0xfb, 0xc5, 0xeb, 0xb5, 0x5f, 0x9a, 0xa1, 0xfd, 0x77, 0xa1, 0x1d, 0x27, 0xd4, - 0xa3, 0x43, 0x3f, 0xa4, 0x9e, 0x2d, 0xd4, 0x2e, 0x6d, 0xa4, 0x35, 0x81, 0x6e, 0xb9, 0x81, 0xe8, - 0x0d, 0x5d, 0x01, 0x08, 0xb9, 0xef, 0x04, 0x0c, 0x9d, 0x46, 0x59, 0x4c, 0x27, 0x03, 0x17, 0x6e, - 0x61, 0x8e, 0xa0, 0x8b, 0x7e, 0xb3, 0x33, 0x66, 0x3c, 0x1a, 0x61, 0xf1, 0x25, 0x56, 0xc9, 0x94, - 0x7f, 0xba, 0x2a, 0xae, 0x5b, 0xad, 0x09, 0x54, 0x90, 0x6d, 0xc2, 0x52, 0x9e, 0xcc, 0xce, 0xf4, - 0xe9, 0x75, 0x6b, 0x21, 0x47, 0xdd, 0x47, 0x94, 0x08, 0x63, 0xdd, 0x69, 0x3f, 0xfd, 0xcd, 0x8b, - 0xf1, 0x6d, 0x68, 0x3a, 0xae, 0x1b, 0x8d, 0x43, 0x6e, 0x63, 0x02, 0x91, 0x42, 0x6c, 0x28, 0xd8, - 0x53, 0x91, 0x47, 0x6e, 0x01, 0xb0, 0x53, 0x27, 0xa1, 0xb2, 0xde, 0x93, 0xc2, 0xab, 0x4b, 0x88, - 0xd8, 0xfb, 0xc4, 0xc5, 0x98, 0x7f, 0x92, 0x77, 0xb1, 0xbe, 0x7f, 0x22, 0x14, 0x90, 0x11, 0x0d, - 0x73, 0xa3, 0x98, 0x6a, 0x0f, 0x9b, 0xc0, 0xfb, 0x02, 0x4c, 0x3e, 0xbe, 0x24, 0x6c, 0x98, 0x11, - 0xd6, 0x32, 0xea, 0x99, 0x52, 0x83, 0xf9, 0xc7, 0x06, 0x54, 0xb6, 0xa5, 0x50, 0x5e, 0x2d, 0x4a, - 0x15, 0xaf, 0x88, 0x52, 0xa5, 0x2b, 0x04, 0x5c, 0xbe, 0x5e, 0xc0, 0x95, 0xcb, 0x02, 0x16, 0xdd, - 0x64, 0x33, 0x1b, 0xf4, 0xc9, 0xdd, 0x74, 0x15, 0x43, 0x35, 0x72, 0xba, 0x4c, 0x41, 0x68, 0xba, - 0xea, 0x1d, 0x68, 0x69, 0xff, 0x93, 0xaa, 0x91, 0x5a, 0x6f, 0x6a, 0x20, 0xea, 0xe6, 0x43, 0x28, - 0x3b, 0x9c, 0x27, 0xba, 0xe1, 0xbe, 0x3d, 0x2b, 0xcd, 0x6c, 0x6c, 0x09, 0x8a, 0xbd, 0x90, 0x27, - 0x17, 0x96, 0xa4, 0x5e, 0x7e, 0x08, 0x30, 0x01, 0x8a, 0xb0, 0x39, 0xb1, 0x6c, 0xf1, 0x93, 0x2c, - 0x42, 0xf9, 0xdc, 0x09, 0xc6, 0x7a, 0x4d, 0x39, 0xf8, 0xad, 0xc2, 0x43, 0xc3, 0x5c, 0x81, 0x92, - 0x48, 0x47, 0x52, 0x86, 0xa3, 0x88, 0xeb, 0x63, 0x02, 0x35, 0x32, 0xff, 0xc1, 0x80, 0xf6, 0xd4, - 0x4d, 0xdd, 0x1d, 0x7d, 0x93, 0x66, 0xe4, 0x13, 0x6f, 0xee, 0x22, 0xed, 0xbb, 0xb5, 0x1b, 0xaf, - 0x72, 0x7f, 0x35, 0x75, 0xed, 0x51, 0x7e, 0xa5, 0x6b, 0x0f, 0xf3, 0x1e, 0xb4, 0x77, 0x02, 0xea, - 0x84, 0x93, 0x7e, 0x29, 0x57, 0x34, 0x1a, 0xf9, 0xa2, 0xd1, 0x3c, 0x82, 0x4e, 0x4a, 0xfe, 0x3a, - 0xdb, 0xee, 0x41, 0x95, 0x8d, 0xd1, 0x57, 0x70, 0xd3, 0x35, 0x4b, 0x0f, 0xcd, 0x87, 0xd0, 0x56, - 0xb7, 0x99, 0x9a, 0x81, 0xbb, 0xd0, 0x61, 0xce, 0x39, 0xb5, 0x79, 0x64, 0x67, 0xeb, 0xc9, 0x9a, - 0xd5, 0x12, 0xe0, 0xe3, 0x48, 0xc5, 0x10, 0xf3, 0xaf, 0x0c, 0xe8, 0xa4, 0x53, 0x5f, 0x53, 0x07, - 0x93, 0x1d, 0x16, 0xa6, 0xca, 0xe2, 0xef, 0x03, 0x71, 0xa3, 0x20, 0x10, 0x49, 0x07, 0xaf, 0x03, - 0x31, 0x3e, 0xa8, 0x22, 0xb4, 0xab, 0x30, 0x42, 0xec, 0x3b, 0x02, 0x2e, 0x12, 0x6b, 0x8e, 0x1a, - 0x0f, 0xb3, 0x65, 0x2f, 0xd8, 0xc9, 0x10, 0xf7, 0xfd, 0x2f, 0xa9, 0xb9, 0x00, 0xf3, 0x3b, 0xa7, - 0xd4, 0x3d, 0xdb, 0xf2, 0x46, 0x7e, 0xa8, 0x36, 0x6b, 0xfe, 0xdc, 0x00, 0x92, 0x85, 0xbe, 0xce, - 0x3e, 0x5e, 0xf5, 0x8a, 0x77, 0x1d, 0xe6, 0x4f, 0x1d, 0x66, 0xc7, 0x34, 0xf4, 0xfc, 0xf0, 0xc4, - 0x76, 0xc4, 0x4a, 0xb8, 0xa3, 0x9a, 0xd5, 0x39, 0x75, 0xd8, 0x91, 0x84, 0x23, 0x03, 0xe6, 0x3f, - 0x19, 0x70, 0x6b, 0x4f, 0x65, 0x60, 0x25, 0x68, 0x8b, 0x0a, 0x35, 0xa4, 0xea, 0x99, 0xd1, 0x73, - 0x1a, 0xaf, 0xd5, 0x73, 0xde, 0x86, 0x86, 0xca, 0xea, 0x19, 0x77, 0x07, 0x09, 0x7a, 0xaa, 0x0a, - 0xfa, 0x44, 0xae, 0x29, 0x29, 0x64, 0xf4, 0x6a, 0x28, 0x18, 0x92, 0xbc, 0x0b, 0x6d, 0xec, 0x4d, - 0x42, 0x6e, 0x07, 0x34, 0x3c, 0xe1, 0xa7, 0x4a, 0xe8, 0x2d, 0x05, 0x7d, 0x82, 0x40, 0x73, 0x15, - 0x56, 0xae, 0xda, 0x8c, 0x14, 0xb4, 0xf9, 0xe7, 0x06, 0x2c, 0x4f, 0x91, 0xf4, 0x9d, 0xf3, 0xdf, - 0xe0, 0x66, 0x2f, 0xef, 0xa4, 0x38, 0x6b, 0x27, 0xb7, 0xe0, 0xcd, 0x99, 0x6c, 0xaa, 0x6d, 0xfc, - 0x52, 0x5d, 0x8b, 0x78, 0x0e, 0x77, 0xc8, 0xba, 0x8e, 0x16, 0x46, 0xfe, 0x74, 0x72, 0x57, 0x5d, - 0x6f, 0x60, 0xcf, 0xac, 0xa2, 0xc6, 0x03, 0x68, 0xa0, 0xe1, 0xaa, 0x96, 0x55, 0xde, 0x45, 0x2c, - 0x4d, 0xcf, 0xc0, 0xd6, 0xd4, 0xc2, 0xfb, 0x71, 0xd5, 0xa5, 0x62, 0xeb, 0x26, 0x34, 0x94, 0x1e, - 0xf1, 0x62, 0x57, 0x27, 0x3c, 0xe8, 0x36, 0x08, 0x55, 0x45, 0xc1, 0x39, 0xcd, 0xf4, 0x6f, 0xa0, - 0x41, 0xb2, 0xb7, 0x1b, 0x39, 0x2f, 0x04, 0x4e, 0x2a, 0xad, 0x3c, 0x72, 0x5e, 0x28, 0xb0, 0x1f, - 0x0a, 0x70, 0x59, 0x81, 0xfd, 0xf0, 0x58, 0x70, 0x88, 0x8f, 0x43, 0xd2, 0xc0, 0x56, 0x55, 0x81, - 0x2d, 0x73, 0x4f, 0xac, 0x03, 0x5b, 0x63, 0x34, 0x19, 0x98, 0xff, 0x62, 0x40, 0x2b, 0xc7, 0xff, - 0xac, 0x62, 0x9f, 0xfc, 0x18, 0x3a, 0x93, 0x5b, 0x21, 0x79, 0xce, 0x50, 0xb8, 0x46, 0x6a, 0xad, - 0xf4, 0x8a, 0x08, 0x5b, 0xde, 0x09, 0xcb, 0xc5, 0x2c, 0xcb, 0x57, 0x6c, 0xf0, 0x2e, 0x74, 0x04, - 0x75, 0x56, 0x38, 0x72, 0xa7, 0x2d, 0xe9, 0xfa, 0x5a, 0x3e, 0x37, 0xa0, 0xa2, 0x4c, 0x41, 0x5e, - 0xe7, 0xa9, 0x91, 0xf9, 0x8f, 0x15, 0x68, 0x66, 0xb9, 0xc9, 0xdc, 0x93, 0x18, 0xb9, 0x7b, 0x12, - 0xbd, 0xd1, 0x42, 0x66, 0xa3, 0xeb, 0x30, 0x1f, 0x8e, 0x47, 0x03, 0x9a, 0xd8, 0xd1, 0xd0, 0xa6, - 0x21, 0x4f, 0x7c, 0x2a, 0xb9, 0x2e, 0x5a, 0x1d, 0x89, 0x78, 0x36, 0xdc, 0x93, 0xe0, 0xcc, 0xb6, - 0x4a, 0xb3, 0xb7, 0x55, 0xce, 0x6e, 0x6b, 0x4a, 0xdf, 0x95, 0x4b, 0xfa, 0x7e, 0x13, 0xea, 0xea, - 0x60, 0xd7, 0xf7, 0x50, 0x7d, 0x45, 0xab, 0x26, 0x01, 0xd3, 0xe7, 0x6f, 0xb5, 0xab, 0x13, 0x62, - 0x7d, 0xc6, 0x89, 0xf8, 0xe4, 0x1e, 0xf1, 0x1d, 0x28, 0x61, 0x53, 0xdf, 0x40, 0xe3, 0xe8, 0x66, - 0xf3, 0x23, 0x76, 0xf3, 0x88, 0x15, 0x9f, 0xf3, 0x19, 0x5e, 0x57, 0x62, 0x2b, 0x52, 0xb3, 0x2a, - 0x3e, 0xc3, 0x0b, 0xe5, 0x37, 0xa0, 0x26, 0x8f, 0x10, 0x54, 0x1b, 0x52, 0xb4, 0xaa, 0x38, 0x3e, - 0xf0, 0x32, 0xca, 0x68, 0x67, 0x95, 0x41, 0xfe, 0x3f, 0x2c, 0x0b, 0x19, 0x0d, 0xe8, 0x09, 0x4a, - 0xca, 0xf6, 0x43, 0xdb, 0xa3, 0x43, 0x67, 0x1c, 0x70, 0xdb, 0x1d, 0x62, 0xe3, 0x51, 0xb2, 0x96, - 0x46, 0x7e, 0xb8, 0x2d, 0x08, 0x8e, 0xd9, 0x41, 0xb8, 0x2b, 0xb1, 0x3b, 0x43, 0x8c, 0x6f, 0xf8, - 0x84, 0x22, 0x1a, 0x0e, 0x19, 0xe5, 0xd8, 0x85, 0x94, 0xac, 0x06, 0xc2, 0x9e, 0x21, 0x68, 0x42, - 0xa2, 0xd6, 0x9e, 0xcf, 0x90, 0xc8, 0x88, 0x30, 0xf3, 0x4c, 0x83, 0xbc, 0xe6, 0x99, 0x46, 0xf6, - 0xae, 0x6a, 0x61, 0xea, 0xae, 0x6a, 0x0d, 0xba, 0x4a, 0x6b, 0x13, 0xfd, 0x2c, 0xa2, 0x12, 0xda, - 0x12, 0xde, 0xd7, 0x5a, 0x7a, 0x07, 0xda, 0xfa, 0xe0, 0x5e, 0x29, 0x6b, 0x09, 0xe9, 0xd4, 0x71, - 0xfe, 0x9e, 0x54, 0xd9, 0x83, 0xc9, 0xf1, 0x7e, 0x1c, 0xb9, 0xa7, 0xea, 0x79, 0xc3, 0x42, 0x3e, - 0x67, 0xed, 0x09, 0x54, 0x7a, 0xc2, 0x2f, 0x06, 0xc4, 0x82, 0x45, 0x8c, 0x50, 0x99, 0x92, 0x19, - 0xdd, 0xf4, 0x26, 0xc6, 0xe1, 0xd5, 0xfc, 0xc9, 0xb2, 0x50, 0xf8, 0xe4, 0x88, 0x1a, 0x5d, 0x96, - 0x0c, 0x2f, 0xc1, 0xcc, 0x5f, 0x18, 0x30, 0x9f, 0x3d, 0xad, 0xd9, 0xd3, 0x75, 0xc1, 0xa9, 0x13, - 0xc7, 0x34, 0xb4, 0x1d, 0x7d, 0x8d, 0x52, 0x93, 0x80, 0x2d, 0x3c, 0x46, 0xc6, 0xac, 0x6b, 0xbb, - 0x91, 0xa7, 0xe3, 0x78, 0x1d, 0x21, 0x3b, 0x91, 0x27, 0x12, 0xb6, 0x7c, 0xd1, 0x66, 0x8f, 0x28, - 0x63, 0xa2, 0x64, 0x91, 0x49, 0xab, 0x89, 0xc0, 0x43, 0x09, 0xcb, 0x05, 0x4d, 0x7d, 0x49, 0x29, - 0x83, 0xa6, 0xf9, 0x00, 0x4a, 0xfd, 0xd8, 0xc1, 0xda, 0x5c, 0x59, 0x85, 0x64, 0x40, 0x8d, 0x32, - 0x66, 0x58, 0xc8, 0xc5, 0x84, 0x3d, 0x68, 0x88, 0x79, 0xec, 0xd9, 0x50, 0xbf, 0x4a, 0xb8, 0x14, - 0xe2, 0x4c, 0x28, 0x33, 0x41, 0x32, 0x7d, 0xe7, 0x2d, 0xe6, 0x59, 0x12, 0x65, 0xfe, 0xa2, 0x08, - 0xbd, 0x27, 0xd1, 0x09, 0xd6, 0x2a, 0xe3, 0x81, 0x30, 0x13, 0xc7, 0x55, 0x87, 0xfc, 0x4e, 0x7a, - 0x49, 0x6f, 0xe4, 0x2f, 0xe9, 0x27, 0x3e, 0xad, 0x9e, 0x58, 0xa4, 0x3e, 0x3d, 0x75, 0x5f, 0x45, - 0x56, 0xa1, 0xe9, 0x87, 0xf1, 0x98, 0xdb, 0xb9, 0xa8, 0x08, 0x08, 0x3b, 0xc4, 0x18, 0x32, 0xa1, - 0xc8, 0x66, 0x00, 0x45, 0x81, 0xc1, 0xe7, 0x2e, 0x74, 0x14, 0x5b, 0xf6, 0x30, 0x89, 0x46, 0x93, - 0x48, 0xd3, 0x52, 0xe0, 0x47, 0x49, 0x34, 0x3a, 0xc6, 0xb7, 0x77, 0x9a, 0x6e, 0x1c, 0x72, 0x3f, - 0xb0, 0xd5, 0x25, 0x68, 0xc9, 0x6a, 0x2b, 0xf8, 0x67, 0x02, 0x7c, 0xcc, 0x44, 0x34, 0x10, 0xab, - 0x4d, 0xe2, 0x8e, 0x08, 0x7a, 0x2a, 0xea, 0x08, 0x46, 0x33, 0x51, 0x67, 0xe4, 0xbc, 0x10, 0x88, - 0x55, 0x7c, 0x8b, 0x07, 0x57, 0xc4, 0x98, 0x02, 0xbf, 0xc8, 0x05, 0x92, 0x46, 0x3e, 0x90, 0xdc, - 0x83, 0x2a, 0x8b, 0xc6, 0x89, 0x4b, 0x59, 0xaf, 0x99, 0xbf, 0xf1, 0xcf, 0x28, 0xd0, 0xd2, 0x34, - 0xe6, 0xdf, 0x1a, 0xb0, 0x38, 0x4b, 0x23, 0xe4, 0x03, 0x28, 0x61, 0x04, 0x33, 0x94, 0xfd, 0xa7, - 0xc7, 0x7b, 0xb3, 0xb5, 0x67, 0x21, 0x35, 0xb9, 0x07, 0x0d, 0xc6, 0xb8, 0x1d, 0x8d, 0x79, 0x3c, - 0xe6, 0xb3, 0x9f, 0x3f, 0x00, 0x63, 0xfc, 0x99, 0xc4, 0x93, 0x6d, 0x98, 0x57, 0xea, 0xc5, 0xdc, - 0x7b, 0xea, 0x87, 0x5c, 0xf7, 0x5e, 0x69, 0xe5, 0x23, 0x3d, 0x56, 0xac, 0xb1, 0xef, 0x87, 0xdc, - 0xea, 0x24, 0xb9, 0x31, 0x33, 0xff, 0x00, 0xda, 0x79, 0x92, 0xef, 0x78, 0xfb, 0x39, 0x1d, 0x38, - 0xe4, 0x99, 0xe5, 0x4b, 0x03, 0x87, 0xf9, 0xfb, 0xb0, 0x34, 0x4b, 0x28, 0x8c, 0xec, 0x42, 0x9b, - 0xe5, 0x20, 0xaa, 0x50, 0x7a, 0xeb, 0x3a, 0x59, 0x5a, 0x53, 0x73, 0xcc, 0x7f, 0x2d, 0xc0, 0xbc, - 0x22, 0xdc, 0x99, 0x68, 0x07, 0xdb, 0x07, 0x3d, 0x4a, 0x2d, 0xd5, 0xd0, 0xed, 0x83, 0xc6, 0x28, - 0x63, 0xdd, 0x80, 0x85, 0x0c, 0x75, 0x6a, 0xaf, 0xd2, 0x9f, 0xe6, 0x27, 0x28, 0x6d, 0xb2, 0xfa, - 0xf8, 0xbb, 0x98, 0x39, 0xfe, 0x16, 0x31, 0x3c, 0x1a, 0x8d, 0x68, 0xc8, 0xf5, 0xc9, 0x47, 0x3a, - 0x26, 0x6f, 0x41, 0xdd, 0x49, 0xb8, 0x3f, 0x74, 0x5c, 0xae, 0xcf, 0x16, 0x27, 0x00, 0x51, 0x7a, - 0xa6, 0x03, 0xfb, 0xd4, 0x61, 0xba, 0xde, 0x68, 0xa5, 0xd0, 0x7d, 0x87, 0x9d, 0x92, 0xef, 0x41, - 0xe7, 0x84, 0x86, 0x34, 0x71, 0x38, 0xf5, 0xd4, 0xeb, 0x19, 0x79, 0xf2, 0xd8, 0x4e, 0xc1, 0xf2, - 0xd1, 0xcc, 0xb4, 0x13, 0xd7, 0x2e, 0x39, 0xf1, 0x74, 0x20, 0xa8, 0x4f, 0x07, 0x02, 0xf3, 0xef, - 0x0d, 0x59, 0xc8, 0xee, 0x79, 0x3e, 0x9f, 0x19, 0xcd, 0x36, 0x61, 0xc9, 0xa3, 0x01, 0xe5, 0xd4, - 0x4e, 0x9f, 0xb0, 0x4c, 0x5e, 0xf4, 0xd4, 0xad, 0x05, 0x89, 0x3c, 0x52, 0x38, 0xc9, 0xd8, 0x63, - 0x58, 0x54, 0x73, 0x82, 0xe8, 0x24, 0x33, 0x45, 0x1a, 0xf4, 0x1b, 0x69, 0xa5, 0x87, 0x34, 0x59, - 0x6f, 0x24, 0x72, 0xda, 0x13, 0x39, 0x4b, 0x7e, 0xec, 0x0e, 0xb4, 0x3c, 0xca, 0x78, 0x32, 0x76, - 0xb9, 0xcd, 0x68, 0x30, 0x54, 0x8f, 0x60, 0x9b, 0x1a, 0xd8, 0xa7, 0xc1, 0xd0, 0xfc, 0x3d, 0xe8, - 0x5a, 0xf4, 0x79, 0xe2, 0x73, 0x4e, 0xe5, 0x9b, 0x99, 0x83, 0x5d, 0xf2, 0x1e, 0xcc, 0x3b, 0xa1, - 0x8b, 0xfd, 0x87, 0xad, 0x5f, 0x4c, 0xa8, 0x17, 0x14, 0x5d, 0x8d, 0xf8, 0x4c, 0xc1, 0x85, 0x56, - 0x53, 0x1a, 0x59, 0x5f, 0xa7, 0x63, 0xf3, 0xbf, 0x0d, 0x68, 0x1e, 0x84, 0x27, 0x94, 0x71, 0xea, - 0xf5, 0xfb, 0xc7, 0x8c, 0xec, 0x88, 0x54, 0xad, 0x56, 0xb3, 0xd5, 0xcb, 0x04, 0x69, 0xd2, 0xbd, - 0x89, 0xb3, 0xe6, 0xb9, 0x11, 0xee, 0x9a, 0x85, 0xb0, 0xc9, 0x19, 0x43, 0xe1, 0xea, 0x33, 0x86, - 0x1e, 0xd4, 0x1c, 0x66, 0xfb, 0xc3, 0x49, 0xc5, 0x5b, 0x71, 0xd8, 0xc1, 0xf0, 0x98, 0x89, 0xf2, - 0x52, 0x96, 0xd0, 0xf2, 0xcc, 0x08, 0x23, 0x86, 0x32, 0xc7, 0x0e, 0x22, 0x8e, 0x10, 0x8e, 0x61, - 0x60, 0x19, 0x6a, 0x43, 0x3f, 0xf4, 0xd9, 0x29, 0xf5, 0xd0, 0x28, 0x6b, 0x56, 0x3a, 0xce, 0x3c, - 0x3f, 0x1c, 0x8f, 0x7d, 0x4f, 0xbf, 0xc7, 0x91, 0xa0, 0xcf, 0xc6, 0xbe, 0x67, 0x3e, 0x87, 0xf9, - 0x4b, 0x7a, 0xfa, 0xae, 0x69, 0x4f, 0x70, 0xfd, 0xfc, 0x34, 0x92, 0x57, 0x47, 0x34, 0xdf, 0x7f, - 0x75, 0x10, 0x21, 0xbe, 0xae, 0x3a, 0xb0, 0xaf, 0x0a, 0x50, 0x3f, 0xf4, 0x4f, 0x12, 0x7c, 0xcb, - 0x89, 0x0f, 0x2e, 0x12, 0xea, 0x70, 0xf5, 0x4e, 0xa1, 0x6e, 0xe9, 0x21, 0xd9, 0x9c, 0xbc, 0x42, - 0x96, 0x57, 0x4c, 0xa9, 0x0e, 0xd2, 0xd9, 0xba, 0x5f, 0x49, 0xdf, 0x27, 0xdf, 0x83, 0x3a, 0xf5, - 0x7c, 0x6e, 0xab, 0xc0, 0x5e, 0x9c, 0x7e, 0x08, 0x2b, 0xbc, 0xc1, 0xaa, 0x09, 0x12, 0x4c, 0xc8, - 0x6f, 0x43, 0x93, 0x27, 0xe3, 0xd0, 0x45, 0x8f, 0xe4, 0x91, 0x8a, 0x17, 0x8d, 0x14, 0x76, 0x1c, - 0x91, 0x8f, 0xa0, 0x91, 0x0d, 0x70, 0x53, 0x96, 0x7e, 0x29, 0x6e, 0x59, 0x59, 0x6a, 0xe1, 0xf1, - 0xa9, 0x89, 0xa7, 0xf7, 0x16, 0xc2, 0xbb, 0xda, 0x1a, 0x2c, 0xb5, 0x49, 0x3e, 0x84, 0x9b, 0xf4, - 0x05, 0x4f, 0x1c, 0x7b, 0x38, 0x0e, 0x02, 0x5b, 0x29, 0x4e, 0x48, 0x5f, 0x3e, 0x66, 0xae, 0x5b, - 0x8b, 0x88, 0x7e, 0x34, 0x0e, 0x02, 0x59, 0x68, 0x1d, 0x09, 0xdc, 0xfa, 0x53, 0x58, 0x7d, 0xd9, - 0x8b, 0x7b, 0xd2, 0x81, 0xc6, 0x67, 0x78, 0x35, 0x86, 0x0f, 0xcb, 0xbb, 0x73, 0xa4, 0x05, 0xf5, - 0x9f, 0x38, 0x3e, 0xdf, 0x8a, 0xe3, 0xe0, 0xa2, 0x6b, 0x10, 0x80, 0xca, 0x23, 0x34, 0x9a, 0x6e, - 0x61, 0xfd, 0x53, 0x58, 0xb9, 0xfe, 0x45, 0x3c, 0x99, 0x87, 0x56, 0x3a, 0x79, 0x37, 0x0a, 0xc5, - 0xf7, 0x96, 0x60, 0x3e, 0xb3, 0x80, 0x7c, 0x3b, 0xdc, 0x35, 0xd6, 0x7f, 0x1b, 0x3a, 0x53, 0x65, - 0x33, 0x69, 0x40, 0xf5, 0xb3, 0xa7, 0x8f, 0x9f, 0x3e, 0xfb, 0xc9, 0xd3, 0xee, 0x1c, 0xa9, 0x42, - 0xf1, 0xc9, 0x17, 0x1f, 0x48, 0x06, 0xfa, 0x4f, 0xb7, 0x8e, 0x8e, 0x7e, 0xb7, 0x5b, 0x20, 0x35, - 0x28, 0x7d, 0xd1, 0x3f, 0xde, 0xed, 0x16, 0xd7, 0x57, 0xd3, 0x87, 0xef, 0xa2, 0x2a, 0xac, 0x41, - 0xa9, 0xbf, 0xb3, 0x25, 0xa6, 0xd5, 0xa0, 0xf4, 0xe8, 0xe0, 0xc9, 0x5e, 0xd7, 0x58, 0xbf, 0x05, - 0x8d, 0x4c, 0xcf, 0x4a, 0x2a, 0x50, 0xf8, 0xfc, 0x87, 0xdd, 0x39, 0xfc, 0xbb, 0xd9, 0x35, 0xd6, - 0x6f, 0x43, 0x4d, 0x57, 0x14, 0x62, 0x09, 0x69, 0xeb, 0x72, 0xdd, 0xa3, 0xb1, 0x60, 0x70, 0x1d, - 0xba, 0xd3, 0x86, 0x24, 0x26, 0x1f, 0xbe, 0x2f, 0x3f, 0x72, 0xf8, 0xc3, 0xae, 0x81, 0x7f, 0x37, - 0xbb, 0x85, 0xcd, 0x5f, 0x17, 0xa0, 0x22, 0xd9, 0x21, 0x1f, 0x81, 0xfa, 0x4f, 0x0c, 0xb2, 0x34, - 0xf5, 0xd2, 0x50, 0x0a, 0x7d, 0xf9, 0xc6, 0x34, 0x58, 0x1d, 0x2d, 0xcc, 0xbd, 0x6f, 0x90, 0x23, - 0x58, 0xc0, 0x43, 0xaa, 0xec, 0x51, 0xd1, 0xb3, 0x98, 0xa4, 0xf6, 0x74, 0xe9, 0x5c, 0x6b, 0x79, - 0x79, 0x16, 0x2a, 0xf3, 0xc5, 0x53, 0x58, 0x9a, 0xa9, 0x32, 0xf2, 0xce, 0xab, 0xfc, 0x4f, 0xc6, - 0xf2, 0xbb, 0x2f, 0xa1, 0x92, 0x2b, 0xad, 0x19, 0xef, 0x1b, 0xe4, 0xc7, 0x50, 0x8d, 0x25, 0x11, - 0xb9, 0x31, 0x35, 0x4b, 0x7f, 0xed, 0xe6, 0x25, 0xb8, 0xe6, 0x54, 0xcc, 0x76, 0xe5, 0x81, 0x27, - 0xc9, 0xbc, 0x7c, 0xca, 0x1e, 0x98, 0x4e, 0x66, 0x4f, 0x9d, 0x8c, 0x9a, 0x73, 0x9b, 0x7f, 0x67, - 0x40, 0x67, 0xea, 0xd8, 0x86, 0x7c, 0x01, 0x55, 0x75, 0x92, 0x45, 0xd2, 0x5d, 0x5c, 0x7b, 0xe2, - 0xb6, 0x7c, 0xf7, 0x65, 0x64, 0x29, 0xb7, 0xbf, 0x03, 0x25, 0xe6, 0x9c, 0x53, 0x62, 0x5e, 0x31, - 0x23, 0x73, 0xb4, 0xb5, 0x7c, 0xe7, 0x5a, 0x1a, 0xfd, 0xc9, 0xed, 0xcd, 0x5f, 0xfd, 0x45, 0xcd, - 0xf8, 0xea, 0x9b, 0x15, 0xe3, 0xeb, 0x6f, 0x56, 0x8c, 0xff, 0xf8, 0x66, 0xc5, 0xf8, 0xe5, 0xb7, - 0x2b, 0x73, 0x7f, 0xf6, 0xed, 0xca, 0xdc, 0xd7, 0xdf, 0xae, 0xcc, 0xfd, 0xea, 0xdb, 0x95, 0x39, - 0xe8, 0x46, 0xc9, 0xc9, 0x06, 0xf7, 0xcf, 0xce, 0x37, 0xce, 0xce, 0xf1, 0x9f, 0x70, 0x06, 0x15, - 0xfc, 0x73, 0xff, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x04, 0xa3, 0x7f, 0x78, 0x08, 0x34, 0x00, - 0x00, + // 4853 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x6f, 0x1c, 0x47, + 0x76, 0xec, 0xf9, 0x9e, 0x37, 0x9f, 0x2c, 0x92, 0xd2, 0x98, 0xb6, 0x28, 0xba, 0x65, 0x6b, 0x19, + 0x7a, 0xc5, 0xb5, 0x29, 0xaf, 0x56, 0x89, 0x37, 0x30, 0xf8, 0x25, 0x93, 0x96, 0x28, 0x31, 0x3d, + 0xb4, 0x17, 0x71, 0x10, 0x34, 0x7a, 0xba, 0x6b, 0xc8, 0x5e, 0xf6, 0x74, 0xf7, 0x76, 0xd5, 0x50, + 0xa2, 0x0f, 0x39, 0xe4, 0x90, 0xdb, 0x62, 0x37, 0x41, 0x0e, 0xf9, 0x03, 0x01, 0x72, 0x48, 0x80, + 0x5c, 0x73, 0xda, 0x1c, 0x12, 0x64, 0x81, 0x04, 0x88, 0x81, 0xe4, 0xb0, 0xb7, 0x04, 0x36, 0x92, + 0x1f, 0x11, 0x60, 0x81, 0xa0, 0x5e, 0x55, 0xf5, 0x74, 0x0f, 0x87, 0x94, 0xe4, 0x04, 0x7b, 0xe2, + 0xd4, 0x7b, 0xaf, 0xba, 0x5e, 0xbd, 0xef, 0x57, 0x55, 0x04, 0x18, 0x24, 0xf1, 0x60, 0x23, 0x4e, + 0x22, 0x1e, 0x91, 0xca, 0xc0, 0x71, 0xcf, 0xc6, 0xf1, 0x72, 0xeb, 0xec, 0x3c, 0x89, 0x5d, 0x0d, + 0x5e, 0x6e, 0xd1, 0x24, 0x89, 0x52, 0xaa, 0xe5, 0xe6, 0x88, 0x72, 0x27, 0x1d, 0x11, 0x1a, 0xba, + 0xc9, 0x45, 0xcc, 0xfd, 0x28, 0x4c, 0x61, 0x8b, 0x27, 0xd1, 0x49, 0x84, 0x3f, 0xbf, 0x27, 0x7e, + 0x29, 0x68, 0x27, 0x19, 0x33, 0x8e, 0x3f, 0x25, 0xc0, 0xfc, 0x6b, 0x03, 0xde, 0x3a, 0x4a, 0x68, + 0xec, 0x24, 0xb4, 0x1f, 0x3a, 0x31, 0x3b, 0x8d, 0xf8, 0x36, 0x32, 0x60, 0xd1, 0x9f, 0x8c, 0x29, + 0xe3, 0xe4, 0x21, 0x14, 0xf8, 0x45, 0xcf, 0x58, 0x35, 0xd6, 0xda, 0x9b, 0x6b, 0x1b, 0x92, 0xb9, + 0x8d, 0xeb, 0x66, 0x1c, 0x5f, 0xc4, 0xd4, 0x2a, 0xf0, 0x0b, 0xb2, 0x06, 0xd5, 0x84, 0x9e, 0xf8, + 0x51, 0xc8, 0x7a, 0x85, 0xd5, 0xe2, 0x5a, 0x63, 0xb3, 0xbd, 0xa1, 0xb8, 0xb6, 0x10, 0x6c, 0x69, + 0x34, 0x59, 0x83, 0x6e, 0x40, 0x1d, 0x46, 0x6d, 0x3f, 0xb4, 0x19, 0x75, 0xa3, 0xd0, 0x63, 0xbd, + 0xe2, 0xaa, 0xb1, 0x56, 0xb2, 0xda, 0x08, 0x3f, 0x08, 0xfb, 0x12, 0x6a, 0xfe, 0xbb, 0x01, 0xb7, + 0xae, 0x58, 0x9c, 0xc5, 0x51, 0xc8, 0x28, 0x79, 0x90, 0xe1, 0xf7, 0xee, 0xb5, 0xfc, 0xee, 0x9d, + 0xd3, 0x70, 0xc2, 0xed, 0x5d, 0xa8, 0x48, 0x76, 0x7a, 0x85, 0x55, 0x63, 0x06, 0xb3, 0x0a, 0x4b, + 0xde, 0x81, 0x32, 0xaa, 0x02, 0x19, 0x14, 0x64, 0x5a, 0x31, 0x7b, 0xe2, 0xaf, 0x25, 0x91, 0xe4, + 0x1e, 0x2c, 0x04, 0x0e, 0xe3, 0xb6, 0xda, 0x16, 0xb3, 0xcf, 0x9d, 0xc0, 0xf7, 0x7a, 0xa5, 0x55, + 0x63, 0xad, 0x66, 0x75, 0x05, 0xea, 0x09, 0x6e, 0x8c, 0x7d, 0x2e, 0xe0, 0xe6, 0x7f, 0x55, 0x01, + 0x24, 0x53, 0x87, 0x94, 0x3b, 0xe4, 0x16, 0x80, 0x1b, 0x8c, 0x19, 0xa7, 0x89, 0xed, 0x7b, 0xb8, + 0x97, 0x92, 0x55, 0x57, 0x90, 0x03, 0x8f, 0x7c, 0x07, 0x3a, 0x1a, 0x7d, 0x4e, 0x13, 0xa6, 0x79, + 0xae, 0x5b, 0x6d, 0x05, 0xfe, 0x5c, 0x42, 0xc5, 0x77, 0x06, 0x13, 0x9a, 0x06, 0xd2, 0xd4, 0x07, + 0x29, 0xba, 0x07, 0x55, 0x8d, 0x6b, 0xae, 0x1a, 0x6b, 0x65, 0x4b, 0x0f, 0x89, 0x09, 0xe5, 0xa1, + 0x1f, 0x50, 0xd6, 0x2b, 0xa1, 0xe2, 0x9a, 0x5a, 0x8e, 0x8f, 0xfc, 0x80, 0x5a, 0x12, 0x45, 0xbe, + 0x07, 0x20, 0x7e, 0xd8, 0x7e, 0xe8, 0xd1, 0x17, 0xbd, 0x16, 0x4a, 0xa3, 0xab, 0x09, 0xc5, 0x36, + 0x90, 0xb8, 0x2e, 0x68, 0x0e, 0x04, 0x09, 0xb9, 0x03, 0x2d, 0xc6, 0x9d, 0x84, 0xa7, 0x0c, 0x95, + 0x71, 0x63, 0x4d, 0x04, 0x6a, 0x9e, 0x6e, 0x43, 0x83, 0x86, 0x5e, 0x4a, 0x52, 0x41, 0x12, 0xa0, + 0xa1, 0xa7, 0x09, 0xd6, 0xa0, 0xca, 0xdc, 0x53, 0x3a, 0x72, 0x58, 0xaf, 0xaa, 0xac, 0x4a, 0xad, + 0xd9, 0x47, 0xb0, 0xa5, 0xd1, 0xe4, 0x3e, 0x34, 0xe5, 0x4f, 0xc5, 0x62, 0xfb, 0x0a, 0x16, 0x1b, + 0x92, 0x4a, 0x32, 0xb9, 0x0c, 0x75, 0x9f, 0xd9, 0x89, 0xf3, 0xdc, 0x3e, 0x3b, 0xef, 0xd5, 0x50, + 0x5d, 0x55, 0x9f, 0x59, 0xce, 0xf3, 0xc7, 0xe7, 0x62, 0xc7, 0x02, 0x91, 0x38, 0xe1, 0x09, 0x65, + 0xbd, 0x3a, 0xae, 0x9e, 0x7e, 0xce, 0x72, 0x9e, 0x5b, 0x02, 0x61, 0xd5, 0x13, 0xf5, 0x8b, 0x91, + 0x87, 0xd0, 0x49, 0x27, 0x28, 0x26, 0x3a, 0x57, 0x30, 0xd1, 0xd2, 0xb3, 0x24, 0x1b, 0x04, 0x4a, + 0x9e, 0x17, 0xb0, 0x1e, 0xac, 0x1a, 0x6b, 0x4d, 0x0b, 0x7f, 0x93, 0x0f, 0xa0, 0xe1, 0x79, 0x81, + 0xfc, 0x0e, 0x65, 0xbd, 0xee, 0x15, 0x5f, 0x02, 0xcf, 0x0b, 0x0e, 0x24, 0x8d, 0x10, 0xb9, 0x44, + 0xdb, 0x09, 0x65, 0xe3, 0x80, 0xf7, 0xe6, 0xd1, 0x06, 0x9a, 0x03, 0xed, 0x33, 0xe3, 0x80, 0x93, + 0x0f, 0xa1, 0xe1, 0xc4, 0x7e, 0x2a, 0x72, 0x82, 0xae, 0xb3, 0xb0, 0xa1, 0xe3, 0xcf, 0xd6, 0xd1, + 0x81, 0x92, 0xbd, 0x05, 0x4e, 0xec, 0x6b, 0x3d, 0xdc, 0x87, 0x5a, 0x1c, 0x05, 0xbe, 0xeb, 0x53, + 0xd6, 0x5b, 0x40, 0x51, 0xdc, 0x4c, 0xbd, 0x2d, 0x70, 0x5c, 0x3a, 0xa2, 0x21, 0x3f, 0x12, 0x04, + 0x17, 0x56, 0x4a, 0x48, 0x3e, 0x84, 0x1b, 0x21, 0x7d, 0x6e, 0xbb, 0x51, 0x10, 0x38, 0x22, 0x5a, + 0x31, 0x9b, 0x86, 0xce, 0x20, 0xa0, 0x5e, 0x6f, 0x11, 0x19, 0x5b, 0x0c, 0xe9, 0xf3, 0x9d, 0x14, + 0xb9, 0x27, 0x71, 0x4a, 0x27, 0xfc, 0x45, 0x28, 0x74, 0xb2, 0xa4, 0x75, 0x72, 0xfc, 0x22, 0x7c, + 0x7c, 0x4e, 0xd6, 0xa1, 0xea, 0x0d, 0xec, 0x91, 0x13, 0xb3, 0xde, 0x0d, 0xe4, 0x62, 0x3e, 0xe5, + 0xc2, 0xe7, 0xc9, 0xee, 0xf6, 0xa1, 0x13, 0x5b, 0x15, 0x6f, 0x70, 0xe8, 0xc4, 0x8c, 0xdc, 0x85, + 0xd2, 0x28, 0xf2, 0x68, 0xef, 0x26, 0xee, 0x90, 0x68, 0x42, 0xe5, 0x78, 0x91, 0x47, 0x2d, 0xc4, + 0x93, 0xf7, 0xa0, 0xa2, 0x74, 0xdc, 0xc3, 0x4f, 0x2e, 0xe4, 0x29, 0xa5, 0x9a, 0x15, 0x89, 0x30, + 0x58, 0x25, 0x62, 0xe6, 0x7f, 0x49, 0x7b, 0x6f, 0x48, 0x83, 0x95, 0xa0, 0xbe, 0xff, 0x25, 0xfd, + 0xb4, 0x54, 0x2b, 0x76, 0x4b, 0x56, 0x29, 0x76, 0xf8, 0xa9, 0x79, 0x02, 0x8d, 0xcc, 0x37, 0xc8, + 0x9b, 0x50, 0x97, 0x1e, 0x71, 0x46, 0x65, 0xc8, 0x6a, 0x5a, 0x35, 0x04, 0x3c, 0xa6, 0x17, 0xe4, + 0x26, 0x54, 0x85, 0x27, 0x08, 0x54, 0x01, 0x51, 0x15, 0x1a, 0x7a, 0x02, 0x91, 0x3a, 0x67, 0xf1, + 0x4a, 0xe7, 0x34, 0xff, 0xc4, 0x80, 0xfa, 0xb1, 0x90, 0x1e, 0xc6, 0x93, 0xdb, 0xd0, 0x88, 0x4f, + 0x2f, 0x98, 0xef, 0x3a, 0x81, 0x0e, 0x28, 0x45, 0x0b, 0x34, 0xe8, 0x40, 0x48, 0xb8, 0xe6, 0x26, + 0xee, 0x83, 0x0f, 0x5f, 0x44, 0x09, 0x2e, 0x56, 0xb2, 0xd2, 0xb1, 0x60, 0x92, 0x47, 0xdc, 0x09, + 0xec, 0xb3, 0x73, 0x1d, 0x95, 0x6b, 0x08, 0x78, 0x7c, 0x8e, 0xbb, 0x97, 0xc8, 0xc1, 0x05, 0xc7, + 0x70, 0x81, 0xbb, 0x47, 0xd0, 0xb6, 0x80, 0x98, 0xbf, 0x2e, 0x40, 0x49, 0x30, 0x26, 0x2c, 0x3a, + 0x74, 0x46, 0x14, 0x17, 0xaf, 0x5b, 0xf8, 0x9b, 0xdc, 0x80, 0x0a, 0x3b, 0x75, 0x36, 0xbf, 0xff, + 0x40, 0xef, 0x50, 0x8e, 0xf2, 0x72, 0x29, 0x5e, 0x2d, 0x97, 0x52, 0x4e, 0x2e, 0xff, 0x3f, 0xf1, + 0x25, 0x2b, 0x8a, 0xea, 0x75, 0xa2, 0xa8, 0x5d, 0x2f, 0x8a, 0xfa, 0xb4, 0x28, 0xc8, 0x26, 0x34, + 0xb8, 0x50, 0x89, 0x2d, 0x12, 0x0b, 0xeb, 0xb5, 0xf2, 0xe6, 0x9a, 0x6a, 0xcb, 0x02, 0xae, 0x7f, + 0x32, 0xd2, 0x86, 0x82, 0x3b, 0xc4, 0x28, 0x50, 0xb7, 0x0a, 0xee, 0x50, 0x48, 0x11, 0xcd, 0xac, + 0x81, 0x5f, 0xc7, 0xdf, 0x82, 0x2b, 0xd7, 0x8f, 0x4f, 0x45, 0xb2, 0x38, 0xc7, 0x40, 0xde, 0xb4, + 0x6a, 0x12, 0x70, 0x70, 0x6e, 0xfe, 0xb4, 0x00, 0x35, 0x1d, 0x1a, 0xc8, 0x7b, 0x00, 0x62, 0x6d, + 0x5b, 0x9a, 0x8f, 0x31, 0xc3, 0x7c, 0xea, 0x23, 0x45, 0xcb, 0x04, 0xb1, 0xe7, 0xa4, 0xc4, 0x85, + 0x59, 0xc4, 0x02, 0x2f, 0x89, 0x33, 0x51, 0xb9, 0x78, 0x7d, 0x54, 0xce, 0x07, 0xd1, 0xd2, 0xab, + 0x04, 0xd1, 0x34, 0x86, 0xc9, 0x39, 0x95, 0xab, 0x9d, 0x52, 0x07, 0x36, 0x39, 0x53, 0x07, 0xd1, + 0xf2, 0x6a, 0x51, 0x07, 0x51, 0xf3, 0x5d, 0xe8, 0x4c, 0x85, 0x27, 0x41, 0xe6, 0x87, 0xc3, 0x48, + 0x39, 0x20, 0xfe, 0x36, 0x9f, 0x00, 0xf4, 0xb9, 0xc3, 0xd9, 0x76, 0x10, 0xb9, 0x67, 0x2f, 0xf7, + 0x9f, 0x5b, 0x00, 0x3f, 0x66, 0x51, 0x68, 0xa3, 0xe6, 0x94, 0x31, 0xd7, 0x05, 0x04, 0xb5, 0x6a, + 0xfe, 0x00, 0xea, 0xf8, 0x35, 0x54, 0xc2, 0x3a, 0x54, 0x06, 0xe2, 0xab, 0x5a, 0x01, 0x69, 0x1c, + 0x9a, 0x2c, 0x68, 0x29, 0x0a, 0xf3, 0x6f, 0x0d, 0x68, 0xa7, 0x33, 0xd3, 0xcc, 0xf0, 0xca, 0x7e, + 0xf4, 0x06, 0xd4, 0x84, 0x85, 0xd8, 0x34, 0x74, 0x95, 0xe7, 0x56, 0xc5, 0x78, 0x2f, 0x74, 0x53, + 0x54, 0x94, 0xf8, 0xca, 0x6b, 0x11, 0xf5, 0x2c, 0xf1, 0xf3, 0xf6, 0x54, 0xce, 0xdb, 0x93, 0x10, + 0x85, 0x1f, 0x06, 0x7e, 0x48, 0x6d, 0xa1, 0x7c, 0xf4, 0x9f, 0xa6, 0x05, 0x12, 0xb4, 0xeb, 0x70, + 0xc7, 0xfc, 0xe3, 0x02, 0x54, 0xa4, 0xce, 0x85, 0xf1, 0x7a, 0x03, 0x25, 0xd6, 0x82, 0x37, 0x20, + 0x8b, 0x50, 0xce, 0x0a, 0x48, 0x0e, 0x72, 0x0e, 0x57, 0xbc, 0xce, 0xe1, 0x4a, 0xd7, 0x3b, 0x5c, + 0xf9, 0x92, 0xc3, 0xfd, 0x16, 0x74, 0xb9, 0x3f, 0x0c, 0x1c, 0x76, 0x6a, 0x27, 0x34, 0x0e, 0x7c, + 0xd7, 0x61, 0xc8, 0x70, 0xcb, 0xea, 0x28, 0xb8, 0xa5, 0xc0, 0x82, 0x35, 0x26, 0xe4, 0x8c, 0x2e, + 0xdf, 0xb4, 0xe4, 0x80, 0xfc, 0x00, 0x1a, 0xf8, 0x43, 0xe5, 0xee, 0x1a, 0xea, 0xeb, 0x46, 0x4e, + 0x5f, 0xa9, 0x62, 0x2c, 0x40, 0x52, 0xfc, 0x6d, 0x1e, 0x42, 0xf9, 0x60, 0xf7, 0xd0, 0x89, 0x05, + 0x8f, 0xe3, 0x98, 0xf1, 0x84, 0x3a, 0xa3, 0x8c, 0xe5, 0x68, 0xd0, 0x81, 0x27, 0x82, 0x96, 0x17, + 0x3d, 0x0f, 0x27, 0x24, 0x05, 0x24, 0x69, 0x4e, 0x80, 0x07, 0x9e, 0xf9, 0x1c, 0x9a, 0x22, 0x9b, + 0xc9, 0x10, 0xe1, 0xc4, 0x33, 0x6d, 0xe0, 0x1d, 0xa8, 0xf8, 0x9e, 0x48, 0x84, 0xaa, 0x7e, 0x6d, + 0x69, 0x36, 0x91, 0x11, 0xab, 0xec, 0x7b, 0x62, 0xe6, 0x3d, 0x80, 0xd8, 0x49, 0xb8, 0x8f, 0xf9, + 0x55, 0xb9, 0xea, 0x14, 0x65, 0x86, 0xc0, 0x64, 0x50, 0x4f, 0xd3, 0xe8, 0xff, 0x61, 0xd5, 0xef, + 0x42, 0x05, 0x75, 0xad, 0x57, 0x5c, 0xcc, 0xe6, 0x68, 0xbd, 0x2b, 0x4b, 0xd1, 0x98, 0x47, 0x50, + 0xd3, 0x71, 0xe0, 0x5b, 0x66, 0x48, 0x19, 0x35, 0x8b, 0x3a, 0x6a, 0x9a, 0xbb, 0xd0, 0xde, 0x51, + 0xd5, 0xf3, 0x2e, 0x96, 0xe9, 0xa2, 0xf4, 0x75, 0xc7, 0x49, 0x42, 0x43, 0xae, 0xca, 0x6b, 0x3d, + 0x14, 0x98, 0x44, 0x36, 0x32, 0x2a, 0x13, 0xea, 0xa1, 0xf9, 0x2f, 0x06, 0x94, 0xe5, 0xec, 0x2e, + 0x14, 0x47, 0xec, 0x44, 0x09, 0x42, 0xfc, 0x24, 0xdb, 0xd0, 0x9d, 0x54, 0xec, 0x76, 0xb6, 0x41, + 0x48, 0xcd, 0x25, 0xcf, 0xc1, 0xfe, 0x5c, 0x5a, 0xad, 0x1f, 0x78, 0xf2, 0xab, 0x1b, 0x50, 0x3b, + 0x3b, 0x57, 0x73, 0x4b, 0x38, 0x77, 0x3e, 0x2d, 0xc2, 0x1e, 0xd3, 0x0b, 0x3d, 0xad, 0x7a, 0x76, + 0x2e, 0xe9, 0xef, 0x43, 0x53, 0xf6, 0x24, 0x6a, 0x4e, 0x79, 0x56, 0x43, 0xb2, 0x3f, 0x67, 0x35, + 0x24, 0x15, 0x0e, 0xb7, 0x6b, 0x50, 0xf1, 0x28, 0x77, 0xfc, 0xc0, 0xfc, 0x3b, 0x03, 0x56, 0xfa, + 0x68, 0x61, 0x32, 0x82, 0x1e, 0x3b, 0xec, 0xac, 0x4f, 0xdd, 0x71, 0xe2, 0xf3, 0x8b, 0x9d, 0x28, + 0x1c, 0xfa, 0x62, 0x57, 0x24, 0x0e, 0x1c, 0x3f, 0xe4, 0xf4, 0x05, 0x47, 0x7f, 0x4f, 0xd5, 0x90, + 0x09, 0x5b, 0x3b, 0x32, 0x34, 0x84, 0xc3, 0x68, 0x7f, 0xce, 0xea, 0xa6, 0xf4, 0x22, 0x18, 0x08, + 0x5d, 0xec, 0xc1, 0xfc, 0xc8, 0x41, 0xc1, 0x9c, 0xd1, 0x0b, 0xdb, 0xc5, 0x0f, 0x2b, 0x63, 0x49, + 0x0b, 0xc6, 0x43, 0x24, 0x78, 0x4c, 0xd5, 0xba, 0xfb, 0x73, 0x56, 0x67, 0x94, 0x07, 0x6d, 0x37, + 0x01, 0x26, 0x4d, 0xae, 0x19, 0x00, 0x4c, 0x96, 0x25, 0x1f, 0x43, 0x43, 0x05, 0x2c, 0x7e, 0x11, + 0x53, 0xd5, 0xfb, 0xad, 0x6c, 0xe4, 0x9a, 0xe2, 0xbd, 0x74, 0x70, 0x48, 0xf9, 0x69, 0xe4, 0x59, + 0x20, 0xa7, 0x88, 0xfe, 0x0f, 0xfb, 0x2d, 0xf9, 0x81, 0x89, 0x2d, 0xa9, 0x18, 0xf8, 0x98, 0x5e, + 0x98, 0x7f, 0x6e, 0x40, 0x67, 0x8a, 0x45, 0xf2, 0x09, 0x74, 0x26, 0xdf, 0x7f, 0x9d, 0x75, 0xdb, + 0x13, 0x34, 0xae, 0xfd, 0x10, 0x1a, 0x13, 0xf9, 0xe8, 0x3c, 0x7b, 0x33, 0xff, 0x91, 0x74, 0x71, + 0x0b, 0x52, 0xb9, 0x30, 0x73, 0x07, 0x3a, 0xfd, 0x28, 0xe1, 0xd4, 0xeb, 0x8f, 0x07, 0x2a, 0xe3, + 0xbd, 0x0f, 0xc0, 0xc6, 0x03, 0x9d, 0x28, 0x0d, 0x55, 0x61, 0x64, 0x8c, 0x48, 0x65, 0x57, 0xa6, + 0x67, 0x98, 0xff, 0x51, 0x81, 0x56, 0xbe, 0xe1, 0x7f, 0x49, 0xf3, 0x99, 0xf3, 0xc8, 0xc2, 0xd5, + 0x1e, 0x59, 0xbc, 0xbe, 0x36, 0x2b, 0xbd, 0xbc, 0x36, 0x2b, 0x5f, 0xaa, 0xcd, 0x6e, 0x89, 0xda, + 0x81, 0x53, 0x3b, 0xf0, 0x47, 0x3e, 0x57, 0xd5, 0x59, 0x5d, 0x40, 0x9e, 0x08, 0x00, 0x59, 0x85, + 0x86, 0x1b, 0x85, 0xd2, 0x91, 0xdd, 0x0b, 0x2c, 0xd0, 0x5a, 0x56, 0x16, 0x44, 0x3e, 0x86, 0x0e, + 0xe3, 0x51, 0xe2, 0x9c, 0x50, 0x5b, 0x98, 0x1e, 0x0d, 0x3d, 0xac, 0xd3, 0x72, 0x41, 0x1d, 0xd1, + 0xdb, 0x12, 0x6b, 0xb5, 0x59, 0x6e, 0x9c, 0x6f, 0x0f, 0x21, 0xdf, 0x1e, 0xca, 0xa8, 0xd3, 0x48, + 0x6b, 0x35, 0x11, 0x13, 0xa2, 0x51, 0x9c, 0x50, 0xc6, 0x52, 0x1b, 0x69, 0xa2, 0x8d, 0xa4, 0x86, + 0xbf, 0x33, 0xc1, 0xe3, 0x41, 0x44, 0xc7, 0xcd, 0x03, 0xc8, 0x7b, 0x30, 0x9f, 0xfd, 0x46, 0x40, + 0xcf, 0x69, 0x80, 0xbd, 0x76, 0xd9, 0xca, 0x7e, 0xfc, 0x89, 0x80, 0x93, 0xfb, 0xa9, 0x1f, 0x60, + 0x3d, 0xd3, 0xbe, 0xca, 0x4f, 0xb5, 0xed, 0xa3, 0xf3, 0x7c, 0x04, 0x1d, 0x8f, 0x71, 0x3b, 0xdb, + 0x01, 0x76, 0xae, 0xee, 0x00, 0x5b, 0x1e, 0xe3, 0x5b, 0x93, 0x26, 0x30, 0x6f, 0x6f, 0xdd, 0x97, + 0xdb, 0x1b, 0x39, 0x82, 0x1e, 0x43, 0xa3, 0xb5, 0x27, 0x13, 0xed, 0x93, 0x24, 0x1a, 0xc7, 0xac, + 0xb7, 0x94, 0x6f, 0x23, 0xa7, 0x8c, 0xdb, 0x5a, 0x62, 0x79, 0xc0, 0x27, 0x38, 0x8b, 0xbc, 0x2d, + 0xc2, 0x20, 0xa6, 0x71, 0x3b, 0xa1, 0x8e, 0x87, 0x2d, 0x6e, 0x4d, 0x04, 0x3d, 0x84, 0x59, 0xd4, + 0xf1, 0xd2, 0xc6, 0x8f, 0xbc, 0xa4, 0xf1, 0x7b, 0x13, 0xea, 0xe3, 0xd0, 0xff, 0xc9, 0x98, 0x0a, + 0xcb, 0x5f, 0x40, 0x45, 0xd6, 0x24, 0xe0, 0xc0, 0x13, 0x9d, 0xa6, 0x1b, 0x61, 0x68, 0xc3, 0x66, + 0x55, 0x54, 0xad, 0x7a, 0xa3, 0x3b, 0x12, 0x6e, 0x69, 0x82, 0x4f, 0x4b, 0xb5, 0x4a, 0xb7, 0xaa, + 0x7a, 0xbe, 0xff, 0x2e, 0xc0, 0xe2, 0x74, 0x9c, 0x45, 0xc9, 0xbf, 0x0f, 0x55, 0x65, 0x5d, 0x2a, + 0xa4, 0x5e, 0x65, 0x84, 0x9a, 0x0c, 0x8b, 0x36, 0xf4, 0x22, 0xce, 0x74, 0x72, 0xc2, 0xf1, 0x31, + 0x23, 0x4b, 0x20, 0x5c, 0x4d, 0x20, 0x64, 0x0d, 0x55, 0xa6, 0xa1, 0x77, 0xcc, 0xd2, 0x9c, 0x5d, + 0xca, 0xe4, 0xec, 0xb7, 0xa1, 0x29, 0xfb, 0x90, 0xa1, 0x1f, 0x70, 0x9a, 0x60, 0x79, 0x5c, 0xb7, + 0x64, 0x6f, 0xf2, 0x08, 0x41, 0x33, 0x4d, 0xb7, 0xf2, 0x9a, 0xa6, 0xfb, 0x0c, 0x3a, 0x4c, 0xa5, + 0x13, 0x1d, 0xf6, 0xab, 0xb8, 0xcd, 0xbb, 0x93, 0x6d, 0x5e, 0x97, 0x7d, 0xac, 0x36, 0x9b, 0x1a, + 0xe3, 0x89, 0xda, 0x38, 0xf6, 0x44, 0x08, 0xe0, 0x4c, 0x77, 0xe0, 0x56, 0x45, 0x14, 0x5e, 0x63, + 0x66, 0x7e, 0x55, 0x10, 0xc5, 0x72, 0xce, 0x5d, 0x4d, 0x28, 0x85, 0x51, 0x14, 0x2b, 0xf9, 0xa6, + 0xdd, 0xcb, 0xd3, 0x28, 0x8a, 0xf7, 0xe7, 0x2c, 0xc4, 0x91, 0x77, 0xa1, 0x1c, 0x44, 0xae, 0x13, + 0x4c, 0x57, 0x30, 0x4f, 0x04, 0x70, 0x7f, 0xce, 0x92, 0x58, 0xf2, 0x16, 0x14, 0xd8, 0x7d, 0x95, + 0xd3, 0x21, 0xdd, 0xc1, 0xfd, 0xfd, 0x39, 0xab, 0xc0, 0xee, 0x93, 0xdb, 0x50, 0x3c, 0x71, 0x99, + 0x4a, 0xdb, 0x0d, 0x8d, 0xfe, 0x64, 0xa7, 0xbf, 0x3f, 0x67, 0x09, 0x0c, 0xf9, 0x08, 0x5a, 0x6e, + 0x10, 0x8d, 0x3d, 0xdb, 0xbb, 0x08, 0x9d, 0x91, 0xef, 0xaa, 0x6c, 0xbd, 0x38, 0xa9, 0x0e, 0xa2, + 0xb1, 0xb7, 0x2b, 0x71, 0xfb, 0x73, 0x56, 0xd3, 0xcd, 0x8c, 0xc5, 0x36, 0x4e, 0xbd, 0xa1, 0x2c, + 0x5e, 0x33, 0xdb, 0xd8, 0xdf, 0x7d, 0x24, 0xbe, 0x8f, 0x38, 0xb2, 0x0f, 0xc4, 0xf9, 0x72, 0x9c, + 0x50, 0x7b, 0x10, 0x44, 0x03, 0x5b, 0x1b, 0x96, 0x94, 0x78, 0x4f, 0xcf, 0xd8, 0x12, 0x14, 0xdb, + 0x41, 0x34, 0x50, 0x72, 0x12, 0x19, 0xdb, 0x99, 0x82, 0x6d, 0xd7, 0xa1, 0xaa, 0x82, 0xa3, 0x59, + 0x81, 0x92, 0x90, 0x95, 0xf9, 0x26, 0x94, 0x51, 0x1c, 0xc2, 0x9e, 0x84, 0x51, 0xeb, 0x1a, 0x10, + 0x0d, 0xfc, 0xcf, 0x4a, 0x50, 0xe8, 0xdf, 0x17, 0x75, 0x3c, 0x0d, 0xbd, 0x38, 0xf2, 0x55, 0x4d, + 0x55, 0xb7, 0xd2, 0xb1, 0x68, 0x50, 0x32, 0x87, 0xab, 0xf5, 0xf4, 0x30, 0xf5, 0x06, 0x54, 0x06, + 0x63, 0xf7, 0x8c, 0x72, 0x55, 0xac, 0xa9, 0x91, 0x80, 0xc7, 0x09, 0x1d, 0xfa, 0x2f, 0x94, 0xe1, + 0xaa, 0x91, 0x4c, 0x23, 0x32, 0x7e, 0xbb, 0x81, 0xc3, 0x64, 0xd1, 0x5f, 0x17, 0x69, 0x04, 0x81, + 0x3b, 0x02, 0x26, 0xaa, 0x33, 0xc6, 0xa4, 0xbd, 0xd6, 0x2d, 0xf1, 0x53, 0x40, 0x1c, 0x37, 0x40, + 0x61, 0xd4, 0x2d, 0xf1, 0x53, 0x64, 0x12, 0xc7, 0x75, 0x29, 0x63, 0x98, 0xab, 0x6a, 0xf2, 0x64, + 0x54, 0x42, 0x44, 0xba, 0x5a, 0x87, 0x79, 0x46, 0xdd, 0x84, 0x72, 0x3b, 0x43, 0x55, 0x47, 0xaa, + 0x8e, 0x44, 0x6c, 0xa5, 0xb4, 0x6b, 0xd0, 0x1d, 0x46, 0x89, 0x4b, 0x6d, 0x21, 0x0c, 0x9b, 0xf1, + 0x8b, 0x80, 0xaa, 0xcc, 0xd0, 0x46, 0xf8, 0x91, 0xc3, 0x4f, 0xfb, 0x02, 0x4a, 0xee, 0x40, 0x9b, + 0x31, 0x6a, 0x9f, 0x8d, 0xf0, 0x7b, 0x22, 0xc6, 0xc8, 0x64, 0xd1, 0x60, 0x8c, 0x3e, 0x1e, 0x89, + 0x8f, 0x1d, 0x78, 0xc2, 0xc7, 0x93, 0x28, 0xa0, 0xb6, 0x93, 0xc8, 0x53, 0xd9, 0xba, 0x55, 0x15, + 0xe3, 0xad, 0x44, 0xe6, 0xc7, 0x17, 0x9c, 0x26, 0xa1, 0x6c, 0x43, 0x5b, 0x88, 0x05, 0x0d, 0x3a, + 0xf0, 0xc8, 0x06, 0x2c, 0x44, 0x83, 0x1f, 0x53, 0x97, 0xdb, 0xa2, 0x7d, 0x4c, 0xcf, 0xd6, 0xda, + 0xc8, 0xcd, 0xbc, 0x44, 0x3d, 0x89, 0xdc, 0x33, 0x7d, 0xb0, 0x26, 0xc4, 0xa9, 0x5d, 0x3c, 0x3a, + 0xa3, 0x32, 0xf2, 0x0b, 0x71, 0x2a, 0x37, 0x16, 0x30, 0xa1, 0xd7, 0x38, 0x89, 0xce, 0x7d, 0x8f, + 0x26, 0x78, 0xe6, 0x58, 0xb7, 0xd2, 0xb1, 0x28, 0x96, 0xe3, 0x24, 0x1a, 0xfa, 0x01, 0x55, 0x27, + 0x8b, 0x7a, 0x68, 0xfe, 0xd2, 0x80, 0xe2, 0x27, 0x3b, 0xfd, 0x97, 0x59, 0x85, 0xd2, 0x7e, 0xe1, + 0x0a, 0xed, 0x17, 0xaf, 0xd7, 0x7e, 0x69, 0x86, 0xf6, 0xdf, 0x85, 0x76, 0x9c, 0x50, 0x8f, 0x0e, + 0xfd, 0x90, 0x7a, 0xb6, 0x50, 0xbb, 0xb4, 0x91, 0xd6, 0x04, 0xba, 0xe5, 0x06, 0xa2, 0x37, 0x74, + 0x05, 0x20, 0xe4, 0xbe, 0x13, 0x30, 0x74, 0x1a, 0x65, 0x31, 0x9d, 0x0c, 0x5c, 0xb8, 0x85, 0x39, + 0x82, 0x2e, 0xfa, 0xcd, 0xce, 0x98, 0xf1, 0x68, 0x84, 0xc5, 0x97, 0x58, 0x25, 0x53, 0xfe, 0xe9, + 0xaa, 0xb8, 0x6e, 0xb5, 0x26, 0x50, 0x41, 0xb6, 0x09, 0x4b, 0x79, 0x32, 0x3b, 0xd3, 0xa7, 0xd7, + 0xad, 0x85, 0x1c, 0x75, 0x1f, 0x51, 0x22, 0x8c, 0x75, 0xa7, 0xfd, 0xf4, 0x37, 0x2f, 0xc6, 0xb7, + 0xa1, 0xe9, 0xb8, 0x6e, 0x34, 0x0e, 0xb9, 0x8d, 0x09, 0x44, 0x0a, 0xb1, 0xa1, 0x60, 0x4f, 0x45, + 0x1e, 0xb9, 0x05, 0xc0, 0x4e, 0x9d, 0x84, 0xca, 0x7a, 0x4f, 0x0a, 0xaf, 0x2e, 0x21, 0x62, 0xef, + 0x13, 0x17, 0x63, 0xfe, 0x49, 0xde, 0xc5, 0xfa, 0xfe, 0x89, 0x50, 0x40, 0x46, 0x34, 0xcc, 0x8d, + 0x62, 0xaa, 0x3d, 0x6c, 0x02, 0xef, 0x0b, 0x30, 0xf9, 0xf8, 0x92, 0xb0, 0x61, 0x46, 0x58, 0xcb, + 0xa8, 0x67, 0x4a, 0x0d, 0xe6, 0x9f, 0x1a, 0x50, 0xd9, 0x96, 0x42, 0x79, 0xb5, 0x28, 0x55, 0xbc, + 0x22, 0x4a, 0x95, 0xae, 0x10, 0x70, 0xf9, 0x7a, 0x01, 0x57, 0x2e, 0x0b, 0x58, 0x74, 0x93, 0xcd, + 0x6c, 0xd0, 0x27, 0x77, 0xd3, 0x55, 0x0c, 0xd5, 0xc8, 0xe9, 0x32, 0x05, 0xa1, 0xe9, 0xaa, 0x77, + 0xa0, 0xa5, 0xfd, 0x4f, 0xaa, 0x46, 0x6a, 0xbd, 0xa9, 0x81, 0xa8, 0x9b, 0xef, 0x43, 0xd9, 0xe1, + 0x3c, 0xd1, 0x0d, 0xf7, 0xed, 0x59, 0x69, 0x66, 0x63, 0x4b, 0x50, 0xec, 0x85, 0x3c, 0xb9, 0xb0, + 0x24, 0xf5, 0xf2, 0x43, 0x80, 0x09, 0x50, 0x84, 0xcd, 0x89, 0x65, 0x8b, 0x9f, 0x64, 0x11, 0xca, + 0xe7, 0x4e, 0x30, 0xd6, 0x6b, 0xca, 0xc1, 0xef, 0x14, 0x1e, 0x1a, 0xe6, 0x0a, 0x94, 0x44, 0x3a, + 0x92, 0x32, 0x1c, 0x45, 0x5c, 0x1f, 0x13, 0xa8, 0x91, 0xf9, 0x8f, 0x06, 0xb4, 0xa7, 0x6e, 0xea, + 0xee, 0xe8, 0x9b, 0x34, 0x23, 0x9f, 0x78, 0x73, 0x17, 0x69, 0xdf, 0xae, 0xdd, 0x78, 0x95, 0xfb, + 0xab, 0xa9, 0x6b, 0x8f, 0xf2, 0x2b, 0x5d, 0x7b, 0x98, 0xf7, 0xa0, 0xbd, 0x13, 0x50, 0x27, 0x9c, + 0xf4, 0x4b, 0xb9, 0xa2, 0xd1, 0xc8, 0x17, 0x8d, 0xe6, 0x11, 0x74, 0x52, 0xf2, 0xd7, 0xd9, 0x76, + 0x0f, 0xaa, 0x6c, 0x8c, 0xbe, 0x82, 0x9b, 0xae, 0x59, 0x7a, 0x68, 0x3e, 0x84, 0xb6, 0xba, 0xcd, + 0xd4, 0x0c, 0xdc, 0x85, 0x0e, 0x73, 0xce, 0xa9, 0xcd, 0x23, 0x3b, 0x5b, 0x4f, 0xd6, 0xac, 0x96, + 0x00, 0x1f, 0x47, 0x2a, 0x86, 0x98, 0x7f, 0x63, 0x40, 0x27, 0x9d, 0xfa, 0x9a, 0x3a, 0x98, 0xec, + 0xb0, 0x30, 0x55, 0x16, 0x7f, 0x17, 0x88, 0x1b, 0x05, 0x81, 0x48, 0x3a, 0x78, 0x1d, 0x88, 0xf1, + 0x41, 0x15, 0xa1, 0x5d, 0x85, 0x11, 0x62, 0xdf, 0x11, 0x70, 0x91, 0x58, 0x73, 0xd4, 0x78, 0x98, + 0x2d, 0x7b, 0xc1, 0x4e, 0x86, 0xb8, 0xef, 0x7f, 0x49, 0xcd, 0x05, 0x98, 0xdf, 0x39, 0xa5, 0xee, + 0xd9, 0x96, 0x37, 0xf2, 0x43, 0xb5, 0x59, 0xf3, 0xa7, 0x06, 0x90, 0x2c, 0xf4, 0x75, 0xf6, 0xf1, + 0xaa, 0x57, 0xbc, 0xeb, 0x30, 0x7f, 0xea, 0x30, 0x3b, 0xa6, 0xa1, 0xe7, 0x87, 0x27, 0xb6, 0x23, + 0x56, 0xc2, 0x1d, 0xd5, 0xac, 0xce, 0xa9, 0xc3, 0x8e, 0x24, 0x1c, 0x19, 0x30, 0xff, 0xd9, 0x80, + 0x5b, 0x7b, 0x2a, 0x03, 0x2b, 0x41, 0x5b, 0x54, 0xa8, 0x21, 0x55, 0xcf, 0x8c, 0x9e, 0xd3, 0x78, + 0xad, 0x9e, 0xf3, 0x36, 0x34, 0x54, 0x56, 0xcf, 0xb8, 0x3b, 0x48, 0xd0, 0x53, 0x55, 0xd0, 0x27, + 0x72, 0x4d, 0x49, 0x21, 0xa3, 0x57, 0x43, 0xc1, 0x90, 0xe4, 0x5d, 0x68, 0x63, 0x6f, 0x12, 0x72, + 0x3b, 0xa0, 0xe1, 0x09, 0x3f, 0x55, 0x42, 0x6f, 0x29, 0xe8, 0x13, 0x04, 0x9a, 0xab, 0xb0, 0x72, + 0xd5, 0x66, 0xa4, 0xa0, 0xcd, 0xbf, 0x34, 0x60, 0x79, 0x8a, 0xa4, 0xef, 0x9c, 0xff, 0x06, 0x37, + 0x7b, 0x79, 0x27, 0xc5, 0x59, 0x3b, 0xb9, 0x05, 0x6f, 0xce, 0x64, 0x53, 0x6d, 0xe3, 0xe7, 0xea, + 0x5a, 0xc4, 0x73, 0xb8, 0x43, 0xd6, 0x75, 0xb4, 0x30, 0xf2, 0xa7, 0x93, 0xbb, 0xea, 0x7a, 0x03, + 0x7b, 0x66, 0x15, 0x35, 0x1e, 0x40, 0x03, 0x0d, 0x57, 0xb5, 0xac, 0xf2, 0x2e, 0x62, 0x69, 0x7a, + 0x06, 0xb6, 0xa6, 0x16, 0xde, 0x8f, 0xab, 0x2e, 0x15, 0x5b, 0x37, 0xa1, 0xa1, 0xf4, 0x88, 0x17, + 0xbb, 0x3a, 0xe1, 0x41, 0xb7, 0x41, 0xa8, 0x2a, 0x0a, 0xce, 0x69, 0xa6, 0x7f, 0x03, 0x0d, 0x92, + 0xbd, 0xdd, 0xc8, 0x79, 0x21, 0x70, 0x52, 0x69, 0xe5, 0x91, 0xf3, 0x42, 0x81, 0xfd, 0x50, 0x80, + 0xcb, 0x0a, 0xec, 0x87, 0xc7, 0x82, 0x43, 0x7c, 0x1c, 0x92, 0x06, 0xb6, 0xaa, 0x0a, 0x6c, 0x99, + 0x7b, 0x62, 0x1d, 0xd8, 0x1a, 0xa3, 0xc9, 0xc0, 0xfc, 0x57, 0x03, 0x5a, 0x39, 0xfe, 0x67, 0x15, + 0xfb, 0xe4, 0x87, 0xd0, 0x99, 0xdc, 0x0a, 0xc9, 0x73, 0x86, 0xc2, 0x35, 0x52, 0x6b, 0xa5, 0x57, + 0x44, 0xd8, 0xf2, 0x4e, 0x58, 0x2e, 0x66, 0x59, 0xbe, 0x62, 0x83, 0x77, 0xa1, 0x23, 0xa8, 0xb3, + 0xc2, 0x91, 0x3b, 0x6d, 0x49, 0xd7, 0xd7, 0xf2, 0xb9, 0x01, 0x15, 0x65, 0x0a, 0xf2, 0x3a, 0x4f, + 0x8d, 0xcc, 0x7f, 0xaa, 0x40, 0x33, 0xcb, 0x4d, 0xe6, 0x9e, 0xc4, 0xc8, 0xdd, 0x93, 0xe8, 0x8d, + 0x16, 0x32, 0x1b, 0x5d, 0x87, 0xf9, 0x70, 0x3c, 0x1a, 0xd0, 0xc4, 0x8e, 0x86, 0x36, 0x0d, 0x79, + 0xe2, 0x53, 0xc9, 0x75, 0xd1, 0xea, 0x48, 0xc4, 0xb3, 0xe1, 0x9e, 0x04, 0x67, 0xb6, 0x55, 0x9a, + 0xbd, 0xad, 0x72, 0x76, 0x5b, 0x53, 0xfa, 0xae, 0x5c, 0xd2, 0xf7, 0x9b, 0x50, 0x57, 0x07, 0xbb, + 0xbe, 0x87, 0xea, 0x2b, 0x5a, 0x35, 0x09, 0x98, 0x3e, 0x7f, 0xab, 0x5d, 0x9d, 0x10, 0xeb, 0x33, + 0x4e, 0xc4, 0x27, 0xf7, 0x88, 0xef, 0x40, 0x09, 0x9b, 0xfa, 0x06, 0x1a, 0x47, 0x37, 0x9b, 0x1f, + 0xb1, 0x9b, 0x47, 0xac, 0xf8, 0x9c, 0xcf, 0xf0, 0xba, 0x12, 0x5b, 0x91, 0x9a, 0x55, 0xf1, 0x19, + 0x5e, 0x28, 0xbf, 0x01, 0x35, 0x79, 0x84, 0xa0, 0xda, 0x90, 0xa2, 0x55, 0xc5, 0xf1, 0x81, 0x97, + 0x51, 0x46, 0x3b, 0xab, 0x0c, 0xf2, 0xdb, 0xb0, 0x2c, 0x64, 0x34, 0xa0, 0x27, 0x28, 0x29, 0xdb, + 0x0f, 0x6d, 0x8f, 0x0e, 0x9d, 0x71, 0xc0, 0x6d, 0x77, 0x88, 0x8d, 0x47, 0xc9, 0x5a, 0x1a, 0xf9, + 0xe1, 0xb6, 0x20, 0x38, 0x66, 0x07, 0xe1, 0xae, 0xc4, 0xee, 0x0c, 0x31, 0xbe, 0xe1, 0x13, 0x8a, + 0x68, 0x38, 0x64, 0x94, 0x63, 0x17, 0x52, 0xb2, 0x1a, 0x08, 0x7b, 0x86, 0xa0, 0x09, 0x89, 0x5a, + 0x7b, 0x3e, 0x43, 0x22, 0x23, 0xc2, 0xcc, 0x33, 0x0d, 0xf2, 0x9a, 0x67, 0x1a, 0xd9, 0xbb, 0xaa, + 0x85, 0xa9, 0xbb, 0xaa, 0x35, 0xe8, 0x2a, 0xad, 0x4d, 0xf4, 0xb3, 0x88, 0x4a, 0x68, 0x4b, 0x78, + 0x5f, 0x6b, 0xe9, 0x1d, 0x68, 0xeb, 0x83, 0x7b, 0xa5, 0xac, 0x25, 0xa4, 0x53, 0xc7, 0xf9, 0x7b, + 0x52, 0x65, 0x0f, 0x26, 0xc7, 0xfb, 0x71, 0xe4, 0x9e, 0xaa, 0xe7, 0x0d, 0x0b, 0xf9, 0x9c, 0xb5, + 0x27, 0x50, 0xe9, 0x09, 0xbf, 0x18, 0x10, 0x0b, 0x16, 0x31, 0x42, 0x65, 0x4a, 0x66, 0x74, 0xd3, + 0x9b, 0x18, 0x87, 0x57, 0xf3, 0x27, 0xcb, 0x42, 0xe1, 0x93, 0x23, 0x6a, 0x74, 0x59, 0x32, 0xbc, + 0x04, 0x33, 0x7f, 0x66, 0xc0, 0x7c, 0xf6, 0xb4, 0x66, 0x4f, 0xd7, 0x05, 0xa7, 0x4e, 0x1c, 0xd3, + 0xd0, 0x76, 0xf4, 0x35, 0x4a, 0x4d, 0x02, 0xb6, 0xf0, 0x18, 0x19, 0xb3, 0xae, 0xed, 0x46, 0x9e, + 0x8e, 0xe3, 0x75, 0x84, 0xec, 0x44, 0x9e, 0x48, 0xd8, 0xf2, 0x45, 0x9b, 0x3d, 0xa2, 0x8c, 0x89, + 0x92, 0x45, 0x26, 0xad, 0x26, 0x02, 0x0f, 0x25, 0x2c, 0x17, 0x34, 0xf5, 0x25, 0xa5, 0x0c, 0x9a, + 0xe6, 0x03, 0x28, 0xf5, 0x63, 0x07, 0x6b, 0x73, 0x65, 0x15, 0x92, 0x01, 0x35, 0xca, 0x98, 0x61, + 0x21, 0x17, 0x13, 0xf6, 0xa0, 0x21, 0xe6, 0xb1, 0x67, 0x43, 0xfd, 0x2a, 0xe1, 0x52, 0x88, 0x33, + 0xa1, 0xcc, 0x04, 0xc9, 0xf4, 0x9d, 0xb7, 0x98, 0x67, 0x49, 0x94, 0xf9, 0xb3, 0x22, 0xf4, 0x9e, + 0x44, 0x27, 0x58, 0xab, 0x8c, 0x07, 0xc2, 0x4c, 0x1c, 0x57, 0x1d, 0xf2, 0x3b, 0xe9, 0x25, 0xbd, + 0x91, 0xbf, 0xa4, 0x9f, 0xf8, 0xb4, 0x7a, 0x62, 0x91, 0xfa, 0xf4, 0xd4, 0x7d, 0x15, 0x59, 0x85, + 0xa6, 0x1f, 0xc6, 0x63, 0x6e, 0xe7, 0xa2, 0x22, 0x20, 0xec, 0x10, 0x63, 0xc8, 0x84, 0x22, 0x9b, + 0x01, 0x14, 0x05, 0x06, 0x9f, 0xbb, 0xd0, 0x51, 0x6c, 0xd9, 0xc3, 0x24, 0x1a, 0x4d, 0x22, 0x4d, + 0x4b, 0x81, 0x1f, 0x25, 0xd1, 0xe8, 0x18, 0xdf, 0xde, 0x69, 0xba, 0x71, 0xc8, 0xfd, 0xc0, 0x56, + 0x97, 0xa0, 0x25, 0xab, 0xad, 0xe0, 0x9f, 0x09, 0xf0, 0x31, 0x13, 0xd1, 0x40, 0xac, 0x36, 0x89, + 0x3b, 0x22, 0xe8, 0xa9, 0xa8, 0x23, 0x18, 0xcd, 0x44, 0x9d, 0x91, 0xf3, 0x42, 0x20, 0x56, 0xf1, + 0x2d, 0x1e, 0x5c, 0x11, 0x63, 0x0a, 0xfc, 0x22, 0x17, 0x48, 0x1a, 0xf9, 0x40, 0x72, 0x0f, 0xaa, + 0x2c, 0x1a, 0x27, 0x2e, 0x65, 0xbd, 0x66, 0xfe, 0xc6, 0x3f, 0xa3, 0x40, 0x4b, 0xd3, 0x98, 0xbf, + 0x30, 0x60, 0x71, 0x96, 0x46, 0xc8, 0x87, 0x50, 0xc2, 0x08, 0x66, 0x28, 0xfb, 0x4f, 0x8f, 0xf7, + 0x66, 0x6b, 0xcf, 0x42, 0x6a, 0x72, 0x0f, 0x1a, 0x8c, 0x71, 0x3b, 0x1a, 0xf3, 0x78, 0xcc, 0x67, + 0x3f, 0x7f, 0x00, 0xc6, 0xf8, 0x33, 0x89, 0x27, 0xdb, 0x30, 0xaf, 0xd4, 0x8b, 0xb9, 0xf7, 0xd4, + 0x0f, 0xb9, 0xee, 0xbd, 0xd2, 0xca, 0x47, 0x7a, 0xac, 0x58, 0x63, 0xdf, 0x0f, 0xb9, 0xd5, 0x49, + 0x72, 0x63, 0x66, 0xfe, 0x11, 0xb4, 0xf3, 0x24, 0xdf, 0xf2, 0xf6, 0x73, 0x3a, 0x70, 0xc8, 0x33, + 0xcb, 0x97, 0x06, 0x0e, 0xf3, 0x0f, 0x61, 0x69, 0x96, 0x50, 0x18, 0xd9, 0x85, 0x36, 0xcb, 0x41, + 0x54, 0xa1, 0xf4, 0xd6, 0x75, 0xb2, 0xb4, 0xa6, 0xe6, 0x98, 0xff, 0x56, 0x80, 0x79, 0x45, 0xb8, + 0x33, 0xd1, 0x0e, 0xb6, 0x0f, 0x7a, 0x94, 0x5a, 0xaa, 0xa1, 0xdb, 0x07, 0x8d, 0x51, 0xc6, 0xba, + 0x01, 0x0b, 0x19, 0xea, 0xd4, 0x5e, 0xa5, 0x3f, 0xcd, 0x4f, 0x50, 0xda, 0x64, 0xf5, 0xf1, 0x77, + 0x31, 0x73, 0xfc, 0x2d, 0x62, 0x78, 0x34, 0x1a, 0xd1, 0x90, 0xeb, 0x93, 0x8f, 0x74, 0x4c, 0xde, + 0x82, 0xba, 0x93, 0x70, 0x7f, 0xe8, 0xb8, 0x5c, 0x9f, 0x2d, 0x4e, 0x00, 0xa2, 0xf4, 0x4c, 0x07, + 0xf6, 0xa9, 0xc3, 0x74, 0xbd, 0xd1, 0x4a, 0xa1, 0xfb, 0x0e, 0x3b, 0x25, 0xdf, 0x81, 0xce, 0x09, + 0x0d, 0x69, 0xe2, 0x70, 0xea, 0xa9, 0xd7, 0x33, 0xf2, 0xe4, 0xb1, 0x9d, 0x82, 0xe5, 0xa3, 0x99, + 0x69, 0x27, 0xae, 0x5d, 0x72, 0xe2, 0xe9, 0x40, 0x50, 0x9f, 0x0e, 0x04, 0xe6, 0x3f, 0x18, 0xb2, + 0x90, 0xdd, 0xf3, 0x7c, 0x3e, 0x33, 0x9a, 0x6d, 0xc2, 0x92, 0x47, 0x03, 0xca, 0xa9, 0x9d, 0x3e, + 0x61, 0x99, 0xbc, 0xe8, 0xa9, 0x5b, 0x0b, 0x12, 0x79, 0xa4, 0x70, 0x92, 0xb1, 0xc7, 0xb0, 0xa8, + 0xe6, 0x04, 0xd1, 0x49, 0x66, 0x8a, 0x34, 0xe8, 0x37, 0xd2, 0x4a, 0x0f, 0x69, 0xb2, 0xde, 0x48, + 0xe4, 0xb4, 0x27, 0x72, 0x96, 0xfc, 0xd8, 0x1d, 0x68, 0x79, 0x94, 0xf1, 0x64, 0xec, 0x72, 0x9b, + 0xd1, 0x60, 0xa8, 0x1e, 0xc1, 0x36, 0x35, 0xb0, 0x4f, 0x83, 0xa1, 0xf9, 0x07, 0xd0, 0xb5, 0xe8, + 0xf3, 0xc4, 0xe7, 0x9c, 0xca, 0x37, 0x33, 0x07, 0xbb, 0xe4, 0x3d, 0x98, 0x77, 0x42, 0x17, 0xfb, + 0x0f, 0x5b, 0xbf, 0x98, 0x50, 0x2f, 0x28, 0xba, 0x1a, 0xf1, 0x99, 0x82, 0x0b, 0xad, 0xa6, 0x34, + 0xb2, 0xbe, 0x4e, 0xc7, 0xe6, 0xff, 0x18, 0xd0, 0x3c, 0x08, 0x4f, 0x28, 0xe3, 0xd4, 0xeb, 0xf7, + 0x8f, 0x19, 0xd9, 0x11, 0xa9, 0x5a, 0xad, 0x66, 0xab, 0x97, 0x09, 0xd2, 0xa4, 0x7b, 0x13, 0x67, + 0xcd, 0x73, 0x23, 0xdc, 0x35, 0x0b, 0x61, 0x93, 0x33, 0x86, 0xc2, 0xd5, 0x67, 0x0c, 0x3d, 0xa8, + 0x39, 0xcc, 0xf6, 0x87, 0x93, 0x8a, 0xb7, 0xe2, 0xb0, 0x83, 0xe1, 0x31, 0x13, 0xe5, 0xa5, 0x2c, + 0xa1, 0xe5, 0x99, 0x11, 0x46, 0x0c, 0x65, 0x8e, 0x1d, 0x44, 0x1c, 0x21, 0x1c, 0xc3, 0xc0, 0x32, + 0xd4, 0x86, 0x7e, 0xe8, 0xb3, 0x53, 0xea, 0xa1, 0x51, 0xd6, 0xac, 0x74, 0x9c, 0x79, 0x7e, 0x38, + 0x1e, 0xfb, 0x9e, 0x7e, 0x8f, 0x23, 0x41, 0x9f, 0x8d, 0x7d, 0xcf, 0x7c, 0x0e, 0xf3, 0x97, 0xf4, + 0xf4, 0x6d, 0xd3, 0x9e, 0xe0, 0xfa, 0xf9, 0x69, 0x24, 0xaf, 0x8e, 0x68, 0xbe, 0xff, 0xea, 0x20, + 0x42, 0x7c, 0x5d, 0x75, 0x60, 0xbf, 0x28, 0x40, 0xfd, 0xd0, 0x3f, 0x49, 0xf0, 0x2d, 0x27, 0x3e, + 0xb8, 0x48, 0xa8, 0xc3, 0xd5, 0x3b, 0x85, 0xba, 0xa5, 0x87, 0x64, 0x73, 0xf2, 0x0a, 0x59, 0x5e, + 0x31, 0xa5, 0x3a, 0x48, 0x67, 0xeb, 0x7e, 0x25, 0x7d, 0x9f, 0x7c, 0x0f, 0xea, 0xd4, 0xf3, 0xb9, + 0xad, 0x02, 0x7b, 0x71, 0xfa, 0x21, 0xac, 0xf0, 0x06, 0xab, 0x26, 0x48, 0x30, 0x21, 0xbf, 0x0d, + 0x4d, 0x9e, 0x8c, 0x43, 0x17, 0x3d, 0x92, 0x47, 0x2a, 0x5e, 0x34, 0x52, 0xd8, 0x71, 0x44, 0x3e, + 0x82, 0x46, 0x36, 0xc0, 0x4d, 0x59, 0xfa, 0xa5, 0xb8, 0x65, 0x65, 0xa9, 0x85, 0xc7, 0xa7, 0x26, + 0x9e, 0xde, 0x5b, 0x08, 0xef, 0x6a, 0x6b, 0xb0, 0xd4, 0xa6, 0x88, 0x76, 0xbe, 0x32, 0x44, 0x5b, + 0xa4, 0x17, 0x21, 0x78, 0xf9, 0x8e, 0xb9, 0x6e, 0x75, 0x35, 0xa6, 0xcf, 0xf8, 0x91, 0x80, 0xaf, + 0x3f, 0x85, 0xd5, 0x97, 0x3d, 0xb4, 0x27, 0x1d, 0x68, 0x7c, 0x86, 0x37, 0x62, 0xf8, 0x9e, 0xbc, + 0x3b, 0x47, 0x5a, 0x50, 0xff, 0x91, 0xe3, 0xf3, 0xad, 0x38, 0x0e, 0x2e, 0xba, 0x06, 0x01, 0xa8, + 0x3c, 0x42, 0x5b, 0xe9, 0x16, 0xd6, 0x3f, 0x85, 0x95, 0xeb, 0x1f, 0xc2, 0x93, 0x79, 0x68, 0xa5, + 0x93, 0x77, 0xa3, 0x50, 0x7c, 0x6f, 0x09, 0xe6, 0x33, 0x0b, 0xc8, 0x27, 0xc3, 0x5d, 0x63, 0xfd, + 0x77, 0xa1, 0x33, 0x55, 0x2d, 0x93, 0x06, 0x54, 0x3f, 0x7b, 0xfa, 0xf8, 0xe9, 0xb3, 0x1f, 0x3d, + 0xed, 0xce, 0x91, 0x2a, 0x14, 0x9f, 0x7c, 0xf1, 0xa1, 0x64, 0xa0, 0xff, 0x74, 0xeb, 0xe8, 0xe8, + 0xf7, 0xbb, 0x05, 0x52, 0x83, 0xd2, 0x17, 0xfd, 0xe3, 0xdd, 0x6e, 0x71, 0x7d, 0x35, 0x7d, 0xef, + 0x2e, 0x8a, 0xc1, 0x1a, 0x94, 0xfa, 0x3b, 0x5b, 0x62, 0x5a, 0x0d, 0x4a, 0x8f, 0x0e, 0x9e, 0xec, + 0x75, 0x8d, 0xf5, 0x5b, 0xd0, 0xc8, 0xb4, 0xaa, 0xa4, 0x02, 0x85, 0xcf, 0x3f, 0xe8, 0xce, 0xe1, + 0xdf, 0xcd, 0xae, 0xb1, 0x7e, 0x1b, 0x6a, 0xba, 0x90, 0x10, 0x4b, 0x48, 0x13, 0x97, 0xeb, 0x1e, + 0x8d, 0x05, 0x83, 0xeb, 0xd0, 0x9d, 0xb6, 0x1f, 0x31, 0xf9, 0xf0, 0x7d, 0xf9, 0x91, 0xc3, 0x0f, + 0xba, 0x06, 0xfe, 0xdd, 0xec, 0x16, 0x36, 0x7f, 0x5d, 0x80, 0x8a, 0x64, 0x87, 0x7c, 0x04, 0xea, + 0x1f, 0x30, 0xc8, 0xd2, 0xd4, 0x03, 0x43, 0x29, 0xf4, 0xe5, 0x1b, 0xd3, 0x60, 0x75, 0xa2, 0x30, + 0xf7, 0xbe, 0x41, 0x8e, 0x60, 0x01, 0xcf, 0xa6, 0xb2, 0x27, 0x44, 0xcf, 0x62, 0x92, 0x9a, 0xd1, + 0xa5, 0xe3, 0xac, 0xe5, 0xe5, 0x59, 0xa8, 0xcc, 0x17, 0x4f, 0x61, 0x69, 0xa6, 0xca, 0xc8, 0x3b, + 0xaf, 0xf2, 0xaf, 0x18, 0xcb, 0xef, 0xbe, 0x84, 0x4a, 0xae, 0xb4, 0x66, 0xbc, 0x6f, 0x90, 0x1f, + 0x42, 0x35, 0x96, 0x44, 0xe4, 0xc6, 0xd4, 0x2c, 0xfd, 0xb5, 0x9b, 0x97, 0xe0, 0x9a, 0x53, 0x31, + 0xdb, 0x95, 0xe7, 0x9c, 0x24, 0xf3, 0xe0, 0x29, 0x7b, 0x4e, 0x3a, 0x99, 0x3d, 0x75, 0x20, 0x6a, + 0xce, 0x6d, 0xfe, 0xbd, 0x01, 0x9d, 0xa9, 0xd3, 0x1a, 0xf2, 0x05, 0x54, 0xd5, 0x01, 0x16, 0x49, + 0x77, 0x71, 0xed, 0x41, 0xdb, 0xf2, 0xdd, 0x97, 0x91, 0xa5, 0xdc, 0xfe, 0x1e, 0x94, 0x98, 0x73, + 0x4e, 0x89, 0x79, 0xc5, 0x8c, 0xcc, 0x89, 0xd6, 0xf2, 0x9d, 0x6b, 0x69, 0xf4, 0x27, 0xb7, 0x37, + 0x7f, 0xf5, 0x57, 0x35, 0xe3, 0x97, 0x5f, 0xaf, 0x18, 0x5f, 0x7d, 0xbd, 0x62, 0xfc, 0xe7, 0xd7, + 0x2b, 0xc6, 0xcf, 0xbf, 0x59, 0x99, 0xfb, 0x8b, 0x6f, 0x56, 0xe6, 0xbe, 0xfa, 0x66, 0x65, 0xee, + 0x57, 0xdf, 0xac, 0xcc, 0x41, 0x37, 0x4a, 0x4e, 0x36, 0xb8, 0x7f, 0x76, 0xbe, 0x71, 0x76, 0x8e, + 0xff, 0x7b, 0x33, 0xa8, 0xe0, 0x9f, 0xfb, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x72, 0x3b, 0x3b, + 0x5c, 0xff, 0x33, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -9940,11 +9939,11 @@ func (m *Migration) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.ExtraFullBackupPaths) > 0 { - for iNdEx := len(m.ExtraFullBackupPaths) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ExtraFullBackupPaths[iNdEx]) - copy(dAtA[i:], m.ExtraFullBackupPaths[iNdEx]) - i = encodeVarintBrpb(dAtA, i, uint64(len(m.ExtraFullBackupPaths[iNdEx]))) + if len(m.IngestedSstPaths) > 0 { + for iNdEx := len(m.IngestedSstPaths) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.IngestedSstPaths[iNdEx]) + copy(dAtA[i:], m.IngestedSstPaths[iNdEx]) + i = encodeVarintBrpb(dAtA, i, uint64(len(m.IngestedSstPaths[iNdEx]))) i-- dAtA[i] = 0x3a } @@ -11820,8 +11819,8 @@ func (m *Migration) Size() (n int) { if m.Version != 0 { n += 1 + sovBrpb(uint64(m.Version)) } - if len(m.ExtraFullBackupPaths) > 0 { - for _, s := range m.ExtraFullBackupPaths { + if len(m.IngestedSstPaths) > 0 { + for _, s := range m.IngestedSstPaths { l = len(s) n += 1 + l + sovBrpb(uint64(l)) } @@ -23222,7 +23221,7 @@ func (m *Migration) Unmarshal(dAtA []byte) error { } case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExtraFullBackupPaths", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IngestedSstPaths", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -23250,7 +23249,7 @@ func (m *Migration) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ExtraFullBackupPaths = append(m.ExtraFullBackupPaths, string(dAtA[iNdEx:postIndex])) + m.IngestedSstPaths = append(m.IngestedSstPaths, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/proto/brpb.proto b/proto/brpb.proto index c9ac52ece..182c7e426 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -918,7 +918,7 @@ message IngestedSSTs { repeated RewrittenTableID rewritten_tables = 1; // The SST files restored. repeated File files = 2; - // Treating the whole extra full backup as an huge atomic + // Treating the whole batch of SSTs as an huge atomic // write as this timestamp. // That is, when user wants to PiTR to sometime after this, // everything restored will present after the PiTR. @@ -927,17 +927,17 @@ message IngestedSSTs { // The hint of the common prefix of the files. // Used for speed up garbage collecting. string files_prefix_hint = 4; - // Whether this piece of extra full backup is finished. + // Whether this batch have finished. // If not, `as_if_ts` should be ignored and this should only // be restored when there is a finished backup with the same // `backup_uuid`. bool finished = 5; // When checkpoint enabled, one restoration may be separated to many - // of `ExtraFullBackup`s. - // `ExtraFullBackup`s sharing the same UUID should be treated as one. + // of `IngestedSST`s. + // `IngestedSST`s sharing the same UUID should be treated as one. // That is: - // - The `as_if_ts` should be the largest one among all finished extra backups. - // - When restoring, all backups sharing the same uuid should be restored or not. + // - The `as_if_ts` should be the largest one among all finished ingested SST batches. + // - When restoring, all batches sharing the same uuid should be restored or not. bytes backup_uuid = 6; } @@ -957,7 +957,7 @@ enum MigrationVersion { M0 = 0; // Added `creator` and `version`. M1 = 1; - // Added `extra_full_backup_paths`. + // Added `ingested_sst_paths`. M2 = 2; } @@ -970,8 +970,8 @@ message Migration { repeated LogFileCompaction compactions = 3; // Delete all files matches this prefix. repeated string destruct_prefix = 4; - // The extra full backups. + // The ingested SSTs. // It is mutable during restoring, hence a reference. - repeated string extra_full_backup_paths = 7; + repeated string ingested_sst_paths = 7; } diff --git a/scripts/proto.lock b/scripts/proto.lock index 0a88cbbd7..1c134a50b 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -2113,7 +2113,7 @@ }, { "id": 7, - "name": "extra_full_backup_paths", + "name": "ingested_sst_paths", "type": "string", "is_repeated": true }