diff --git a/pkg/ccl/changefeedccl/poller.go b/pkg/ccl/changefeedccl/poller.go index 1da8ab691154..711f658173fe 100644 --- a/pkg/ccl/changefeedccl/poller.go +++ b/pkg/ccl/changefeedccl/poller.go @@ -471,11 +471,12 @@ func (p *poller) exportSpan( header := roachpb.Header{Timestamp: end} req := &roachpb.ExportRequest{ - RequestHeader: roachpb.RequestHeaderFromSpan(span), - StartTime: start, - MVCCFilter: roachpb.MVCCFilter_All, - ReturnSST: true, - OmitChecksum: true, + RequestHeader: roachpb.RequestHeaderFromSpan(span), + StartTime: start, + MVCCFilter: roachpb.MVCCFilter_All, + ReturnSST: true, + OmitChecksum: true, + EnableTimeBoundIteratorOptimization: true, } if isFullScan { req.MVCCFilter = roachpb.MVCCFilter_Latest diff --git a/pkg/ccl/changefeedccl/table_history.go b/pkg/ccl/changefeedccl/table_history.go index 4faaece610f7..ccf318d8abc7 100644 --- a/pkg/ccl/changefeedccl/table_history.go +++ b/pkg/ccl/changefeedccl/table_history.go @@ -236,6 +236,9 @@ func fetchTableDescriptorVersions( MVCCFilter: roachpb.MVCCFilter_All, ReturnSST: true, OmitChecksum: true, + // TODO(dan): Remove this in a PR separate from the one that disables + // time-bound iterators for BACKUP. + EnableTimeBoundIteratorOptimization: true, } res, pErr := client.SendWrappedWith(ctx, db.NonTransactionalSender(), header, req) if log.V(2) { diff --git a/pkg/ccl/storageccl/engineccl/mvcc.go b/pkg/ccl/storageccl/engineccl/mvcc.go index 9a1abd63c7b1..47785ed2f229 100644 --- a/pkg/ccl/storageccl/engineccl/mvcc.go +++ b/pkg/ccl/storageccl/engineccl/mvcc.go @@ -69,41 +69,49 @@ var _ engine.SimpleIterator = &MVCCIncrementalIterator{} // IterOptions bundles options for NewMVCCIncrementalIterator. type IterOptions struct { - StartTime hlc.Timestamp - EndTime hlc.Timestamp - UpperBound roachpb.Key - WithStats bool + StartTime hlc.Timestamp + EndTime hlc.Timestamp + UpperBound roachpb.Key + WithStats bool + EnableTimeBoundIteratorOptimization bool } // NewMVCCIncrementalIterator creates an MVCCIncrementalIterator with the // specified engine and options. func NewMVCCIncrementalIterator(e engine.Reader, opts IterOptions) *MVCCIncrementalIterator { + io := engine.IterOptions{ + UpperBound: opts.UpperBound, + WithStats: opts.WithStats, + } + + // Time-bound iterators only make sense to use if the start time is set. + var sanityIter engine.Iterator + if opts.EnableTimeBoundIteratorOptimization && !opts.StartTime.IsEmpty() { + // The call to startTime.Next() converts our exclusive start bound into the + // inclusive start bound that MinTimestampHint expects. This is strictly a + // performance optimization; omitting the call would still return correct + // results. + io.MinTimestampHint = opts.StartTime.Next() + io.MaxTimestampHint = opts.EndTime + // It is necessary for correctness that sanityIter be created before iter. + // This is because the provided Reader may not be a consistent snapshot, so + // the two could end up observing different information. The hack around + // sanityCheckMetadataKey only works properly if all possible discrepancies + // between the two iterators lead to intents and values falling outside of + // the timestamp range **from iter's perspective**. This allows us to simply + // ignore discrepancies that we notice in advance(). See #34819. + sanityIter = e.NewIterator(engine.IterOptions{ + UpperBound: opts.UpperBound, + }) + } + return &MVCCIncrementalIterator{ e: e, upperBound: opts.UpperBound, - // It is necessary for correctness that sanityIter be created before - // iter. This is because the provided Reader may not be a consistent - // snapshot, so the two could end up observing different information. - // The hack around sanityCheckMetadataKey only works properly if all - // possible discrepancies between the two iterators lead to intents - // and values falling outside of the timestamp range **from iter's - // perspective**. This allows us to simply ignore discrepancies that - // we notice in advance(). See #34819. - sanityIter: e.NewIterator(engine.IterOptions{ - UpperBound: opts.UpperBound, - }), - iter: e.NewIterator(engine.IterOptions{ - // The call to startTime.Next() converts our exclusive start bound into - // the inclusive start bound that MinTimestampHint expects. This is - // strictly a performance optimization; omitting the call would still - // return correct results. - MinTimestampHint: opts.StartTime.Next(), - MaxTimestampHint: opts.EndTime, - UpperBound: opts.UpperBound, - WithStats: opts.WithStats, - }), - startTime: opts.StartTime, - endTime: opts.EndTime, + iter: e.NewIterator(io), + startTime: opts.StartTime, + endTime: opts.EndTime, + sanityIter: sanityIter, } } @@ -225,6 +233,11 @@ func (i *MVCCIncrementalIterator) advance() { // sees that exact key. Otherwise, it returns false. It's used in the workaround // in `advance` for a time-bound iterator bug. func (i *MVCCIncrementalIterator) sanityCheckMetadataKey() ([]byte, bool, error) { + if i.sanityIter == nil { + // If sanityIter is not set, it's because we're not using time-bound + // iterator and we don't need the sanity check. + return i.iter.UnsafeValue(), true, nil + } unsafeKey := i.iter.UnsafeKey() i.sanityIter.Seek(unsafeKey) if ok, err := i.sanityIter.Valid(); err != nil { diff --git a/pkg/ccl/storageccl/export.go b/pkg/ccl/storageccl/export.go index 9c2c47ecf3c4..66e7382628f6 100644 --- a/pkg/ccl/storageccl/export.go +++ b/pkg/ccl/storageccl/export.go @@ -116,9 +116,10 @@ func evalExport( // TODO(dan): Move all this iteration into cpp to avoid the cgo calls. // TODO(dan): Consider checking ctx periodically during the MVCCIterate call. iter := engineccl.NewMVCCIncrementalIterator(batch, engineccl.IterOptions{ - StartTime: args.StartTime, - EndTime: h.Timestamp, - UpperBound: args.EndKey, + StartTime: args.StartTime, + EndTime: h.Timestamp, + UpperBound: args.EndKey, + EnableTimeBoundIteratorOptimization: args.EnableTimeBoundIteratorOptimization, }) defer iter.Close() for iter.Seek(engine.MakeMVCCMetadataKey(args.Key)); ; iterFn(iter) { diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index b616efadc070..9e9e90c376dc 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -69,7 +69,7 @@ func (x ReadConsistencyType) String() string { return proto.EnumName(ReadConsistencyType_name, int32(x)) } func (ReadConsistencyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{0} } // ScanFormat is an enumeration of the available response formats for MVCCScan @@ -97,7 +97,7 @@ func (x ScanFormat) String() string { return proto.EnumName(ScanFormat_name, int32(x)) } func (ScanFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{1} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{1} } // PushTxnType determines what action to take when pushing a transaction. @@ -128,7 +128,7 @@ func (x PushTxnType) String() string { return proto.EnumName(PushTxnType_name, int32(x)) } func (PushTxnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{2} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{2} } type ExportStorageProvider int32 @@ -166,7 +166,7 @@ func (x ExportStorageProvider) String() string { return proto.EnumName(ExportStorageProvider_name, int32(x)) } func (ExportStorageProvider) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{3} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{3} } type MVCCFilter int32 @@ -189,7 +189,7 @@ func (x MVCCFilter) String() string { return proto.EnumName(MVCCFilter_name, int32(x)) } func (MVCCFilter) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{4} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{4} } type ResponseHeader_ResumeReason int32 @@ -221,7 +221,7 @@ func (x ResponseHeader_ResumeReason) String() string { return proto.EnumName(ResponseHeader_ResumeReason_name, int32(x)) } func (ResponseHeader_ResumeReason) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{2, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{2, 0} } type QueryIntentRequest_IfMissingBehavior int32 @@ -257,7 +257,7 @@ func (x QueryIntentRequest_IfMissingBehavior) String() string { return proto.EnumName(QueryIntentRequest_IfMissingBehavior_name, int32(x)) } func (QueryIntentRequest_IfMissingBehavior) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{50, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{50, 0} } // RangeInfo describes a range which executed a request. It contains @@ -273,7 +273,7 @@ func (m *RangeInfo) Reset() { *m = RangeInfo{} } func (m *RangeInfo) String() string { return proto.CompactTextString(m) } func (*RangeInfo) ProtoMessage() {} func (*RangeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{0} } func (m *RangeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -318,7 +318,7 @@ func (m *RequestHeader) Reset() { *m = RequestHeader{} } func (m *RequestHeader) String() string { return proto.CompactTextString(m) } func (*RequestHeader) ProtoMessage() {} func (*RequestHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{1} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{1} } func (m *RequestHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -378,7 +378,7 @@ func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } func (m *ResponseHeader) String() string { return proto.CompactTextString(m) } func (*ResponseHeader) ProtoMessage() {} func (*ResponseHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{2} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{2} } func (m *ResponseHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -414,7 +414,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{3} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{3} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -454,7 +454,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{4} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{4} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -499,7 +499,7 @@ func (m *PutRequest) Reset() { *m = PutRequest{} } func (m *PutRequest) String() string { return proto.CompactTextString(m) } func (*PutRequest) ProtoMessage() {} func (*PutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{5} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{5} } func (m *PutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -535,7 +535,7 @@ func (m *PutResponse) Reset() { *m = PutResponse{} } func (m *PutResponse) String() string { return proto.CompactTextString(m) } func (*PutResponse) ProtoMessage() {} func (*PutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{6} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{6} } func (m *PutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -591,7 +591,7 @@ func (m *ConditionalPutRequest) Reset() { *m = ConditionalPutRequest{} } func (m *ConditionalPutRequest) String() string { return proto.CompactTextString(m) } func (*ConditionalPutRequest) ProtoMessage() {} func (*ConditionalPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{7} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{7} } func (m *ConditionalPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -628,7 +628,7 @@ func (m *ConditionalPutResponse) Reset() { *m = ConditionalPutResponse{} func (m *ConditionalPutResponse) String() string { return proto.CompactTextString(m) } func (*ConditionalPutResponse) ProtoMessage() {} func (*ConditionalPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{8} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{8} } func (m *ConditionalPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -676,7 +676,7 @@ func (m *InitPutRequest) Reset() { *m = InitPutRequest{} } func (m *InitPutRequest) String() string { return proto.CompactTextString(m) } func (*InitPutRequest) ProtoMessage() {} func (*InitPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{9} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{9} } func (m *InitPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -712,7 +712,7 @@ func (m *InitPutResponse) Reset() { *m = InitPutResponse{} } func (m *InitPutResponse) String() string { return proto.CompactTextString(m) } func (*InitPutResponse) ProtoMessage() {} func (*InitPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{10} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{10} } func (m *InitPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -754,7 +754,7 @@ func (m *IncrementRequest) Reset() { *m = IncrementRequest{} } func (m *IncrementRequest) String() string { return proto.CompactTextString(m) } func (*IncrementRequest) ProtoMessage() {} func (*IncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{11} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{11} } func (m *IncrementRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -793,7 +793,7 @@ func (m *IncrementResponse) Reset() { *m = IncrementResponse{} } func (m *IncrementResponse) String() string { return proto.CompactTextString(m) } func (*IncrementResponse) ProtoMessage() {} func (*IncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{12} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{12} } func (m *IncrementResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -829,7 +829,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRequest) ProtoMessage() {} func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{13} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{13} } func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -865,7 +865,7 @@ func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } func (*DeleteResponse) ProtoMessage() {} func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{14} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{14} } func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -916,7 +916,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{15} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{15} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -955,7 +955,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{16} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{16} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1004,7 +1004,7 @@ func (m *ClearRangeRequest) Reset() { *m = ClearRangeRequest{} } func (m *ClearRangeRequest) String() string { return proto.CompactTextString(m) } func (*ClearRangeRequest) ProtoMessage() {} func (*ClearRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{17} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{17} } func (m *ClearRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1040,7 +1040,7 @@ func (m *ClearRangeResponse) Reset() { *m = ClearRangeResponse{} } func (m *ClearRangeResponse) String() string { return proto.CompactTextString(m) } func (*ClearRangeResponse) ProtoMessage() {} func (*ClearRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{18} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{18} } func (m *ClearRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1111,7 +1111,7 @@ func (m *ScanOptions) Reset() { *m = ScanOptions{} } func (m *ScanOptions) String() string { return proto.CompactTextString(m) } func (*ScanOptions) ProtoMessage() {} func (*ScanOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{19} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{19} } func (m *ScanOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1153,7 +1153,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{20} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{20} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1202,7 +1202,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{21} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{21} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1244,7 +1244,7 @@ func (m *ReverseScanRequest) Reset() { *m = ReverseScanRequest{} } func (m *ReverseScanRequest) String() string { return proto.CompactTextString(m) } func (*ReverseScanRequest) ProtoMessage() {} func (*ReverseScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{22} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{22} } func (m *ReverseScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1293,7 +1293,7 @@ func (m *ReverseScanResponse) Reset() { *m = ReverseScanResponse{} } func (m *ReverseScanResponse) String() string { return proto.CompactTextString(m) } func (*ReverseScanResponse) ProtoMessage() {} func (*ReverseScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{23} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{23} } func (m *ReverseScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1334,7 +1334,7 @@ func (m *CheckConsistencyRequest) Reset() { *m = CheckConsistencyRequest func (m *CheckConsistencyRequest) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyRequest) ProtoMessage() {} func (*CheckConsistencyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{24} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{24} } func (m *CheckConsistencyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1371,7 +1371,7 @@ func (m *CheckConsistencyResponse) Reset() { *m = CheckConsistencyRespon func (m *CheckConsistencyResponse) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse) ProtoMessage() {} func (*CheckConsistencyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{25} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{25} } func (m *CheckConsistencyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1421,7 +1421,7 @@ func (m *RecomputeStatsRequest) Reset() { *m = RecomputeStatsRequest{} } func (m *RecomputeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsRequest) ProtoMessage() {} func (*RecomputeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{26} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{26} } func (m *RecomputeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1459,7 +1459,7 @@ func (m *RecomputeStatsResponse) Reset() { *m = RecomputeStatsResponse{} func (m *RecomputeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsResponse) ProtoMessage() {} func (*RecomputeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{27} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{27} } func (m *RecomputeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1495,7 +1495,7 @@ func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } func (*BeginTransactionRequest) ProtoMessage() {} func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{28} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{28} } func (m *BeginTransactionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1531,7 +1531,7 @@ func (m *BeginTransactionResponse) Reset() { *m = BeginTransactionRespon func (m *BeginTransactionResponse) String() string { return proto.CompactTextString(m) } func (*BeginTransactionResponse) ProtoMessage() {} func (*BeginTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{29} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{29} } func (m *BeginTransactionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1601,7 +1601,7 @@ func (m *EndTransactionRequest) Reset() { *m = EndTransactionRequest{} } func (m *EndTransactionRequest) String() string { return proto.CompactTextString(m) } func (*EndTransactionRequest) ProtoMessage() {} func (*EndTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{30} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{30} } func (m *EndTransactionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1647,7 +1647,7 @@ func (m *EndTransactionResponse) Reset() { *m = EndTransactionResponse{} func (m *EndTransactionResponse) String() string { return proto.CompactTextString(m) } func (*EndTransactionResponse) ProtoMessage() {} func (*EndTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{31} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{31} } func (m *EndTransactionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1703,7 +1703,7 @@ func (m *AdminSplitRequest) Reset() { *m = AdminSplitRequest{} } func (m *AdminSplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminSplitRequest) ProtoMessage() {} func (*AdminSplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{32} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{32} } func (m *AdminSplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1740,7 +1740,7 @@ func (m *AdminSplitResponse) Reset() { *m = AdminSplitResponse{} } func (m *AdminSplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminSplitResponse) ProtoMessage() {} func (*AdminSplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{33} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{33} } func (m *AdminSplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1784,7 +1784,7 @@ func (m *AdminMergeRequest) Reset() { *m = AdminMergeRequest{} } func (m *AdminMergeRequest) String() string { return proto.CompactTextString(m) } func (*AdminMergeRequest) ProtoMessage() {} func (*AdminMergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{34} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{34} } func (m *AdminMergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1821,7 +1821,7 @@ func (m *AdminMergeResponse) Reset() { *m = AdminMergeResponse{} } func (m *AdminMergeResponse) String() string { return proto.CompactTextString(m) } func (*AdminMergeResponse) ProtoMessage() {} func (*AdminMergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{35} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{35} } func (m *AdminMergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1861,7 +1861,7 @@ func (m *AdminTransferLeaseRequest) Reset() { *m = AdminTransferLeaseReq func (m *AdminTransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseRequest) ProtoMessage() {} func (*AdminTransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{36} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{36} } func (m *AdminTransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1896,7 +1896,7 @@ func (m *AdminTransferLeaseResponse) Reset() { *m = AdminTransferLeaseRe func (m *AdminTransferLeaseResponse) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseResponse) ProtoMessage() {} func (*AdminTransferLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{37} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{37} } func (m *AdminTransferLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1936,7 +1936,7 @@ func (m *AdminChangeReplicasRequest) Reset() { *m = AdminChangeReplicasR func (m *AdminChangeReplicasRequest) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasRequest) ProtoMessage() {} func (*AdminChangeReplicasRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{38} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{38} } func (m *AdminChangeReplicasRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1971,7 +1971,7 @@ func (m *AdminChangeReplicasResponse) Reset() { *m = AdminChangeReplicas func (m *AdminChangeReplicasResponse) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasResponse) ProtoMessage() {} func (*AdminChangeReplicasResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{39} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{39} } func (m *AdminChangeReplicasResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2010,7 +2010,7 @@ func (m *AdminRelocateRangeRequest) Reset() { *m = AdminRelocateRangeReq func (m *AdminRelocateRangeRequest) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeRequest) ProtoMessage() {} func (*AdminRelocateRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{40} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{40} } func (m *AdminRelocateRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2045,7 +2045,7 @@ func (m *AdminRelocateRangeResponse) Reset() { *m = AdminRelocateRangeRe func (m *AdminRelocateRangeResponse) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeResponse) ProtoMessage() {} func (*AdminRelocateRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{41} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{41} } func (m *AdminRelocateRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2086,7 +2086,7 @@ func (m *HeartbeatTxnRequest) Reset() { *m = HeartbeatTxnRequest{} } func (m *HeartbeatTxnRequest) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnRequest) ProtoMessage() {} func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{42} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{42} } func (m *HeartbeatTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2125,7 +2125,7 @@ func (m *HeartbeatTxnResponse) Reset() { *m = HeartbeatTxnResponse{} } func (m *HeartbeatTxnResponse) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnResponse) ProtoMessage() {} func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{43} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{43} } func (m *HeartbeatTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2170,7 +2170,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{44} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{44} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2206,7 +2206,7 @@ func (m *GCRequest_GCKey) Reset() { *m = GCRequest_GCKey{} } func (m *GCRequest_GCKey) String() string { return proto.CompactTextString(m) } func (*GCRequest_GCKey) ProtoMessage() {} func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{44, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{44, 0} } func (m *GCRequest_GCKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2242,7 +2242,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{45} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{45} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2326,7 +2326,7 @@ func (m *PushTxnRequest) Reset() { *m = PushTxnRequest{} } func (m *PushTxnRequest) String() string { return proto.CompactTextString(m) } func (*PushTxnRequest) ProtoMessage() {} func (*PushTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{46} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{46} } func (m *PushTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2371,7 +2371,7 @@ func (m *PushTxnResponse) Reset() { *m = PushTxnResponse{} } func (m *PushTxnResponse) String() string { return proto.CompactTextString(m) } func (*PushTxnResponse) ProtoMessage() {} func (*PushTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{47} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{47} } func (m *PushTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2417,7 +2417,7 @@ func (m *QueryTxnRequest) Reset() { *m = QueryTxnRequest{} } func (m *QueryTxnRequest) String() string { return proto.CompactTextString(m) } func (*QueryTxnRequest) ProtoMessage() {} func (*QueryTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{48} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{48} } func (m *QueryTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2458,7 +2458,7 @@ func (m *QueryTxnResponse) Reset() { *m = QueryTxnResponse{} } func (m *QueryTxnResponse) String() string { return proto.CompactTextString(m) } func (*QueryTxnResponse) ProtoMessage() {} func (*QueryTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{49} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{49} } func (m *QueryTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2520,7 @@ func (m *QueryIntentRequest) Reset() { *m = QueryIntentRequest{} } func (m *QueryIntentRequest) String() string { return proto.CompactTextString(m) } func (*QueryIntentRequest) ProtoMessage() {} func (*QueryIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{50} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{50} } func (m *QueryIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2558,7 +2558,7 @@ func (m *QueryIntentResponse) Reset() { *m = QueryIntentResponse{} } func (m *QueryIntentResponse) String() string { return proto.CompactTextString(m) } func (*QueryIntentResponse) ProtoMessage() {} func (*QueryIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{51} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{51} } func (m *QueryIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2604,7 +2604,7 @@ func (m *ResolveIntentRequest) Reset() { *m = ResolveIntentRequest{} } func (m *ResolveIntentRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRequest) ProtoMessage() {} func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{52} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{52} } func (m *ResolveIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2641,7 +2641,7 @@ func (m *ResolveIntentResponse) Reset() { *m = ResolveIntentResponse{} } func (m *ResolveIntentResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentResponse) ProtoMessage() {} func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{53} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{53} } func (m *ResolveIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2691,7 +2691,7 @@ func (m *ResolveIntentRangeRequest) Reset() { *m = ResolveIntentRangeReq func (m *ResolveIntentRangeRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeRequest) ProtoMessage() {} func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{54} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{54} } func (m *ResolveIntentRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2728,7 +2728,7 @@ func (m *ResolveIntentRangeResponse) Reset() { *m = ResolveIntentRangeRe func (m *ResolveIntentRangeResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeResponse) ProtoMessage() {} func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{55} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{55} } func (m *ResolveIntentRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2767,7 +2767,7 @@ func (m *MergeRequest) Reset() { *m = MergeRequest{} } func (m *MergeRequest) String() string { return proto.CompactTextString(m) } func (*MergeRequest) ProtoMessage() {} func (*MergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{56} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{56} } func (m *MergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2803,7 +2803,7 @@ func (m *MergeResponse) Reset() { *m = MergeResponse{} } func (m *MergeResponse) String() string { return proto.CompactTextString(m) } func (*MergeResponse) ProtoMessage() {} func (*MergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{57} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{57} } func (m *MergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2850,7 +2850,7 @@ func (m *TruncateLogRequest) Reset() { *m = TruncateLogRequest{} } func (m *TruncateLogRequest) String() string { return proto.CompactTextString(m) } func (*TruncateLogRequest) ProtoMessage() {} func (*TruncateLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{58} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{58} } func (m *TruncateLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2886,7 +2886,7 @@ func (m *TruncateLogResponse) Reset() { *m = TruncateLogResponse{} } func (m *TruncateLogResponse) String() string { return proto.CompactTextString(m) } func (*TruncateLogResponse) ProtoMessage() {} func (*TruncateLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{59} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{59} } func (m *TruncateLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2932,7 +2932,7 @@ func (m *RequestLeaseRequest) Reset() { *m = RequestLeaseRequest{} } func (m *RequestLeaseRequest) String() string { return proto.CompactTextString(m) } func (*RequestLeaseRequest) ProtoMessage() {} func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{60} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{60} } func (m *RequestLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2983,7 +2983,7 @@ func (m *TransferLeaseRequest) Reset() { *m = TransferLeaseRequest{} } func (m *TransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*TransferLeaseRequest) ProtoMessage() {} func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{61} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{61} } func (m *TransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3022,7 +3022,7 @@ func (m *LeaseInfoRequest) Reset() { *m = LeaseInfoRequest{} } func (m *LeaseInfoRequest) String() string { return proto.CompactTextString(m) } func (*LeaseInfoRequest) ProtoMessage() {} func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{62} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{62} } func (m *LeaseInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3061,7 +3061,7 @@ func (m *LeaseInfoResponse) Reset() { *m = LeaseInfoResponse{} } func (m *LeaseInfoResponse) String() string { return proto.CompactTextString(m) } func (*LeaseInfoResponse) ProtoMessage() {} func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{63} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{63} } func (m *LeaseInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3098,7 +3098,7 @@ func (m *RequestLeaseResponse) Reset() { *m = RequestLeaseResponse{} } func (m *RequestLeaseResponse) String() string { return proto.CompactTextString(m) } func (*RequestLeaseResponse) ProtoMessage() {} func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{64} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{64} } func (m *RequestLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3143,7 +3143,7 @@ func (m *ComputeChecksumRequest) Reset() { *m = ComputeChecksumRequest{} func (m *ComputeChecksumRequest) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumRequest) ProtoMessage() {} func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{65} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{65} } func (m *ComputeChecksumRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3182,7 +3182,7 @@ func (m *ComputeChecksumResponse) Reset() { *m = ComputeChecksumResponse func (m *ComputeChecksumResponse) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumResponse) ProtoMessage() {} func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{66} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{66} } func (m *ComputeChecksumResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3223,7 +3223,7 @@ func (m *ExportStorage) Reset() { *m = ExportStorage{} } func (m *ExportStorage) String() string { return proto.CompactTextString(m) } func (*ExportStorage) ProtoMessage() {} func (*ExportStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67} } func (m *ExportStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3259,7 +3259,7 @@ func (m *ExportStorage_LocalFilePath) Reset() { *m = ExportStorage_Local func (m *ExportStorage_LocalFilePath) String() string { return proto.CompactTextString(m) } func (*ExportStorage_LocalFilePath) ProtoMessage() {} func (*ExportStorage_LocalFilePath) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 0} } func (m *ExportStorage_LocalFilePath) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3294,7 +3294,7 @@ func (m *ExportStorage_Http) Reset() { *m = ExportStorage_Http{} } func (m *ExportStorage_Http) String() string { return proto.CompactTextString(m) } func (*ExportStorage_Http) ProtoMessage() {} func (*ExportStorage_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 1} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 1} } func (m *ExportStorage_Http) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3335,7 +3335,7 @@ func (m *ExportStorage_S3) Reset() { *m = ExportStorage_S3{} } func (m *ExportStorage_S3) String() string { return proto.CompactTextString(m) } func (*ExportStorage_S3) ProtoMessage() {} func (*ExportStorage_S3) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 2} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 2} } func (m *ExportStorage_S3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3376,7 +3376,7 @@ func (m *ExportStorage_GCS) Reset() { *m = ExportStorage_GCS{} } func (m *ExportStorage_GCS) String() string { return proto.CompactTextString(m) } func (*ExportStorage_GCS) ProtoMessage() {} func (*ExportStorage_GCS) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 3} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 3} } func (m *ExportStorage_GCS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3414,7 +3414,7 @@ func (m *ExportStorage_Azure) Reset() { *m = ExportStorage_Azure{} } func (m *ExportStorage_Azure) String() string { return proto.CompactTextString(m) } func (*ExportStorage_Azure) ProtoMessage() {} func (*ExportStorage_Azure) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 4} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 4} } func (m *ExportStorage_Azure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3455,7 +3455,7 @@ func (m *ExportStorage_Workload) Reset() { *m = ExportStorage_Workload{} func (m *ExportStorage_Workload) String() string { return proto.CompactTextString(m) } func (*ExportStorage_Workload) ProtoMessage() {} func (*ExportStorage_Workload) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{67, 5} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{67, 5} } func (m *ExportStorage_Workload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3497,7 +3497,7 @@ func (m *WriteBatchRequest) Reset() { *m = WriteBatchRequest{} } func (m *WriteBatchRequest) String() string { return proto.CompactTextString(m) } func (*WriteBatchRequest) ProtoMessage() {} func (*WriteBatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{68} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{68} } func (m *WriteBatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3533,7 +3533,7 @@ func (m *WriteBatchResponse) Reset() { *m = WriteBatchResponse{} } func (m *WriteBatchResponse) String() string { return proto.CompactTextString(m) } func (*WriteBatchResponse) ProtoMessage() {} func (*WriteBatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{69} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{69} } func (m *WriteBatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3571,16 +3571,29 @@ type ExportRequest struct { // `Sha512` field empty in the response. During a rolling upgrade to 2.1, it // may still be set if the request is served by an old node, but since the // caller has declare they're not going to use it, that's okay. - OmitChecksum bool `protobuf:"varint,6,opt,name=omit_checksum,json=omitChecksum,proto3" json:"omit_checksum,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + OmitChecksum bool `protobuf:"varint,6,opt,name=omit_checksum,json=omitChecksum,proto3" json:"omit_checksum,omitempty"` + // EnableTimeBoundIteratorOptimization, if true, enables a performance + // optimization that allows us to entirely skip over sstables in RocksDB that + // don't have data relevant to the time bounds in this request. + // + // This can have a dramatic impact on performance, but we've seen a number of + // extremely subtle and hard to detect correctness issues with this (see + // #28358 #34819). As a result, we've decided to skip the optimization + // everywhere that it isn't absolutely necessary for the feature to work + // (leaving one place: poller-based changefeeds, which are being phased out + // anyway). This will both give increased confidence in correctness as well as + // eliminate any need to investigate time-bound iterators when/if someone hits + // a correctness bug. + EnableTimeBoundIteratorOptimization bool `protobuf:"varint,7,opt,name=enable_time_bound_iterator_optimization,json=enableTimeBoundIteratorOptimization,proto3" json:"enable_time_bound_iterator_optimization,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} func (*ExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{70} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{70} } func (m *ExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3618,7 +3631,7 @@ func (m *BulkOpSummary) Reset() { *m = BulkOpSummary{} } func (m *BulkOpSummary) String() string { return proto.CompactTextString(m) } func (*BulkOpSummary) ProtoMessage() {} func (*BulkOpSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{71} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{71} } func (m *BulkOpSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3656,7 +3669,7 @@ func (m *ExportResponse) Reset() { *m = ExportResponse{} } func (m *ExportResponse) String() string { return proto.CompactTextString(m) } func (*ExportResponse) ProtoMessage() {} func (*ExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{72} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{72} } func (m *ExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3697,7 +3710,7 @@ func (m *ExportResponse_File) Reset() { *m = ExportResponse_File{} } func (m *ExportResponse_File) String() string { return proto.CompactTextString(m) } func (*ExportResponse_File) ProtoMessage() {} func (*ExportResponse_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{72, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{72, 0} } func (m *ExportResponse_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3749,7 +3762,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{73} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{73} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3786,7 +3799,7 @@ func (m *ImportRequest_File) Reset() { *m = ImportRequest_File{} } func (m *ImportRequest_File) String() string { return proto.CompactTextString(m) } func (*ImportRequest_File) ProtoMessage() {} func (*ImportRequest_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{73, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{73, 0} } func (m *ImportRequest_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3824,7 +3837,7 @@ func (m *ImportRequest_TableRekey) Reset() { *m = ImportRequest_TableRek func (m *ImportRequest_TableRekey) String() string { return proto.CompactTextString(m) } func (*ImportRequest_TableRekey) ProtoMessage() {} func (*ImportRequest_TableRekey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{73, 1} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{73, 1} } func (m *ImportRequest_TableRekey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3861,7 +3874,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{74} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{74} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3901,7 +3914,7 @@ func (m *AdminScatterRequest) Reset() { *m = AdminScatterRequest{} } func (m *AdminScatterRequest) String() string { return proto.CompactTextString(m) } func (*AdminScatterRequest) ProtoMessage() {} func (*AdminScatterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{75} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{75} } func (m *AdminScatterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3938,7 +3951,7 @@ func (m *AdminScatterResponse) Reset() { *m = AdminScatterResponse{} } func (m *AdminScatterResponse) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse) ProtoMessage() {} func (*AdminScatterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{76} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{76} } func (m *AdminScatterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3973,7 +3986,7 @@ func (m *AdminScatterResponse_Range) Reset() { *m = AdminScatterResponse func (m *AdminScatterResponse_Range) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse_Range) ProtoMessage() {} func (*AdminScatterResponse_Range) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{76, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{76, 0} } func (m *AdminScatterResponse_Range) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4011,7 +4024,7 @@ func (m *AddSSTableRequest) Reset() { *m = AddSSTableRequest{} } func (m *AddSSTableRequest) String() string { return proto.CompactTextString(m) } func (*AddSSTableRequest) ProtoMessage() {} func (*AddSSTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{77} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{77} } func (m *AddSSTableRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4047,7 +4060,7 @@ func (m *AddSSTableResponse) Reset() { *m = AddSSTableResponse{} } func (m *AddSSTableResponse) String() string { return proto.CompactTextString(m) } func (*AddSSTableResponse) ProtoMessage() {} func (*AddSSTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{78} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{78} } func (m *AddSSTableResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4093,7 +4106,7 @@ func (m *RefreshRequest) Reset() { *m = RefreshRequest{} } func (m *RefreshRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRequest) ProtoMessage() {} func (*RefreshRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{79} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{79} } func (m *RefreshRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4129,7 +4142,7 @@ func (m *RefreshResponse) Reset() { *m = RefreshResponse{} } func (m *RefreshResponse) String() string { return proto.CompactTextString(m) } func (*RefreshResponse) ProtoMessage() {} func (*RefreshResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{80} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{80} } func (m *RefreshResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4171,7 +4184,7 @@ func (m *RefreshRangeRequest) Reset() { *m = RefreshRangeRequest{} } func (m *RefreshRangeRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRangeRequest) ProtoMessage() {} func (*RefreshRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{81} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{81} } func (m *RefreshRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4207,7 +4220,7 @@ func (m *RefreshRangeResponse) Reset() { *m = RefreshRangeResponse{} } func (m *RefreshRangeResponse) String() string { return proto.CompactTextString(m) } func (*RefreshRangeResponse) ProtoMessage() {} func (*RefreshRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{82} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{82} } func (m *RefreshRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4255,7 +4268,7 @@ func (m *SubsumeRequest) Reset() { *m = SubsumeRequest{} } func (m *SubsumeRequest) String() string { return proto.CompactTextString(m) } func (*SubsumeRequest) ProtoMessage() {} func (*SubsumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{83} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{83} } func (m *SubsumeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4302,7 +4315,7 @@ func (m *SubsumeResponse) Reset() { *m = SubsumeResponse{} } func (m *SubsumeResponse) String() string { return proto.CompactTextString(m) } func (*SubsumeResponse) ProtoMessage() {} func (*SubsumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{84} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{84} } func (m *SubsumeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4339,7 +4352,7 @@ func (m *RangeStatsRequest) Reset() { *m = RangeStatsRequest{} } func (m *RangeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RangeStatsRequest) ProtoMessage() {} func (*RangeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{85} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{85} } func (m *RangeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4380,7 +4393,7 @@ func (m *RangeStatsResponse) Reset() { *m = RangeStatsResponse{} } func (m *RangeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RangeStatsResponse) ProtoMessage() {} func (*RangeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{86} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{86} } func (m *RangeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4462,7 +4475,7 @@ func (m *RequestUnion) Reset() { *m = RequestUnion{} } func (m *RequestUnion) String() string { return proto.CompactTextString(m) } func (*RequestUnion) ProtoMessage() {} func (*RequestUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{87} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{87} } func (m *RequestUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5821,7 +5834,7 @@ func (m *ResponseUnion) Reset() { *m = ResponseUnion{} } func (m *ResponseUnion) String() string { return proto.CompactTextString(m) } func (*ResponseUnion) ProtoMessage() {} func (*ResponseUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{88} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{88} } func (m *ResponseUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7170,7 +7183,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{89} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{89} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7208,7 +7221,7 @@ type BatchRequest struct { func (m *BatchRequest) Reset() { *m = BatchRequest{} } func (*BatchRequest) ProtoMessage() {} func (*BatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{90} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{90} } func (m *BatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7247,7 +7260,7 @@ type BatchResponse struct { func (m *BatchResponse) Reset() { *m = BatchResponse{} } func (*BatchResponse) ProtoMessage() {} func (*BatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{91} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{91} } func (m *BatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7308,7 +7321,7 @@ func (m *BatchResponse_Header) Reset() { *m = BatchResponse_Header{} } func (m *BatchResponse_Header) String() string { return proto.CompactTextString(m) } func (*BatchResponse_Header) ProtoMessage() {} func (*BatchResponse_Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{91, 0} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{91, 0} } func (m *BatchResponse_Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7346,7 +7359,7 @@ func (m *RangeFeedRequest) Reset() { *m = RangeFeedRequest{} } func (m *RangeFeedRequest) String() string { return proto.CompactTextString(m) } func (*RangeFeedRequest) ProtoMessage() {} func (*RangeFeedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{92} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{92} } func (m *RangeFeedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7384,7 +7397,7 @@ func (m *RangeFeedValue) Reset() { *m = RangeFeedValue{} } func (m *RangeFeedValue) String() string { return proto.CompactTextString(m) } func (*RangeFeedValue) ProtoMessage() {} func (*RangeFeedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{93} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{93} } func (m *RangeFeedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7424,7 +7437,7 @@ func (m *RangeFeedCheckpoint) Reset() { *m = RangeFeedCheckpoint{} } func (m *RangeFeedCheckpoint) String() string { return proto.CompactTextString(m) } func (*RangeFeedCheckpoint) ProtoMessage() {} func (*RangeFeedCheckpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{94} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{94} } func (m *RangeFeedCheckpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7463,7 +7476,7 @@ func (m *RangeFeedError) Reset() { *m = RangeFeedError{} } func (m *RangeFeedError) String() string { return proto.CompactTextString(m) } func (*RangeFeedError) ProtoMessage() {} func (*RangeFeedError) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{95} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{95} } func (m *RangeFeedError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7502,7 +7515,7 @@ func (m *RangeFeedEvent) Reset() { *m = RangeFeedEvent{} } func (m *RangeFeedEvent) String() string { return proto.CompactTextString(m) } func (*RangeFeedEvent) ProtoMessage() {} func (*RangeFeedEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_api_a3d9ae2b746aa069, []int{96} + return fileDescriptor_api_7dbf7fa33bd372a3, []int{96} } func (m *RangeFeedEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9026,6 +9039,9 @@ func (this *ExportRequest) Equal(that interface{}) bool { if this.OmitChecksum != that1.OmitChecksum { return false } + if this.EnableTimeBoundIteratorOptimization != that1.EnableTimeBoundIteratorOptimization { + return false + } return true } func (this *ImportRequest) Equal(that interface{}) bool { @@ -12430,6 +12446,16 @@ func (m *ExportRequest) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.EnableTimeBoundIteratorOptimization { + dAtA[i] = 0x38 + i++ + if m.EnableTimeBoundIteratorOptimization { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } return i, nil } @@ -16174,6 +16200,9 @@ func (m *ExportRequest) Size() (n int) { if m.OmitChecksum { n += 2 } + if m.EnableTimeBoundIteratorOptimization { + n += 2 + } return n } @@ -27122,6 +27151,26 @@ func (m *ExportRequest) Unmarshal(dAtA []byte) error { } } m.OmitChecksum = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EnableTimeBoundIteratorOptimization", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.EnableTimeBoundIteratorOptimization = bool(v != 0) default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -33584,17 +33633,17 @@ var ( ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_a3d9ae2b746aa069) } +func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_7dbf7fa33bd372a3) } -var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ - // 6252 bytes of a gzipped FileDescriptorProto +var fileDescriptor_api_7dbf7fa33bd372a3 = []byte{ + // 6294 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3d, 0x4b, 0x6c, 0x23, 0xc9, 0x75, 0x6a, 0x92, 0x92, 0xc8, 0x47, 0x91, 0x6a, 0x95, 0xe6, 0xc3, 0xd1, 0xcc, 0x8e, 0x34, 0x9c, 0xef, 0xce, 0xee, 0x6a, 0x3c, 0x33, 0xde, 0xac, 0xb3, 0x6b, 0xaf, 0x2d, 0x52, 0x9a, 0x21, 0x47, 0xa3, 0xcf, 0x16, 0xa9, 0x59, 0xcf, 0x3a, 0x9b, 0x76, 0xab, 0xbb, 0x44, 0xb5, 0x87, 0xec, 0xe6, - 0x76, 0x37, 0x47, 0xd2, 0x00, 0x41, 0x02, 0xe7, 0xe0, 0xc0, 0x30, 0x8c, 0x20, 0x09, 0x82, 0xc0, + 0x76, 0x37, 0x47, 0xd2, 0x00, 0x41, 0x82, 0xe4, 0xe0, 0xc0, 0x30, 0x8c, 0x20, 0x09, 0x82, 0xc0, 0xf9, 0x19, 0xf0, 0x21, 0x40, 0x82, 0x18, 0x31, 0x60, 0x20, 0x40, 0x80, 0xc4, 0x97, 0x1c, 0x16, - 0x46, 0x0e, 0x4e, 0x80, 0x04, 0x41, 0x0e, 0x42, 0xa2, 0x1c, 0x6c, 0xe4, 0x92, 0x43, 0x0e, 0x01, + 0x46, 0x0e, 0x4e, 0x80, 0x04, 0x46, 0x0e, 0x42, 0xa2, 0x1c, 0x6c, 0xe4, 0x92, 0x43, 0x0e, 0x01, 0xf6, 0x90, 0x04, 0xf5, 0xe9, 0x0f, 0xc9, 0xe6, 0x67, 0x66, 0x7b, 0x91, 0x0d, 0x72, 0x12, 0xeb, 0x55, 0xbd, 0xd7, 0x55, 0xef, 0xbd, 0x7a, 0xf5, 0x5e, 0xd5, 0xab, 0x12, 0xcc, 0xd9, 0x96, 0xaa, 0xed, 0xb7, 0x77, 0x6f, 0xa9, 0x6d, 0x63, 0xb9, 0x6d, 0x5b, 0xae, 0x85, 0xe6, 0x34, 0x4b, 0x7b, @@ -33613,8 +33662,8 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0x37, 0x66, 0x4a, 0xd3, 0x1f, 0x1d, 0x2f, 0x26, 0xd7, 0xc9, 0x11, 0xa6, 0x30, 0xb4, 0x04, 0xd3, 0xc4, 0xd4, 0x15, 0x5a, 0x9d, 0xea, 0xae, 0x9e, 0x22, 0xa6, 0xbe, 0x4e, 0x8e, 0xd0, 0x02, 0xa4, 0x1d, 0x4a, 0xcd, 0xd4, 0x48, 0x61, 0x72, 0x49, 0xba, 0x31, 0x89, 0xfd, 0xf2, 0x9b, 0xa9, 0x9f, - 0x7d, 0x77, 0x51, 0x7a, 0x90, 0x4a, 0x4b, 0x72, 0xe2, 0x41, 0x2a, 0x9d, 0x90, 0x93, 0xc5, 0x6f, - 0x25, 0x21, 0x8f, 0x89, 0xd3, 0xb6, 0x4c, 0x87, 0x88, 0xaf, 0x7f, 0x06, 0x92, 0xee, 0xa1, 0xc9, + 0x7d, 0x67, 0x51, 0x7a, 0x90, 0x4a, 0x4b, 0x72, 0xe2, 0x41, 0x2a, 0x9d, 0x90, 0x93, 0xc5, 0x6f, + 0x26, 0x21, 0x8f, 0x89, 0xd3, 0xb6, 0x4c, 0x87, 0x88, 0xaf, 0x7f, 0x06, 0x92, 0xee, 0xa1, 0xc9, 0xbe, 0x9e, 0xbd, 0x73, 0x31, 0x62, 0x08, 0x75, 0x5b, 0x35, 0x1d, 0x55, 0x73, 0x0d, 0xcb, 0xc4, 0xb4, 0x29, 0xfa, 0x1c, 0x64, 0x6d, 0xe2, 0x74, 0x5a, 0x84, 0x31, 0x9b, 0x75, 0x2c, 0x7b, 0xe7, 0x6c, 0x04, 0x66, 0xad, 0xad, 0x9a, 0x18, 0x78, 0x5b, 0xfa, 0x1b, 0x9d, 0x83, 0xb4, 0xd9, 0x69, @@ -33626,27 +33675,27 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0x41, 0x1e, 0xaf, 0xd5, 0x76, 0x36, 0xd6, 0x94, 0x9d, 0xcd, 0xf5, 0xcd, 0xad, 0x77, 0x37, 0xe5, 0x09, 0x74, 0x0a, 0x64, 0x01, 0x5b, 0x5f, 0x7b, 0xac, 0x3c, 0xac, 0x6e, 0x54, 0xeb, 0xb2, 0x84, 0xce, 0xc1, 0x69, 0x01, 0xc5, 0x2b, 0x9b, 0xf7, 0xd7, 0x94, 0xd2, 0xd6, 0xce, 0xe6, 0xea, 0x0a, - 0x7e, 0x2c, 0x27, 0x16, 0x52, 0xbf, 0xf6, 0xbd, 0x8b, 0x13, 0xc5, 0x47, 0x00, 0xf7, 0x89, 0x2b, + 0x7e, 0x2c, 0x27, 0x16, 0x52, 0xbf, 0xfe, 0xdd, 0x8b, 0x13, 0xc5, 0x47, 0x00, 0xf7, 0x89, 0x2b, 0xb4, 0x01, 0x95, 0x60, 0x6a, 0x9f, 0xf5, 0x46, 0xa8, 0xe3, 0x52, 0x64, 0xb7, 0x43, 0x9a, 0x53, - 0x4a, 0x53, 0x0e, 0xfc, 0xe4, 0x78, 0x51, 0xc2, 0x02, 0x93, 0x8b, 0xbc, 0xf8, 0x23, 0x09, 0xb2, + 0x4a, 0x53, 0x0e, 0xfc, 0xf8, 0x78, 0x51, 0xc2, 0x02, 0x93, 0x8b, 0xbc, 0xf8, 0x43, 0x09, 0xb2, 0x8c, 0x30, 0x1f, 0x23, 0x2a, 0xf7, 0x50, 0xbe, 0x34, 0x92, 0x21, 0xfd, 0xa4, 0xd1, 0x32, 0x4c, 0x3e, 0x55, 0x9b, 0x9d, 0x61, 0xda, 0xfe, 0x88, 0xd6, 0x63, 0xde, 0x0c, 0xbd, 0x05, 0x33, 0x86, - 0xe9, 0x12, 0xd3, 0x55, 0x38, 0x5a, 0x72, 0x04, 0x5a, 0x96, 0xb7, 0x66, 0x85, 0xe2, 0x5f, 0x48, + 0xe9, 0x12, 0xd3, 0x55, 0x38, 0x5a, 0x72, 0x04, 0x5a, 0x96, 0xb7, 0x66, 0x85, 0xe2, 0x5f, 0x4a, 0x00, 0xdb, 0x9d, 0x38, 0x59, 0x43, 0x67, 0xeb, 0x58, 0xfd, 0xf7, 0x66, 0x2b, 0x1f, 0xc5, 0x19, 0x98, 0x32, 0xcc, 0xa6, 0x61, 0xf2, 0xfe, 0xa7, 0xb1, 0x28, 0xa1, 0x53, 0x30, 0xb9, 0xdb, 0x34, 0x4c, 0x9d, 0xa9, 0x7f, 0x1a, 0xf3, 0x82, 0x60, 0x3f, 0x86, 0x2c, 0xeb, 0x7b, 0x8c, 0xdc, 0x2f, - 0x7e, 0x27, 0x01, 0xa7, 0xcb, 0x96, 0xa9, 0x1b, 0x74, 0x1e, 0xaa, 0xcd, 0x4f, 0x05, 0x6f, 0x5e, + 0x7e, 0x3b, 0x01, 0xa7, 0xcb, 0x96, 0xa9, 0x1b, 0x74, 0x1e, 0xaa, 0xcd, 0x4f, 0x05, 0x6f, 0x5e, 0x87, 0x0c, 0x39, 0x6c, 0x8f, 0x29, 0xde, 0x34, 0x39, 0x6c, 0xb3, 0x5f, 0xd1, 0xac, 0x43, 0x9f, 0x85, 0xb3, 0x6a, 0xb3, 0x69, 0x1d, 0x28, 0xc6, 0x9e, 0xa2, 0x5b, 0xc4, 0x51, 0x4c, 0xcb, 0x55, 0xc8, 0xa1, 0xe1, 0xb8, 0xcc, 0x54, 0xa4, 0xf1, 0x3c, 0xab, 0xae, 0xee, 0xad, 0x5a, 0xc4, 0xd9, - 0xb4, 0xdc, 0x35, 0x5a, 0x25, 0x18, 0xfe, 0x3e, 0x9c, 0xe9, 0xe5, 0x4d, 0x9c, 0xbc, 0xff, 0x3b, + 0xb4, 0xdc, 0x35, 0x5a, 0x25, 0x18, 0xfe, 0x3e, 0x9c, 0xe9, 0xe5, 0x4d, 0x9c, 0xbc, 0xff, 0x7b, 0x09, 0xf2, 0x55, 0xd3, 0x70, 0x3f, 0x15, 0x4c, 0xf7, 0xb9, 0x97, 0x0c, 0x73, 0xef, 0x26, 0xc8, 0x7b, 0xaa, 0xd1, 0xdc, 0x32, 0xeb, 0x56, 0x6b, 0xd7, 0x71, 0x2d, 0x93, 0x38, 0x82, 0xbd, 0x7d, 0x70, 0xc1, 0xb3, 0x47, 0x30, 0xeb, 0x8f, 0x29, 0x4e, 0x66, 0x3d, 0x03, 0xb9, 0x6a, 0x6a, 0x36, 0x69, 0x11, 0x33, 0x56, 0x6e, 0x5d, 0x80, 0x8c, 0xe1, 0xd1, 0x65, 0x1c, 0x4b, 0xe2, 0x00, 0x20, 0xc6, 0xd4, 0x81, 0xb9, 0xd0, 0xb7, 0xe3, 0x34, 0x7e, 0xe7, 0x21, 0x63, 0x92, 0x03, 0x25, 0x90, 0x57, 0x12, 0xa7, 0x4d, 0x72, 0xc0, 0x8d, 0xd5, 0x63, 0xc8, 0xad, 0x92, 0x26, 0x71, 0x49, 0xfc, - 0x96, 0x7c, 0x07, 0xf2, 0x1e, 0xe9, 0x38, 0x85, 0xf4, 0xfb, 0x12, 0x20, 0x41, 0x97, 0xae, 0x9e, + 0x96, 0x7c, 0x07, 0xf2, 0x1e, 0xe9, 0x38, 0x85, 0xf4, 0x07, 0x12, 0x20, 0x41, 0x97, 0xae, 0x9e, 0x71, 0xca, 0x69, 0x91, 0x7a, 0x07, 0x6e, 0xc7, 0x36, 0xf9, 0x32, 0xcf, 0xb5, 0x14, 0x38, 0x88, 0xad, 0xf4, 0x81, 0x45, 0x4d, 0x85, 0x2d, 0xaa, 0xef, 0xad, 0x50, 0x3f, 0xe5, 0x00, 0xe6, 0xbb, 0xba, 0x17, 0xaf, 0x28, 0x53, 0xac, 0x67, 0x89, 0xa5, 0x64, 0xd8, 0xa1, 0x62, 0xc0, 0xe2, 0xfb, @@ -33654,25 +33703,25 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0x52, 0x03, 0xb2, 0x35, 0x4d, 0x35, 0xb7, 0xda, 0xd4, 0x08, 0x3a, 0xe8, 0x2e, 0x9c, 0x71, 0x5c, 0xab, 0xad, 0xa8, 0xae, 0xc2, 0xfd, 0xaa, 0x5d, 0xab, 0x63, 0xea, 0xaa, 0x7d, 0xc4, 0xbe, 0x91, 0xc6, 0xf3, 0xb4, 0x76, 0xc5, 0x65, 0x1d, 0x29, 0x89, 0x2a, 0x2a, 0xbb, 0x96, 0x61, 0x2a, 0xd4, - 0xfd, 0x69, 0xba, 0x8e, 0xd0, 0x73, 0x68, 0x19, 0x26, 0xe6, 0x10, 0x31, 0x8a, 0xef, 0x49, 0xfc, + 0xfd, 0x69, 0xba, 0x8e, 0xd0, 0x73, 0x68, 0x19, 0x26, 0xe6, 0x10, 0x31, 0x8a, 0xef, 0x4a, 0xfc, 0x5b, 0x71, 0xaa, 0xcd, 0xdb, 0x90, 0x75, 0x34, 0xd5, 0x54, 0xf6, 0x2c, 0xbb, 0xa5, 0xba, 0x4c, 0x35, 0xf2, 0x77, 0x5e, 0x8a, 0x72, 0x2a, 0x35, 0xd5, 0xbc, 0xc7, 0x1a, 0x61, 0x70, 0xfc, 0xdf, 0x61, 0xed, 0x79, 0x90, 0x4a, 0x27, 0xe5, 0x54, 0xf1, 0x3f, 0x25, 0x98, 0xe1, 0xbd, 0x8c, 0x53, 0x7b, 0x5e, 0x87, 0x94, 0x6d, 0x1d, 0x70, 0xed, 0xc9, 0xde, 0x39, 0x1f, 0x41, 0x62, 0x9d, 0x1c, 0x85, 0xcd, 0x36, 0x6b, 0x8e, 0x4a, 0x20, 0xdc, 0x1b, 0x85, 0x61, 0x27, 0xc7, 0xc5, 0x06, 0x8e, 0x85, 0x29, 0x8d, 0xeb, 0x30, 0xbb, 0xab, 0xba, 0xda, 0x3e, 0x95, 0x0f, 0xeb, 0x24, 0x35, 0xf1, - 0xc9, 0x1b, 0x33, 0x38, 0xcf, 0xc0, 0x5e, 0xd7, 0x9d, 0xe2, 0x1f, 0x4b, 0x80, 0x30, 0x79, 0x4a, + 0xc9, 0x1b, 0x33, 0x38, 0xcf, 0xc0, 0x5e, 0xd7, 0x9d, 0xe2, 0x9f, 0x48, 0x80, 0x30, 0x79, 0x4a, 0x6c, 0x87, 0x7c, 0xfa, 0xc5, 0xf4, 0x5f, 0x12, 0xcc, 0x77, 0x75, 0xf6, 0xff, 0x9b, 0xb4, 0x7e, 0x45, 0x82, 0xb3, 0xe5, 0x7d, 0xa2, 0x3d, 0x29, 0x5b, 0xa6, 0x63, 0x38, 0x2e, 0x31, 0xb5, 0xa3, 0x38, 0x45, 0x76, 0x1e, 0x32, 0x07, 0x86, 0xbb, 0xaf, 0xe8, 0xc6, 0xde, 0x1e, 0x9b, 0xd2, 0x69, 0x9c, 0xa6, 0x80, 0x55, 0x63, 0x6f, 0x4f, 0x4c, 0x68, 0x05, 0x0a, 0xfd, 0x3d, 0x88, 0xd7, 0x29, 0x38, 0x8d, 0x89, 0x66, 0xb5, 0xda, 0x1d, 0x97, 0xd4, 0x5c, 0xd5, 0x75, 0xe2, 0x1c, 0xe0, 0x59, 0x98, 0xd6, 0xed, 0x23, 0xc5, 0xee, 0x98, 0x62, 0x78, 0x53, 0xba, 0x7d, 0x84, 0x3b, 0xa6, 0x18, - 0xdc, 0x9f, 0x4b, 0x70, 0xa6, 0xf7, 0xe3, 0x71, 0xea, 0xd8, 0x97, 0x21, 0xab, 0xea, 0x3a, 0xd1, + 0xdc, 0x5f, 0x48, 0x70, 0xa6, 0xf7, 0xe3, 0x71, 0xea, 0xd8, 0x97, 0x21, 0xab, 0xea, 0x3a, 0xd1, 0x15, 0x9d, 0x34, 0x5d, 0x55, 0x38, 0x73, 0xb7, 0x43, 0x94, 0xc4, 0x3e, 0xc7, 0x32, 0xdf, 0xe0, 0x58, 0xf6, 0xf6, 0x39, 0x96, 0x37, 0x1e, 0x95, 0xcb, 0xac, 0x3f, 0xab, 0x14, 0xd1, 0x53, 0x21, 0x46, 0x8b, 0x41, 0x8a, 0x1a, 0x9c, 0x2d, 0x91, 0x86, 0x61, 0x86, 0x23, 0xf0, 0xd8, 0x97, 0x24, - 0x05, 0x0a, 0xfd, 0x1f, 0x89, 0x53, 0xf6, 0x7f, 0x9b, 0x84, 0xd3, 0x6b, 0xa6, 0xfe, 0xc9, 0x0c, + 0x05, 0x0a, 0xfd, 0x1f, 0x89, 0x53, 0xf6, 0x7f, 0x97, 0x84, 0xd3, 0x6b, 0xa6, 0xfe, 0xc9, 0x0c, 0x82, 0x7a, 0x13, 0x9a, 0xd5, 0x6a, 0x19, 0xae, 0x27, 0x7b, 0x5e, 0x42, 0x3f, 0x0f, 0x69, 0x9d, 0xa8, 0xba, 0x1f, 0xb9, 0x65, 0xbb, 0xac, 0x54, 0xc7, 0x35, 0x9a, 0xcb, 0xfb, 0x4d, 0x6d, 0xb9, 0xee, 0xed, 0x2a, 0x61, 0xbf, 0x39, 0xfa, 0x2a, 0x9c, 0xa5, 0xf3, 0xd8, 0x36, 0xd5, 0xa6, 0xc2, @@ -33683,12 +33732,12 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0xca, 0x9f, 0x1c, 0x2f, 0x02, 0xe6, 0xe0, 0xdb, 0xdb, 0x65, 0xea, 0x75, 0xf1, 0xdf, 0x6d, 0x0d, 0xdd, 0x00, 0xd9, 0xb4, 0x14, 0x9b, 0xec, 0xd9, 0xc4, 0xd9, 0x17, 0x9f, 0x4d, 0x33, 0x8e, 0xe5, 0x4d, 0x0b, 0x73, 0x30, 0x27, 0x7d, 0x06, 0xa6, 0xda, 0x96, 0xe1, 0x58, 0x66, 0x21, 0xc3, 0x39, - 0xca, 0x4b, 0xbe, 0xe9, 0x9e, 0x96, 0xd3, 0xc5, 0xdf, 0x94, 0xe0, 0x4c, 0xaf, 0x4c, 0xe3, 0x9c, + 0xca, 0x4b, 0xbe, 0xe9, 0x9e, 0x96, 0xd3, 0xc5, 0xdf, 0x92, 0xe0, 0x4c, 0xaf, 0x4c, 0xe3, 0x9c, 0x53, 0x37, 0x40, 0xb6, 0x4c, 0xa2, 0xb4, 0xf7, 0x55, 0x87, 0x08, 0x19, 0x08, 0x6f, 0x31, 0x6f, - 0x99, 0x64, 0x9b, 0x82, 0x39, 0x47, 0xbb, 0x96, 0x92, 0x5f, 0x95, 0x60, 0x6e, 0x45, 0x6f, 0x19, + 0x99, 0x64, 0x9b, 0x82, 0x39, 0x47, 0xbb, 0x96, 0x92, 0x5f, 0x93, 0x60, 0x6e, 0x45, 0x6f, 0x19, 0x66, 0xad, 0xdd, 0x34, 0x62, 0x0d, 0x3e, 0xae, 0x40, 0xc6, 0xa1, 0x34, 0xd9, 0x4e, 0x5c, 0xa2, 0x7b, 0x27, 0x2e, 0xcd, 0x6a, 0xd6, 0xc9, 0x51, 0xe0, 0xe3, 0x85, 0x3b, 0x11, 0xe7, 0x54, 0x7a, - 0x5f, 0x8c, 0x6f, 0x83, 0xd8, 0x9f, 0x90, 0x77, 0x1a, 0x26, 0x1f, 0x67, 0xcf, 0xbf, 0x29, 0xc1, + 0x5f, 0x8c, 0x6f, 0x83, 0xd8, 0x9f, 0x90, 0x77, 0x1a, 0x26, 0x1f, 0x67, 0xcf, 0xbf, 0x21, 0xc1, 0x39, 0x46, 0x9b, 0xa9, 0xcc, 0x1e, 0xb1, 0xd9, 0xc6, 0x68, 0x9c, 0x22, 0xba, 0x0c, 0x53, 0xae, 0x6a, 0x37, 0x08, 0x37, 0x04, 0x93, 0xa5, 0xec, 0x47, 0xc7, 0x8b, 0xd3, 0x35, 0xd7, 0xb2, 0x49, 0x75, 0x15, 0x8b, 0x2a, 0x31, 0x4e, 0x15, 0x16, 0xa2, 0xfa, 0x12, 0xe7, 0x78, 0xff, 0x43, 0x12, @@ -33696,11 +33745,11 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0x23, 0xae, 0xb8, 0x47, 0x6d, 0x1e, 0x94, 0xe6, 0xef, 0x5c, 0x89, 0x24, 0xc4, 0x3e, 0xce, 0x7b, 0x52, 0x3f, 0x6a, 0x13, 0x0c, 0x9a, 0xff, 0x1b, 0xad, 0xc2, 0x34, 0x67, 0x8e, 0xe7, 0xe7, 0x0c, 0x21, 0x41, 0x27, 0x7a, 0x9d, 0x35, 0x16, 0x36, 0xc9, 0x43, 0x15, 0x8c, 0xdd, 0x85, 0xf3, 0x91, - 0x83, 0x8e, 0x93, 0xb3, 0x7f, 0xe2, 0x69, 0x12, 0x26, 0x4d, 0x4b, 0x53, 0x3f, 0x81, 0x08, 0x36, - 0xc4, 0x91, 0xc4, 0xc7, 0xe5, 0x88, 0xa7, 0x6a, 0x3d, 0x9d, 0x8d, 0x93, 0x21, 0xbf, 0x2d, 0xc1, + 0x83, 0x8e, 0x93, 0xb3, 0x7f, 0xea, 0x69, 0x12, 0x26, 0x4d, 0x4b, 0x53, 0x3f, 0x81, 0x08, 0x36, + 0xc4, 0x91, 0xc4, 0xc7, 0xe5, 0x88, 0xa7, 0x6a, 0x3d, 0x9d, 0x8d, 0x93, 0x21, 0xbf, 0x23, 0xc1, 0x7c, 0x85, 0xa8, 0xb6, 0xbb, 0x4b, 0x54, 0xb7, 0x7e, 0x18, 0xeb, 0xea, 0xfa, 0x3a, 0x24, 0x4d, 0xeb, 0x40, 0xf8, 0x34, 0xc3, 0x17, 0x50, 0x31, 0x7e, 0xda, 0x5e, 0x8c, 0xfd, 0x2b, 0x70, 0xaa, - 0xbb, 0x5f, 0x71, 0x8e, 0xfa, 0x07, 0x49, 0xc8, 0xdc, 0x2f, 0xc7, 0x39, 0xd6, 0xcf, 0x8b, 0x7d, + 0xbb, 0x5f, 0x71, 0x8e, 0xfa, 0xfb, 0x49, 0xc8, 0xdc, 0x2f, 0xc7, 0x39, 0xd6, 0xcf, 0x8b, 0x7d, 0x01, 0x3e, 0x0b, 0xa2, 0xce, 0x82, 0xfc, 0xef, 0x2d, 0xdf, 0x2f, 0xaf, 0x93, 0x23, 0x2f, 0x64, 0xa0, 0x58, 0x68, 0x05, 0x32, 0xee, 0x3e, 0x5d, 0x44, 0xad, 0xa6, 0x2e, 0xdc, 0x84, 0xb1, 0xf8, 0x15, 0x60, 0xa1, 0x26, 0x9c, 0x76, 0x0f, 0x4d, 0xb6, 0x36, 0x2b, 0x0d, 0x4d, 0x09, 0xc8, 0x4d, @@ -33717,8 +33766,8 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0x90, 0x0c, 0x5b, 0x73, 0xd2, 0xac, 0x1b, 0x74, 0xc5, 0x39, 0x05, 0x93, 0x7b, 0x96, 0xad, 0x11, 0x76, 0x3a, 0x97, 0xc6, 0xbc, 0x80, 0x6e, 0xc2, 0x9c, 0x61, 0x6a, 0xcd, 0x8e, 0x63, 0x3c, 0x25, 0x8a, 0x37, 0x4c, 0xee, 0x81, 0xce, 0xfa, 0x15, 0x8c, 0xa0, 0xe5, 0xbb, 0xa2, 0x69, 0x39, 0x53, - 0xfc, 0x5d, 0x09, 0x66, 0x7d, 0x0d, 0x88, 0xd3, 0x07, 0x2d, 0x77, 0x89, 0xef, 0xf9, 0x75, 0x80, - 0x8a, 0xac, 0xf8, 0xfd, 0x04, 0xcc, 0xbe, 0xd3, 0x21, 0xf6, 0x51, 0xcc, 0x0a, 0x5a, 0xe2, 0xa7, + 0xfc, 0x3d, 0x09, 0x66, 0x7d, 0x0d, 0x88, 0xd3, 0x07, 0x2d, 0x77, 0x89, 0xef, 0xf9, 0x75, 0x80, + 0x8a, 0xac, 0xf8, 0xbd, 0x04, 0xcc, 0xbe, 0xd3, 0x21, 0xf6, 0x51, 0xcc, 0x0a, 0x5a, 0xe2, 0xa7, 0xb6, 0x89, 0x17, 0x54, 0x2a, 0x76, 0x8e, 0x7b, 0x0d, 0x66, 0x0f, 0x54, 0xc3, 0x55, 0xf6, 0x2c, 0x5b, 0xe9, 0xb4, 0x75, 0xd5, 0xf5, 0xce, 0xb8, 0x72, 0x14, 0x7c, 0xcf, 0xb2, 0x77, 0x18, 0x10, 0x11, 0x40, 0x4f, 0x4c, 0xeb, 0xc0, 0x54, 0x28, 0xd8, 0x30, 0x1b, 0x94, 0x1f, 0x62, 0x33, 0xa3, @@ -33727,7 +33776,7 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0xf4, 0xe5, 0x9d, 0x9d, 0xea, 0x2a, 0x96, 0x19, 0xc9, 0x77, 0x39, 0xc5, 0xfa, 0xa1, 0xe9, 0x2d, 0x98, 0x1f, 0x49, 0x20, 0x07, 0x0c, 0x8b, 0x53, 0x9e, 0x6b, 0x90, 0xfd, 0xa0, 0x43, 0x6c, 0x83, 0xe8, 0xcf, 0x2d, 0x50, 0x10, 0x88, 0x74, 0x12, 0xbe, 0x07, 0x33, 0x5d, 0x7c, 0x48, 0x7e, 0x3c, - 0x3e, 0x64, 0x0f, 0x02, 0x16, 0x14, 0xff, 0x2a, 0x01, 0x88, 0x0d, 0xbe, 0xca, 0xf7, 0x91, 0x3e, + 0x3e, 0x64, 0x0f, 0x02, 0x16, 0x14, 0xff, 0x3a, 0x01, 0x88, 0x0d, 0xbe, 0xca, 0xf7, 0x91, 0x3e, 0x65, 0x0a, 0xf3, 0x08, 0xc0, 0xd8, 0x53, 0x5a, 0x86, 0xe3, 0x18, 0x66, 0x83, 0xe9, 0x4a, 0xfe, 0xce, 0x1b, 0x11, 0x7d, 0xe9, 0x1f, 0xc2, 0x72, 0x75, 0x6f, 0x83, 0xa3, 0x95, 0xc8, 0xbe, 0xfa, 0xd4, 0xb0, 0x6c, 0x9c, 0x31, 0x3c, 0x50, 0xb1, 0x04, 0x73, 0x7d, 0xf5, 0x28, 0x0f, 0xb0, 0xba, @@ -33735,27 +33784,27 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0xf0, 0xa6, 0xb2, 0x86, 0xf1, 0x16, 0x96, 0x25, 0x94, 0x85, 0xe9, 0x6d, 0xbc, 0xf6, 0x68, 0x6d, 0xb3, 0x2e, 0x27, 0x84, 0xf6, 0xfc, 0x12, 0xcc, 0x77, 0x7d, 0x3c, 0x4e, 0xfd, 0xb9, 0x04, 0x33, 0x7b, 0x56, 0xc7, 0xd4, 0x15, 0x1e, 0x87, 0x8b, 0xfd, 0x86, 0x2c, 0x83, 0xf1, 0xef, 0x15, 0xbf, - 0x91, 0x80, 0x53, 0x98, 0x38, 0x56, 0xf3, 0x29, 0x89, 0x5f, 0x82, 0x5b, 0x20, 0xb6, 0x17, 0x95, + 0x9e, 0x80, 0x53, 0x98, 0x38, 0x56, 0xf3, 0x29, 0x89, 0x5f, 0x82, 0x5b, 0x20, 0xb6, 0x17, 0x95, 0x8f, 0x23, 0xc8, 0x0c, 0xa7, 0xc1, 0x97, 0x93, 0x29, 0xc7, 0x55, 0xdd, 0x8e, 0x23, 0x44, 0x79, 0x65, 0xf8, 0x5c, 0xa8, 0xb1, 0xb6, 0x58, 0xe0, 0x84, 0xb6, 0x09, 0x52, 0xfd, 0xdb, 0x04, 0xc5, - 0x5f, 0x80, 0xd3, 0x3d, 0x8c, 0x88, 0x73, 0xd5, 0xff, 0x87, 0x04, 0x9c, 0xeb, 0x26, 0x1f, 0x77, + 0x5f, 0x80, 0xd3, 0x3d, 0x8c, 0x88, 0x73, 0xd5, 0xff, 0xc7, 0x04, 0x9c, 0xeb, 0x26, 0x1f, 0x77, 0x0c, 0xf0, 0x7f, 0x83, 0xd9, 0xa8, 0x02, 0xb9, 0x96, 0x61, 0x2a, 0x81, 0x93, 0xf6, 0x1c, 0x4b, - 0xfa, 0x0c, 0x8d, 0x80, 0xbb, 0xfd, 0x34, 0x1a, 0xae, 0x44, 0xf1, 0x35, 0x4e, 0xd9, 0x7d, 0x5b, + 0xfa, 0x0c, 0x8d, 0x80, 0xbb, 0xfd, 0x34, 0x1a, 0xae, 0x44, 0xf1, 0x35, 0x4e, 0xd9, 0x7d, 0x4b, 0x82, 0x99, 0xb8, 0xf7, 0x2f, 0x5e, 0xec, 0x28, 0x5d, 0x8c, 0xb9, 0x0e, 0xb9, 0x4f, 0x60, 0xc3, - 0xe3, 0x8f, 0x24, 0x40, 0x75, 0xbb, 0x63, 0x52, 0x97, 0xe9, 0xa1, 0xd5, 0x88, 0x73, 0xb0, 0xa7, + 0xe3, 0x8f, 0x25, 0x40, 0x75, 0xbb, 0x63, 0x52, 0x97, 0xe9, 0xa1, 0xd5, 0x88, 0x73, 0xb0, 0xa7, 0x60, 0xd2, 0x30, 0x75, 0x72, 0xc8, 0x06, 0x9b, 0xc2, 0xbc, 0x80, 0x6e, 0x43, 0x5a, 0x24, 0x50, 0xf1, 0xd4, 0x80, 0x64, 0xe9, 0xcc, 0xc9, 0xf1, 0xe2, 0x34, 0x4f, 0x97, 0x5a, 0xfd, 0x28, 0xf8, 0x89, 0xa7, 0x79, 0xc6, 0x94, 0x97, 0xad, 0xf2, 0x1e, 0xcc, 0x77, 0x75, 0x34, 0x4e, 0x2e, 0x7c, - 0x3f, 0x01, 0xf3, 0x62, 0x38, 0xb1, 0x6f, 0xf8, 0xbc, 0x50, 0xf6, 0x1d, 0xfa, 0x02, 0x40, 0xdb, + 0x2f, 0x01, 0xf3, 0x62, 0x38, 0xb1, 0x6f, 0xf8, 0xbc, 0x50, 0xf6, 0x1d, 0xfa, 0x02, 0x40, 0xdb, 0x26, 0x4f, 0x15, 0x8e, 0x9a, 0x1c, 0x0b, 0x35, 0x43, 0x31, 0x18, 0x00, 0x7d, 0x19, 0x66, 0xe9, 0x84, 0x6b, 0xdb, 0x56, 0xdb, 0x72, 0xa8, 0x27, 0xe1, 0x8c, 0xe7, 0x8a, 0xcf, 0x9d, 0x1c, 0x2f, - 0xe6, 0x36, 0x0c, 0x73, 0x5b, 0x20, 0xd6, 0x6b, 0x98, 0xce, 0x5c, 0xbf, 0xe8, 0xb9, 0x3f, 0x7f, - 0x2f, 0xc1, 0xa9, 0x4f, 0x6c, 0x8b, 0xec, 0x7f, 0x83, 0x63, 0xfe, 0x7a, 0x20, 0xb3, 0x62, 0xd5, - 0xdc, 0xb3, 0xe2, 0xdf, 0xb8, 0xfc, 0xb6, 0x04, 0x73, 0x21, 0xf2, 0x71, 0xae, 0xfa, 0x2f, 0x96, - 0xe3, 0xf9, 0x15, 0xea, 0x07, 0x84, 0xd5, 0x3e, 0xce, 0x49, 0xf5, 0x07, 0x12, 0x9c, 0x29, 0xf3, + 0xe6, 0x36, 0x0c, 0x73, 0x5b, 0x20, 0xd6, 0x6b, 0x98, 0xce, 0x5c, 0xbf, 0xe8, 0xb9, 0x3f, 0xff, + 0x20, 0xc1, 0xa9, 0x4f, 0x6c, 0x8b, 0xec, 0x7f, 0x83, 0x63, 0xfe, 0x7a, 0x20, 0xb3, 0x62, 0xd5, + 0xdc, 0xb3, 0xe2, 0xdf, 0xb8, 0xfc, 0x96, 0x04, 0x73, 0x21, 0xf2, 0x71, 0xae, 0xfa, 0x2f, 0x96, + 0xe3, 0xf9, 0x15, 0xea, 0x07, 0x84, 0xd5, 0x3e, 0xce, 0x49, 0xf5, 0x87, 0x12, 0x9c, 0x29, 0xf3, 0xe3, 0x2c, 0x76, 0x6a, 0xe7, 0x74, 0x5a, 0x71, 0x6a, 0x49, 0x01, 0xa6, 0x9f, 0x12, 0xdb, 0x31, 0x2c, 0xbe, 0xee, 0xe5, 0xb0, 0x57, 0x64, 0xb9, 0xa6, 0xa6, 0xda, 0x76, 0xf6, 0x2d, 0x6f, 0x37, - 0xde, 0x2f, 0xfb, 0x21, 0x59, 0x52, 0x4e, 0x15, 0x7f, 0x2c, 0xc1, 0xd9, 0xbe, 0x0e, 0xc6, 0x29, + 0xde, 0x2f, 0xfb, 0x21, 0x59, 0x52, 0x4e, 0x15, 0x7f, 0x24, 0xc1, 0xd9, 0xbe, 0x0e, 0xc6, 0x29, 0x94, 0xaf, 0x41, 0x56, 0x13, 0x84, 0xa9, 0xb9, 0xe3, 0x1b, 0xf2, 0x55, 0xda, 0xec, 0x05, 0xdd, 0xf0, 0x93, 0xe3, 0x45, 0xf0, 0xba, 0x5a, 0x5d, 0xc5, 0xe0, 0x51, 0xaf, 0xea, 0xc5, 0x9f, 0x02, 0xe4, 0xd6, 0x0e, 0xdb, 0x96, 0xed, 0xd6, 0xf8, 0x9a, 0x8f, 0x56, 0x21, 0xdd, 0xb6, 0xad, 0xa7, @@ -33772,211 +33821,214 @@ var fileDescriptor_api_a3d9ae2b746aa069 = []byte{ 0xd9, 0x6f, 0xf4, 0x1a, 0x4c, 0x9b, 0x96, 0x4e, 0x3c, 0x9d, 0xcd, 0x95, 0x4e, 0x9d, 0x1c, 0x2f, 0x4e, 0x6d, 0x5a, 0x3a, 0x5f, 0xa1, 0xc5, 0x2f, 0x3c, 0x45, 0x1b, 0x79, 0xeb, 0xf3, 0xc2, 0x35, 0x48, 0x51, 0xb9, 0xd0, 0x79, 0xb9, 0xab, 0x3a, 0x64, 0xc7, 0x36, 0x04, 0x4d, 0xaf, 0x28, 0xda, - 0xfd, 0xb5, 0x04, 0x89, 0xda, 0x5d, 0xea, 0x2a, 0xee, 0x76, 0xb4, 0x27, 0xc4, 0x15, 0xad, 0x44, + 0xfd, 0x8d, 0x04, 0x89, 0xda, 0x5d, 0xea, 0x2a, 0xee, 0x76, 0xb4, 0x27, 0xc4, 0x15, 0xad, 0x44, 0x89, 0xb9, 0x90, 0x36, 0xd9, 0x33, 0xb8, 0xdb, 0x90, 0xc1, 0xa2, 0x84, 0x5e, 0x02, 0x50, 0x35, 0x8d, 0x38, 0x8e, 0xe2, 0x25, 0xa1, 0x67, 0x70, 0x86, 0x43, 0xd6, 0xc9, 0x11, 0x45, 0x73, 0x88, 0x66, 0x13, 0x3e, 0xe3, 0x33, 0x58, 0x94, 0x28, 0x9a, 0x4b, 0x5a, 0x6d, 0xc5, 0xb5, 0x9e, 0x10, 0x93, 0xc9, 0x33, 0x83, 0x33, 0x14, 0x52, 0xa7, 0x00, 0x6a, 0x2a, 0x88, 0xa9, 0xb7, 0x2d, 0xc3, 0x74, 0x99, 0xa0, 0x32, 0xd8, 0x2f, 0x53, 0x92, 0x36, 0x69, 0x18, 0x22, 0x3d, 0x3b, 0x83, 0x45, - 0x49, 0x0c, 0xe3, 0x3b, 0x12, 0x24, 0xef, 0x97, 0x6b, 0xcf, 0x3d, 0x0e, 0x04, 0x29, 0xb5, 0x23, + 0x49, 0x0c, 0xe3, 0xdb, 0x12, 0x24, 0xef, 0x97, 0x6b, 0xcf, 0x3d, 0x0e, 0x04, 0x29, 0xb5, 0x23, 0xf4, 0x3e, 0x83, 0xd9, 0x6f, 0x96, 0x83, 0x61, 0x34, 0x9b, 0x34, 0x56, 0x6f, 0xdb, 0xd6, 0xd7, 0x88, 0xe6, 0x8d, 0x22, 0x2f, 0xc0, 0xdb, 0x1c, 0x8a, 0x96, 0x20, 0xab, 0xd9, 0x44, 0x27, 0xa6, - 0x6b, 0xa8, 0x4d, 0x47, 0x0c, 0x27, 0x0c, 0x12, 0x9d, 0xfb, 0x86, 0x04, 0x93, 0x4c, 0x91, 0xd0, + 0x6b, 0xa8, 0x4d, 0x47, 0x0c, 0x27, 0x0c, 0x12, 0x9d, 0xfb, 0xba, 0x04, 0x93, 0x4c, 0x91, 0xd0, 0x05, 0xc8, 0x68, 0x96, 0xe9, 0xaa, 0x86, 0x29, 0xac, 0x40, 0x06, 0x07, 0x80, 0x81, 0x9d, 0xbc, 0x04, 0x33, 0xaa, 0xa6, 0x59, 0x1d, 0xd3, 0x55, 0x4c, 0xb5, 0x45, 0x44, 0x67, 0xb3, 0x02, 0xb6, 0xa9, 0xb6, 0x08, 0x5a, 0x04, 0xaf, 0xe8, 0xa7, 0xfd, 0x67, 0x30, 0x08, 0x90, 0x7f, 0xca, 0xb8, - 0xf0, 0x63, 0x09, 0xd2, 0x9e, 0x0a, 0xd2, 0xce, 0x34, 0x88, 0x49, 0x6c, 0xd5, 0xb5, 0xfc, 0xce, + 0xf0, 0x23, 0x09, 0xd2, 0x9e, 0x0a, 0xd2, 0xce, 0x34, 0x88, 0x49, 0x6c, 0xd5, 0xb5, 0xfc, 0xce, 0xf8, 0x80, 0x5e, 0x83, 0x9e, 0x09, 0x0c, 0xfa, 0x29, 0x98, 0x74, 0xd5, 0xdd, 0xa6, 0xd7, 0x0f, 0x5e, 0x60, 0xfb, 0x73, 0x4d, 0xb5, 0xc1, 0xb7, 0x78, 0x32, 0x98, 0x17, 0xe8, 0x90, 0x44, 0xd2, 0x0f, 0xe7, 0x8e, 0x28, 0xd1, 0xfe, 0xf2, 0x3c, 0x97, 0x5d, 0xd2, 0x30, 0x4c, 0x26, 0xec, 0x24, 0x06, 0x06, 0x62, 0x79, 0x05, 0xe8, 0x3c, 0x64, 0x78, 0x03, 0x62, 0xea, 0x4c, 0xe2, 0x49, 0x9c, - 0x66, 0x80, 0x35, 0x2f, 0x61, 0x5a, 0xac, 0xe2, 0x7f, 0x2a, 0xc1, 0xdc, 0xbb, 0xb6, 0xe1, 0x92, + 0x66, 0x80, 0x35, 0x2f, 0x61, 0x5a, 0xac, 0xe2, 0x7f, 0x26, 0xc1, 0xdc, 0xbb, 0xb6, 0xe1, 0x92, 0x12, 0x4f, 0x90, 0x89, 0x6f, 0x49, 0x7b, 0x13, 0x32, 0xba, 0xea, 0xaa, 0xfc, 0xbe, 0x42, 0x62, 0xe8, 0x7d, 0x05, 0xcf, 0x14, 0xd2, 0xf6, 0xec, 0xce, 0x02, 0x82, 0x14, 0xfd, 0xcd, 0xaf, 0x67, - 0x60, 0xf6, 0x3b, 0x38, 0x2e, 0x0d, 0x77, 0x37, 0xce, 0x25, 0xfe, 0xeb, 0x49, 0x6f, 0xd1, 0x89, + 0x60, 0xf6, 0x3b, 0x38, 0x2e, 0x0d, 0x77, 0x37, 0xce, 0x25, 0xfe, 0x27, 0x49, 0x6f, 0xd1, 0x89, 0x93, 0x0d, 0x5f, 0x82, 0x69, 0x11, 0xb7, 0x0a, 0x26, 0x2c, 0x8d, 0xb2, 0x77, 0xde, 0xa1, 0x96, 0x40, 0x43, 0x25, 0x00, 0xc7, 0x55, 0x6d, 0x97, 0x45, 0x9c, 0x63, 0xe5, 0x55, 0x78, 0x8b, 0x14, 0x43, 0xa3, 0x50, 0xb4, 0x09, 0xd9, 0xd6, 0x53, 0x4d, 0x53, 0xf6, 0x8c, 0xa6, 0x2b, 0x52, 0x2a, 0xa2, 0x53, 0xc8, 0x36, 0x1e, 0x95, 0xcb, 0xf7, 0x58, 0x23, 0x9e, 0xd9, 0x10, 0x94, 0x31, 0x50, 0x0a, 0xfc, 0x37, 0x7a, 0x15, 0x44, 0x76, 0xa9, 0xe2, 0x78, 0xb9, 0xe2, 0xa5, 0xdc, 0xc9, 0xf1, 0x62, 0x06, 0x33, 0x68, 0xad, 0x56, 0xc7, 0x19, 0xde, 0xa0, 0xe6, 0xb8, 0xe8, 0x32, 0xe4, 0xac, - 0x96, 0xe1, 0x2a, 0xde, 0x0a, 0xcf, 0x53, 0x27, 0xf0, 0x0c, 0x05, 0x7a, 0x1e, 0x80, 0x90, 0xef, - 0xb7, 0x24, 0xc8, 0x95, 0x3a, 0xcd, 0x27, 0x5b, 0xed, 0x5a, 0xa7, 0xd5, 0x52, 0xed, 0x23, 0xaa, - 0xca, 0x5c, 0x8f, 0x8c, 0x67, 0x84, 0xc9, 0x21, 0x29, 0x14, 0xc5, 0x78, 0x46, 0xa8, 0xa2, 0x88, - 0x5c, 0x33, 0x0a, 0xe7, 0x89, 0x64, 0x97, 0x21, 0xc7, 0xa2, 0x33, 0x85, 0x98, 0xae, 0x6d, 0x10, - 0x1e, 0xfc, 0x27, 0xf1, 0x0c, 0x03, 0xae, 0x71, 0x18, 0xba, 0x0a, 0x79, 0xe7, 0xc8, 0x71, 0x49, - 0x4b, 0xe1, 0xb7, 0x98, 0x78, 0x48, 0x91, 0xc4, 0x39, 0x0e, 0xc5, 0x1c, 0x58, 0xfc, 0xb3, 0x24, - 0xe4, 0x3d, 0x9d, 0x88, 0xd3, 0x99, 0x2a, 0xc1, 0xe4, 0x9e, 0xd1, 0x24, 0xde, 0x61, 0xe7, 0xe0, - 0x05, 0xd5, 0xa3, 0xb4, 0x4c, 0xd7, 0x38, 0xcf, 0xdf, 0x65, 0xa8, 0x71, 0xe8, 0xc5, 0xc2, 0x4f, - 0x24, 0x48, 0x31, 0x2f, 0xe6, 0x36, 0xa4, 0xd8, 0x44, 0x95, 0xc6, 0x99, 0xa8, 0xac, 0xa9, 0xbf, - 0xd8, 0x26, 0x42, 0x8b, 0x2d, 0x5d, 0xb9, 0xf6, 0xd5, 0xd7, 0x6f, 0xdf, 0x61, 0x3a, 0x31, 0x83, - 0x45, 0x09, 0x95, 0x20, 0x4d, 0xd8, 0x78, 0x88, 0x2e, 0x7c, 0x88, 0xa8, 0x69, 0xd0, 0x25, 0x78, - 0xcf, 0x28, 0x78, 0x78, 0xe8, 0x1c, 0x24, 0xa9, 0xb2, 0x4d, 0xf3, 0x33, 0xb3, 0x93, 0xe3, 0xc5, - 0x24, 0x55, 0x33, 0x0a, 0xe3, 0x2e, 0xf0, 0x83, 0x54, 0x3a, 0x25, 0x4f, 0x16, 0x7f, 0x98, 0x82, - 0x5c, 0xb5, 0x15, 0xf7, 0x34, 0x5e, 0xe9, 0x16, 0x58, 0x94, 0x8b, 0xd7, 0xf5, 0xd1, 0x08, 0x79, - 0x75, 0x19, 0xc4, 0xe4, 0xf3, 0x19, 0xc4, 0x2a, 0x5d, 0xbe, 0xc5, 0x15, 0x2e, 0xfa, 0xfd, 0x57, - 0x46, 0x7e, 0xbf, 0x4e, 0x97, 0x15, 0x4c, 0x71, 0xbc, 0x23, 0x29, 0x4e, 0x00, 0xbd, 0xcd, 0xbc, - 0x04, 0xae, 0x34, 0x53, 0xe3, 0x2b, 0xcd, 0x34, 0x31, 0x75, 0xa6, 0x32, 0x87, 0x42, 0x63, 0x3e, - 0x07, 0x49, 0xdd, 0x18, 0xc6, 0xd2, 0x28, 0xa3, 0x46, 0x51, 0x46, 0x28, 0x4e, 0x2a, 0xac, 0x38, - 0xe1, 0x10, 0x67, 0x61, 0x0b, 0x20, 0x18, 0x15, 0x5a, 0x82, 0x29, 0xab, 0xa9, 0x53, 0xb7, 0x4e, - 0x62, 0x6e, 0x5d, 0xe6, 0xe4, 0x78, 0x71, 0x72, 0xab, 0xa9, 0x57, 0x57, 0xf1, 0xa4, 0xd5, 0xd4, - 0xab, 0x3a, 0xbb, 0xf9, 0x46, 0x0e, 0x14, 0x76, 0xd9, 0x90, 0x85, 0x2b, 0x78, 0xda, 0x24, 0x07, - 0xab, 0xc4, 0xd1, 0xc2, 0x4b, 0xa0, 0x50, 0x9b, 0x3f, 0x94, 0x20, 0xef, 0x71, 0x30, 0xde, 0x99, - 0x9e, 0x36, 0x5a, 0x42, 0xf3, 0x93, 0xcf, 0xa7, 0xf9, 0x1e, 0x9e, 0xc8, 0xcf, 0xff, 0xa6, 0x04, - 0xf3, 0x3c, 0xc9, 0x49, 0x53, 0x5d, 0x6a, 0x90, 0x63, 0x54, 0xef, 0x97, 0x41, 0xb6, 0x55, 0x53, - 0xb7, 0x5a, 0xc6, 0x33, 0xc2, 0x37, 0x1d, 0x1c, 0xb1, 0xd7, 0x3e, 0xeb, 0xc3, 0x59, 0x54, 0xed, - 0xed, 0x99, 0xfc, 0x9b, 0x04, 0xa7, 0xba, 0x3b, 0x13, 0x27, 0xd3, 0xd6, 0x61, 0x8a, 0xed, 0x97, - 0x79, 0xd3, 0xed, 0xb5, 0x08, 0x22, 0x51, 0x5f, 0xe7, 0x17, 0x15, 0x7d, 0x85, 0x67, 0x24, 0x16, - 0xbe, 0x04, 0x93, 0x0c, 0xfc, 0x02, 0x36, 0x4e, 0x70, 0xfe, 0x03, 0x98, 0x5b, 0xd1, 0xf5, 0x5a, - 0x4d, 0x68, 0x5f, 0x7c, 0x6c, 0xf7, 0xfc, 0x9c, 0x44, 0x94, 0x9f, 0x13, 0xfe, 0x64, 0x9c, 0x7e, - 0x4e, 0x1b, 0xf2, 0x22, 0xf7, 0x30, 0xe6, 0x0d, 0xd2, 0x03, 0xea, 0x98, 0x09, 0xb5, 0xe1, 0x85, - 0xe0, 0xda, 0x93, 0xff, 0xc5, 0x38, 0x47, 0xd2, 0x81, 0x79, 0x8f, 0x6e, 0xdc, 0x67, 0x11, 0xc3, - 0x86, 0xc3, 0x36, 0x9a, 0xc2, 0x9f, 0x8d, 0x73, 0x4c, 0xdf, 0x93, 0x20, 0x5f, 0xeb, 0xec, 0xf2, - 0xbb, 0xaf, 0xf1, 0x8d, 0xe7, 0x3e, 0x40, 0x93, 0xec, 0x89, 0x7b, 0x29, 0xc2, 0x13, 0x1d, 0xff, - 0xea, 0x75, 0x86, 0xe2, 0xb2, 0x2a, 0xc1, 0x82, 0x1f, 0x26, 0x60, 0xd6, 0xef, 0x65, 0x9c, 0x33, - 0xff, 0x17, 0x81, 0xb9, 0x99, 0x8a, 0xe3, 0xaa, 0xae, 0x23, 0x0c, 0xe6, 0xab, 0xcf, 0x93, 0xd7, - 0x5d, 0x9a, 0x13, 0x39, 0x39, 0x19, 0x1f, 0x84, 0x33, 0x94, 0x24, 0xfb, 0x89, 0x96, 0x61, 0x9e, - 0x99, 0x37, 0x45, 0x6d, 0xb7, 0x9b, 0x06, 0xd1, 0x15, 0xbe, 0xab, 0x9f, 0x62, 0xbb, 0xfa, 0x73, - 0xac, 0x6a, 0x85, 0xd7, 0x54, 0xd9, 0x0e, 0xff, 0x3d, 0x98, 0xd9, 0xb3, 0x09, 0x79, 0x46, 0x14, - 0xe6, 0x34, 0x3d, 0xcf, 0x59, 0x4f, 0x96, 0x23, 0xd6, 0x28, 0x9e, 0x30, 0x24, 0xef, 0xc3, 0x1c, - 0xe3, 0x62, 0xdc, 0xe9, 0xf8, 0x42, 0x2a, 0x3f, 0x95, 0x00, 0x85, 0xe9, 0x7f, 0x72, 0x82, 0x49, - 0xc4, 0x2e, 0x98, 0x57, 0x01, 0xf1, 0x03, 0x7f, 0x47, 0x69, 0x13, 0x5b, 0x71, 0x88, 0x66, 0x89, - 0xfb, 0x96, 0x12, 0x96, 0x45, 0xcd, 0x36, 0xb1, 0x6b, 0x0c, 0x5e, 0xfc, 0x8d, 0x02, 0xcc, 0x08, - 0x9e, 0xec, 0x98, 0x34, 0xaa, 0xbe, 0x0d, 0xc9, 0x86, 0xd8, 0xb6, 0xc8, 0x46, 0x06, 0x36, 0xc1, - 0x9d, 0xef, 0xca, 0x04, 0xa6, 0x6d, 0x29, 0x4a, 0xbb, 0xe3, 0x46, 0xa4, 0x58, 0x05, 0x99, 0x34, - 0x61, 0x94, 0x76, 0xc7, 0x45, 0x35, 0x98, 0xd5, 0x82, 0x3b, 0xaf, 0x0a, 0x45, 0x4f, 0x0e, 0xcc, - 0x4e, 0x8f, 0xbc, 0x39, 0x5c, 0x99, 0xc0, 0x79, 0xad, 0xab, 0x02, 0x95, 0xc3, 0x97, 0x2c, 0x53, - 0x03, 0x37, 0xe9, 0x7a, 0x2f, 0x78, 0x56, 0x26, 0x42, 0x77, 0x31, 0xd1, 0x9b, 0x30, 0xa5, 0xb3, - 0xcb, 0x7b, 0x42, 0x43, 0xa3, 0x94, 0xa8, 0xeb, 0xbe, 0x64, 0x65, 0x02, 0x0b, 0x0c, 0xf4, 0x00, - 0x66, 0xf8, 0x2f, 0x61, 0x1d, 0xa6, 0x06, 0xee, 0x62, 0xf6, 0x5f, 0x5f, 0xac, 0x4c, 0xe0, 0xac, - 0x1e, 0x40, 0xd1, 0x67, 0x21, 0xe5, 0x68, 0xaa, 0x29, 0xf6, 0xf6, 0x2e, 0x0e, 0xb8, 0xa4, 0x14, - 0x20, 0xb3, 0xd6, 0xe8, 0x31, 0xcc, 0xb1, 0x9d, 0x0c, 0xc5, 0x0d, 0x4e, 0x63, 0x59, 0xa6, 0x7c, - 0xf7, 0x01, 0xb0, 0xef, 0x2d, 0x45, 0x5f, 0xd0, 0xa8, 0x4c, 0x60, 0x79, 0xb7, 0xa7, 0x8a, 0x8a, - 0x8c, 0xb9, 0xbb, 0x21, 0xc2, 0x99, 0x81, 0x22, 0x8b, 0xbc, 0x32, 0x41, 0x45, 0x46, 0xba, 0x2a, - 0xd0, 0x7d, 0xc8, 0xaa, 0xd4, 0xfd, 0x50, 0x58, 0x1a, 0x7a, 0x01, 0x06, 0x6e, 0xd2, 0xf6, 0x65, - 0xc6, 0x57, 0xd8, 0x6d, 0x13, 0x0f, 0x18, 0x10, 0x6a, 0x11, 0xbb, 0x41, 0x0a, 0xd9, 0xe1, 0x84, - 0xc2, 0x47, 0xb8, 0x3e, 0x21, 0x06, 0x44, 0x1b, 0x90, 0xdb, 0xf7, 0xf2, 0x3e, 0xd9, 0xf1, 0xf9, - 0xcc, 0xc0, 0x9d, 0xda, 0x88, 0xbc, 0xd5, 0xca, 0x04, 0x9e, 0xd9, 0x0f, 0x81, 0xd1, 0x32, 0x24, - 0x1a, 0x5a, 0x21, 0xc7, 0x68, 0x5c, 0x18, 0x96, 0x95, 0x59, 0x99, 0xc0, 0x89, 0x86, 0x46, 0x83, - 0x0a, 0x9e, 0x3e, 0x76, 0x68, 0x16, 0xf2, 0x03, 0x8d, 0x4c, 0x77, 0xd2, 0x60, 0x65, 0x02, 0xb3, - 0xd4, 0x3a, 0xfa, 0xbd, 0x6d, 0xc8, 0xdb, 0xfc, 0x0c, 0xdc, 0xcb, 0xf4, 0x90, 0x19, 0x95, 0xeb, - 0xd1, 0xa6, 0xaa, 0x2f, 0xd9, 0xa3, 0x32, 0x81, 0x73, 0x76, 0x18, 0x8e, 0xbe, 0x0a, 0xa7, 0xba, - 0x29, 0x0a, 0xe5, 0x9e, 0xeb, 0xb3, 0x5c, 0xd1, 0x74, 0xbb, 0x75, 0x1c, 0xd9, 0x7d, 0x95, 0xe8, - 0x0d, 0x98, 0xe4, 0x52, 0x43, 0x8c, 0xe4, 0x62, 0xd4, 0x6e, 0x4a, 0xb7, 0xc0, 0x78, 0x7b, 0x3a, - 0xdf, 0x5c, 0x71, 0xf8, 0xab, 0x34, 0xad, 0x46, 0x61, 0x7e, 0xe0, 0x7c, 0xeb, 0x3f, 0xcc, 0xa6, - 0xf3, 0xcd, 0x0d, 0xa0, 0x54, 0xee, 0x36, 0xaf, 0x11, 0x67, 0x85, 0xa7, 0x06, 0xca, 0x3d, 0xe2, - 0x4c, 0x98, 0xca, 0xdd, 0x0e, 0x81, 0x69, 0xd7, 0x6c, 0x7e, 0x2f, 0x50, 0x61, 0xd3, 0xf8, 0xf4, - 0xc0, 0xae, 0xf5, 0xdf, 0x75, 0xa4, 0x5d, 0xb3, 0x03, 0x28, 0x7a, 0x04, 0xb2, 0xb8, 0x00, 0x16, - 0x6c, 0xfc, 0x9c, 0x19, 0xb8, 0xe5, 0x1f, 0x7d, 0xb8, 0x56, 0x99, 0xc0, 0xb3, 0x5a, 0x77, 0x0d, - 0x35, 0x16, 0x8c, 0x9e, 0xa2, 0x05, 0x37, 0xe7, 0x0a, 0x85, 0x81, 0xc6, 0x62, 0xc0, 0x35, 0x3f, - 0x6a, 0x2c, 0xb4, 0x9e, 0x2a, 0xaa, 0xc6, 0x86, 0x69, 0xb8, 0xcc, 0xb0, 0x2f, 0x0c, 0x54, 0xe3, - 0xee, 0x67, 0x09, 0xa8, 0x1a, 0x1b, 0x1c, 0x42, 0xd5, 0xd8, 0x15, 0x07, 0xc9, 0x42, 0x1c, 0x17, - 0x06, 0xaa, 0x71, 0xd4, 0x89, 0x33, 0x55, 0x63, 0x37, 0x0c, 0xa7, 0x6a, 0xcc, 0x0d, 0x44, 0x0f, - 0xdd, 0x97, 0x06, 0xaa, 0xf1, 0xc0, 0x1b, 0x1f, 0x54, 0x8d, 0xd5, 0xbe, 0x4a, 0xb4, 0x4a, 0x3d, - 0x43, 0xea, 0x11, 0x19, 0xe6, 0x9e, 0x55, 0xb8, 0x38, 0x70, 0xfd, 0xe9, 0x3d, 0x4a, 0xae, 0x30, - 0xb7, 0x50, 0xc0, 0xa8, 0x21, 0x63, 0x2e, 0xb2, 0xc2, 0x76, 0x99, 0x0b, 0x8b, 0x03, 0x0d, 0x59, - 0xdf, 0x66, 0x33, 0x35, 0x64, 0x07, 0x3e, 0x90, 0x2e, 0x64, 0x7c, 0xc7, 0xa7, 0xb0, 0x34, 0x62, - 0x67, 0x21, 0xb4, 0x90, 0x71, 0x0c, 0xb4, 0x02, 0x19, 0xea, 0x29, 0x1c, 0x31, 0x33, 0x74, 0x69, - 0xa0, 0x8f, 0xdb, 0x93, 0x1b, 0x5a, 0x99, 0xc0, 0xe9, 0x0f, 0x04, 0x88, 0x7e, 0x9e, 0x87, 0xdd, - 0x85, 0xe2, 0xc0, 0xcf, 0x77, 0x6d, 0xb4, 0xd0, 0xcf, 0x73, 0x0c, 0xa4, 0xc1, 0x69, 0x2e, 0x2b, - 0x71, 0x45, 0xc4, 0x16, 0x77, 0x31, 0x0a, 0x97, 0x19, 0xa9, 0x81, 0x41, 0x6c, 0xe4, 0x75, 0x95, - 0xca, 0x04, 0x9e, 0x57, 0xfb, 0x6b, 0xe9, 0x84, 0x17, 0x4b, 0x0f, 0x0f, 0x7d, 0x0b, 0x57, 0x06, - 0x4e, 0xf8, 0x88, 0xcd, 0x02, 0x3a, 0xe1, 0xd5, 0x10, 0x98, 0x2f, 0x40, 0xba, 0xe2, 0x38, 0xfc, - 0x4c, 0xe2, 0xea, 0x90, 0x05, 0xa8, 0x27, 0x00, 0xe6, 0x0b, 0x90, 0x5e, 0xe3, 0x98, 0x94, 0x90, - 0xd6, 0x24, 0xaa, 0x2d, 0xcc, 0xec, 0xb5, 0x81, 0x84, 0xfa, 0xae, 0xfa, 0x53, 0x42, 0x9a, 0x0f, - 0xa4, 0x0b, 0xb6, 0xed, 0xdd, 0x1c, 0x15, 0xde, 0xe6, 0xf5, 0x81, 0x0b, 0x76, 0xe4, 0x05, 0x57, - 0xba, 0x60, 0xdb, 0x5d, 0x15, 0xe8, 0x0b, 0x30, 0x2d, 0xae, 0xe1, 0x15, 0x6e, 0x0c, 0xf1, 0x81, - 0xc3, 0x51, 0x31, 0x9d, 0xd7, 0x02, 0x87, 0x5b, 0x59, 0x7e, 0x8b, 0x8f, 0x0f, 0xef, 0xe5, 0x21, - 0x56, 0xb6, 0x2f, 0x20, 0xe5, 0x56, 0x36, 0x00, 0x53, 0x2b, 0xcb, 0xf5, 0x54, 0xac, 0x75, 0x37, - 0x07, 0x5a, 0xd9, 0xfe, 0xac, 0x4e, 0x6a, 0x65, 0x3f, 0x08, 0xa0, 0x74, 0x64, 0x0e, 0x0f, 0xc4, - 0x0a, 0xaf, 0x0c, 0x1c, 0x59, 0x77, 0x40, 0x49, 0x47, 0x26, 0x70, 0xa8, 0xd8, 0x78, 0x06, 0x13, - 0xe7, 0xf4, 0xab, 0x03, 0xc5, 0xd6, 0x17, 0xb7, 0x54, 0xbc, 0x67, 0xa0, 0x38, 0x87, 0x7d, 0x43, - 0x65, 0x8b, 0x5b, 0x37, 0x82, 0x53, 0xaf, 0x0d, 0x37, 0x54, 0x51, 0x17, 0x8a, 0x7c, 0x43, 0xd5, - 0x55, 0x59, 0x9a, 0x16, 0xf9, 0x66, 0x0f, 0x52, 0xe9, 0x59, 0x59, 0x7e, 0x90, 0x4a, 0x9f, 0x95, - 0x0b, 0x0f, 0x52, 0xe9, 0x73, 0xf2, 0xc2, 0x83, 0x54, 0xfa, 0xbc, 0x7c, 0xa1, 0xf8, 0xef, 0x67, - 0x21, 0xe7, 0xc5, 0x31, 0x3c, 0x2a, 0xb8, 0x13, 0x8e, 0x0a, 0x2e, 0x0e, 0x8a, 0x0a, 0x44, 0xe4, - 0x23, 0xc2, 0x82, 0x3b, 0xe1, 0xb0, 0xe0, 0xe2, 0xa0, 0xb0, 0x20, 0xc0, 0xa1, 0x71, 0x41, 0x7d, - 0x50, 0x5c, 0xf0, 0xf2, 0x18, 0x71, 0x81, 0x4f, 0xaa, 0x37, 0x30, 0x58, 0xed, 0x0f, 0x0c, 0xae, - 0x0c, 0x0f, 0x0c, 0x7c, 0x52, 0xa1, 0xc8, 0xe0, 0xad, 0x9e, 0xc8, 0xe0, 0xd2, 0x90, 0xc8, 0xc0, - 0xc7, 0xf7, 0x42, 0x83, 0xf5, 0xc8, 0xd0, 0xe0, 0xda, 0xa8, 0xd0, 0xc0, 0xa7, 0xd3, 0x15, 0x1b, - 0xbc, 0xde, 0x15, 0x1b, 0x2c, 0x0e, 0x8c, 0x0d, 0x7c, 0x6c, 0x1e, 0x1c, 0xbc, 0x37, 0x38, 0x38, - 0x78, 0x65, 0xac, 0xe0, 0xc0, 0xa7, 0xd7, 0x1f, 0x1d, 0xd4, 0x07, 0x45, 0x07, 0x2f, 0x8f, 0x11, - 0x1d, 0x04, 0x82, 0xeb, 0x09, 0x0f, 0x2a, 0x51, 0xe1, 0xc1, 0xd5, 0x11, 0xe1, 0x81, 0x4f, 0x2d, - 0x1c, 0x1f, 0x54, 0xa2, 0xe2, 0x83, 0xab, 0x23, 0xe2, 0x83, 0x1e, 0x4a, 0x3c, 0x40, 0xd8, 0x8c, - 0x0e, 0x10, 0xae, 0x8f, 0x0c, 0x10, 0x7c, 0x6a, 0xdd, 0x11, 0xc2, 0xad, 0x50, 0x84, 0xf0, 0xd2, - 0x80, 0x08, 0xc1, 0x47, 0xa5, 0x21, 0xc2, 0x17, 0xfb, 0x42, 0x84, 0xe2, 0xb0, 0x10, 0xc1, 0xc7, - 0xf5, 0x63, 0x84, 0x77, 0x06, 0xc4, 0x08, 0x37, 0x46, 0xc7, 0x08, 0x3e, 0xb1, 0x9e, 0x20, 0x41, - 0x1d, 0x1a, 0x24, 0xbc, 0x36, 0x66, 0x90, 0xe0, 0x53, 0x8f, 0x8a, 0x12, 0x3e, 0xd7, 0x1d, 0x25, - 0x2c, 0x0d, 0x8e, 0x12, 0x7c, 0x32, 0x22, 0x4c, 0x58, 0x8f, 0x0c, 0x13, 0xae, 0x8d, 0x0a, 0x13, - 0x82, 0xb9, 0x17, 0x8e, 0x13, 0x36, 0xa3, 0xe3, 0x84, 0xeb, 0x23, 0xe3, 0x84, 0x40, 0xfc, 0x5d, - 0x81, 0xc2, 0x7a, 0x64, 0xa0, 0x70, 0x6d, 0x54, 0xa0, 0x10, 0x74, 0x2e, 0x1c, 0x29, 0xbc, 0x3b, - 0x30, 0x52, 0xb8, 0x39, 0x4e, 0xa4, 0xe0, 0x13, 0xed, 0x0b, 0x15, 0xde, 0x1b, 0x1c, 0x2a, 0xbc, - 0x32, 0x56, 0xa8, 0x10, 0x98, 0x8e, 0xbe, 0x58, 0xe1, 0x8b, 0x7d, 0xb1, 0x42, 0x71, 0x58, 0xac, - 0x10, 0xe8, 0xb3, 0x17, 0x2c, 0xa8, 0x43, 0x5d, 0xfb, 0xd7, 0xc6, 0x74, 0xed, 0x03, 0xe5, 0x8b, - 0xf0, 0xed, 0xd7, 0x22, 0x7c, 0xfb, 0x2b, 0xc3, 0x7d, 0xfb, 0x60, 0x09, 0x09, 0x9c, 0xfb, 0x4a, - 0x94, 0x73, 0x7f, 0x75, 0x84, 0x73, 0x1f, 0x58, 0xa1, 0x90, 0x77, 0xff, 0x56, 0x8f, 0x77, 0x7f, - 0x69, 0xe4, 0xc1, 0x77, 0xc8, 0xbd, 0x2f, 0xf5, 0xbb, 0xf7, 0x97, 0x87, 0xba, 0xf7, 0x3e, 0x85, - 0xc0, 0xbf, 0x7f, 0xab, 0xc7, 0xbf, 0xbf, 0x34, 0xc4, 0xbf, 0x0f, 0x3a, 0x20, 0x1c, 0x7c, 0x7d, - 0xb8, 0x83, 0xbf, 0x3c, 0xae, 0x83, 0xef, 0x13, 0x8e, 0xf4, 0xf0, 0x37, 0xa3, 0x3d, 0xfc, 0xeb, - 0x63, 0x9e, 0x81, 0xf5, 0xb9, 0xf8, 0x95, 0x28, 0x17, 0xff, 0xea, 0x08, 0x17, 0x3f, 0xbc, 0x86, - 0xf8, 0x3e, 0x7e, 0x25, 0xca, 0xc7, 0xbf, 0x3a, 0xc2, 0xc7, 0x0f, 0x28, 0x85, 0x9c, 0xfc, 0xfa, - 0x20, 0x27, 0xff, 0xe5, 0x31, 0x9c, 0xfc, 0x60, 0xdd, 0xed, 0xf1, 0xf2, 0xdf, 0xee, 0xf5, 0xf2, - 0x8b, 0xc3, 0xbc, 0xfc, 0x60, 0x46, 0x7a, 0x6e, 0xfe, 0x66, 0xb4, 0x9b, 0x7f, 0x7d, 0xa4, 0x9b, - 0x1f, 0x36, 0x92, 0x21, 0x3f, 0x7f, 0x3d, 0xd2, 0xcf, 0xbf, 0x36, 0xca, 0xcf, 0x0f, 0x8c, 0x64, - 0xd8, 0xd1, 0x7f, 0xbb, 0xd7, 0xd1, 0x2f, 0x0e, 0x73, 0xf4, 0x83, 0xc1, 0x79, 0x9e, 0x7e, 0x25, - 0xca, 0xd3, 0xbf, 0x3a, 0xc2, 0xd3, 0x0f, 0x84, 0x17, 0x72, 0xf5, 0xd5, 0xa1, 0xae, 0xfe, 0x6b, - 0x63, 0xba, 0xfa, 0x3d, 0x86, 0xeb, 0xf9, 0x7c, 0xfd, 0x07, 0xa9, 0xf4, 0x05, 0xf9, 0xa5, 0xe2, - 0x5f, 0x4e, 0xc2, 0x54, 0xc5, 0x4b, 0xd0, 0x08, 0x5d, 0x9b, 0x96, 0x5e, 0xe4, 0xda, 0x34, 0x5a, - 0xa5, 0xea, 0xc3, 0x26, 0xa1, 0xf0, 0xfe, 0x87, 0xbc, 0x41, 0xd0, 0x77, 0x44, 0xe6, 0xa1, 0xbe, - 0xc0, 0x9d, 0x10, 0xf4, 0x3a, 0xe4, 0x3a, 0x0e, 0xb1, 0x95, 0xb6, 0x6d, 0x58, 0xb6, 0xe1, 0xf2, - 0x04, 0x44, 0xa9, 0x24, 0x7f, 0x74, 0xbc, 0x38, 0xb3, 0xe3, 0x10, 0x7b, 0x5b, 0xc0, 0xf1, 0x4c, - 0x27, 0x54, 0xf2, 0x5e, 0x11, 0x9e, 0x1c, 0xff, 0x15, 0xe1, 0x77, 0x40, 0xb6, 0x89, 0xaa, 0x77, - 0x2d, 0x87, 0xfc, 0x26, 0x71, 0xf4, 0xca, 0xcd, 0x32, 0x6d, 0xbd, 0x96, 0xec, 0x46, 0xf1, 0xac, - 0xdd, 0x0d, 0x44, 0xb7, 0xe1, 0x74, 0x4b, 0x3d, 0xe4, 0x17, 0xe8, 0x3d, 0x0f, 0x83, 0x25, 0xaa, - 0xa4, 0x59, 0x3e, 0x15, 0x6a, 0xa9, 0x87, 0xec, 0x49, 0x62, 0x5e, 0xc5, 0x1e, 0x23, 0xbc, 0x0a, - 0x79, 0xdd, 0x70, 0x5c, 0xc3, 0xd4, 0xbc, 0xb7, 0x78, 0xf8, 0x95, 0xe3, 0x9c, 0x07, 0xe5, 0x6f, - 0xe2, 0xdc, 0x84, 0x39, 0x91, 0x63, 0x16, 0x3c, 0x52, 0xcc, 0x7c, 0xe9, 0x34, 0xed, 0x05, 0xad, - 0x08, 0xde, 0x94, 0x2e, 0xc3, 0x6c, 0x43, 0x75, 0xc9, 0x81, 0x7a, 0xa4, 0x78, 0xc9, 0xbe, 0x59, - 0xf6, 0x22, 0xc9, 0xf9, 0x93, 0xe3, 0xc5, 0xdc, 0x7d, 0x5e, 0xd5, 0x97, 0xf3, 0x9b, 0x6b, 0x84, - 0x2a, 0x74, 0xb4, 0x02, 0x33, 0xec, 0x9d, 0x35, 0x8b, 0x3f, 0xe7, 0x27, 0x3c, 0xe4, 0x41, 0x67, - 0x18, 0xe2, 0xd1, 0x3f, 0xcc, 0xde, 0x66, 0xf3, 0x5e, 0x00, 0xbc, 0x0e, 0xb3, 0xaa, 0x73, 0x64, - 0x6a, 0x8c, 0xc3, 0xc4, 0x74, 0x3a, 0x0e, 0x73, 0x91, 0xd3, 0x38, 0xcf, 0xc0, 0x65, 0x0f, 0x2a, - 0x9e, 0xf4, 0xf9, 0x2d, 0x09, 0x66, 0xba, 0x12, 0x2f, 0xdf, 0xea, 0x39, 0xaa, 0x3b, 0x17, 0xed, - 0x9e, 0x0f, 0xca, 0x51, 0x4a, 0x0b, 0x09, 0x78, 0x79, 0x13, 0x8b, 0x83, 0xdd, 0x3b, 0x16, 0x20, - 0x7b, 0x99, 0x26, 0x1e, 0xda, 0x9b, 0xa9, 0xdf, 0xf9, 0xee, 0xe2, 0x44, 0xf1, 0x67, 0x49, 0xc8, - 0x75, 0x27, 0x58, 0x56, 0x7b, 0xfa, 0x15, 0x65, 0x12, 0xbb, 0x30, 0x96, 0x87, 0xbc, 0xf4, 0x91, - 0x09, 0x5e, 0x67, 0xe3, 0xdd, 0x5c, 0x1a, 0x72, 0x20, 0x19, 0xee, 0x67, 0x80, 0xb8, 0xf0, 0xa3, - 0x84, 0x3f, 0xf3, 0x97, 0x61, 0x92, 0xbd, 0x8f, 0x2e, 0xba, 0x16, 0x75, 0x5b, 0x64, 0x8d, 0xd6, - 0x63, 0xde, 0x8c, 0x5a, 0x8a, 0xfa, 0x0b, 0x3d, 0xb0, 0xe0, 0x03, 0x5e, 0xe0, 0xfd, 0x6e, 0xf1, - 0xa8, 0xc7, 0xe4, 0xf3, 0x3d, 0xea, 0xc1, 0x0f, 0x1c, 0x9b, 0x4d, 0xa2, 0xb9, 0xe2, 0x99, 0x75, - 0xef, 0x95, 0xee, 0x2b, 0xbd, 0x24, 0xc4, 0xa3, 0xec, 0xcb, 0x58, 0x3c, 0xca, 0x1e, 0x4a, 0x65, - 0xc9, 0xfb, 0x24, 0xd8, 0xc4, 0xe2, 0x09, 0x4f, 0x42, 0xd4, 0x5f, 0x97, 0x40, 0x66, 0xd3, 0xe8, - 0x1e, 0x21, 0x7a, 0x2c, 0x5a, 0xe8, 0x65, 0xd9, 0x24, 0xc6, 0xce, 0xb2, 0x29, 0xaa, 0x90, 0xf7, - 0xfb, 0xc0, 0x9f, 0x2b, 0x1e, 0xf2, 0x3e, 0xc6, 0x0b, 0x5d, 0x3b, 0x2c, 0xfe, 0x9e, 0x04, 0xf3, - 0xfe, 0x37, 0x98, 0x9f, 0xcf, 0xf3, 0xe2, 0x5f, 0x20, 0xef, 0x11, 0xb3, 0xa7, 0xd8, 0x69, 0x9c, - 0xc7, 0xae, 0xa2, 0x8d, 0xa5, 0x41, 0x48, 0x9c, 0x7d, 0x83, 0x88, 0x1f, 0xf5, 0x7a, 0x8d, 0x3d, - 0xd2, 0xce, 0x7f, 0x3b, 0xc5, 0x7b, 0x21, 0x0e, 0x30, 0x65, 0xa5, 0xc3, 0x1c, 0x4b, 0xab, 0xbd, - 0x61, 0xb2, 0xc6, 0xc5, 0xbf, 0x91, 0xc2, 0x84, 0x9e, 0x52, 0xbf, 0xe1, 0x2e, 0x24, 0x9f, 0xaa, - 0xcd, 0x61, 0x47, 0xff, 0x5d, 0xac, 0xc7, 0xb4, 0x35, 0xba, 0x07, 0xfc, 0x3a, 0x0e, 0xbf, 0x4c, - 0x90, 0x18, 0x1c, 0xdc, 0xf5, 0xb3, 0x14, 0x87, 0x30, 0xd1, 0x1b, 0xde, 0x28, 0x92, 0xa3, 0x3f, - 0x1f, 0x9e, 0xa4, 0x6f, 0xa6, 0x3e, 0xfc, 0xee, 0xa2, 0x74, 0xb3, 0x06, 0xf3, 0x11, 0x8b, 0x10, - 0xca, 0x03, 0x94, 0xb7, 0x36, 0x6b, 0xd5, 0x5a, 0x7d, 0x6d, 0xb3, 0xee, 0xbd, 0x04, 0xbf, 0xb2, - 0xaa, 0xec, 0x6c, 0x96, 0xb7, 0x36, 0x36, 0xaa, 0xf5, 0xfa, 0xda, 0xaa, 0x2c, 0x21, 0x19, 0x66, - 0xaa, 0x9b, 0xa1, 0x76, 0xe2, 0x01, 0xf8, 0x9b, 0x3f, 0x07, 0x10, 0x3c, 0x94, 0x49, 0x69, 0xad, - 0xaf, 0x3d, 0x56, 0x1e, 0xad, 0x3c, 0xdc, 0x59, 0xab, 0xc9, 0x13, 0x08, 0x41, 0xbe, 0xb4, 0x52, - 0x2f, 0x57, 0x14, 0xbc, 0x56, 0xdb, 0xde, 0xda, 0xac, 0xad, 0xc9, 0x92, 0xc0, 0xdb, 0x80, 0x6c, - 0xe8, 0x6d, 0x0d, 0xda, 0x70, 0x7b, 0xa7, 0x56, 0x51, 0xea, 0xd5, 0x8d, 0xb5, 0x5a, 0x7d, 0x65, - 0x63, 0x5b, 0x9e, 0xa0, 0xc4, 0x18, 0x6c, 0xa5, 0xb4, 0x85, 0xeb, 0xb2, 0xe4, 0x97, 0xeb, 0x5b, - 0x3b, 0xe5, 0x8a, 0xff, 0x02, 0x7d, 0x2a, 0x9d, 0x94, 0x93, 0x37, 0x2d, 0x38, 0x1d, 0x79, 0x5d, - 0x09, 0x65, 0x61, 0x7a, 0xc7, 0x64, 0x2f, 0x35, 0xc8, 0x13, 0x28, 0x17, 0xba, 0xb1, 0x24, 0x4b, - 0x28, 0xcd, 0xef, 0xa5, 0xc8, 0x09, 0x34, 0x05, 0x89, 0xda, 0x5d, 0x39, 0x89, 0x66, 0x21, 0x1b, - 0xba, 0xf6, 0x23, 0xa7, 0x50, 0x46, 0xdc, 0x96, 0x90, 0x27, 0xd1, 0x4c, 0x70, 0x5d, 0x41, 0x9e, - 0xba, 0x79, 0x09, 0x42, 0xd9, 0xdc, 0x08, 0x60, 0xea, 0xa1, 0xea, 0x12, 0xc7, 0x95, 0x27, 0xd0, - 0x34, 0x24, 0x57, 0x9a, 0x4d, 0x59, 0xba, 0xf3, 0x03, 0x09, 0xd2, 0xde, 0xa3, 0x7a, 0xe8, 0x21, - 0x4c, 0xf2, 0xa0, 0x6d, 0x71, 0xb0, 0xb1, 0x67, 0xf6, 0x62, 0x61, 0x69, 0xd4, 0x6a, 0x50, 0x9c, - 0x40, 0xef, 0x8a, 0x7f, 0x01, 0x41, 0x25, 0x8d, 0x2e, 0x0f, 0xd3, 0x03, 0x8f, 0xea, 0x70, 0x65, - 0xa1, 0xba, 0x5d, 0x9c, 0xf8, 0x8c, 0x54, 0xba, 0xf4, 0xe1, 0xbf, 0x5c, 0x9c, 0xf8, 0xf0, 0xe4, - 0xa2, 0xf4, 0x93, 0x93, 0x8b, 0xd2, 0x3f, 0x9e, 0x5c, 0x94, 0xfe, 0xf9, 0xe4, 0xa2, 0xf4, 0xeb, - 0xff, 0x7a, 0x71, 0xe2, 0xbd, 0x69, 0x81, 0xb5, 0x3b, 0xc5, 0xfe, 0x0b, 0xc5, 0xdd, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0xe7, 0x79, 0x12, 0xc1, 0x8a, 0x63, 0x00, 0x00, + 0x96, 0xe1, 0x2a, 0xde, 0x0a, 0xcf, 0x53, 0x27, 0xf0, 0x0c, 0x05, 0x7a, 0x1e, 0x00, 0xaa, 0xc3, + 0x75, 0x62, 0xd2, 0xb9, 0xc0, 0xc6, 0xc9, 0x53, 0x27, 0x15, 0xc3, 0xe5, 0xf3, 0x49, 0xb1, 0xda, + 0xae, 0xd1, 0x32, 0x9e, 0xb1, 0xb3, 0x3f, 0xb1, 0x87, 0x7d, 0x99, 0x37, 0xa7, 0xe3, 0x63, 0xc9, + 0x94, 0x55, 0xd1, 0x76, 0x2b, 0xd4, 0x54, 0x68, 0xcd, 0x37, 0x25, 0xc8, 0x95, 0x3a, 0xcd, 0x27, + 0x5b, 0xed, 0x5a, 0xa7, 0xd5, 0x52, 0xed, 0x23, 0x3a, 0x41, 0xb8, 0x76, 0x1a, 0xcf, 0x08, 0x93, + 0x6e, 0x52, 0xa8, 0x9f, 0xf1, 0x8c, 0x50, 0xf5, 0x13, 0x19, 0x6c, 0x14, 0xce, 0xd3, 0xd3, 0x2e, + 0x43, 0x8e, 0xc5, 0x7c, 0x0a, 0x31, 0x5d, 0xdb, 0x20, 0x7c, 0x4b, 0x21, 0x89, 0x67, 0x18, 0x70, + 0x8d, 0xc3, 0xd0, 0x55, 0xc8, 0x3b, 0x47, 0x8e, 0x4b, 0x5a, 0x0a, 0xbf, 0x1b, 0xc5, 0x03, 0x95, + 0x24, 0xce, 0x71, 0x28, 0xe6, 0xc0, 0xe2, 0x9f, 0x27, 0x21, 0xef, 0x69, 0x5a, 0x9c, 0x2e, 0x5a, + 0x09, 0x26, 0xf7, 0x8c, 0x26, 0xf1, 0x8e, 0x50, 0x07, 0x2f, 0xd3, 0x1e, 0xa5, 0x65, 0xba, 0x72, + 0x7a, 0x5e, 0x34, 0x43, 0x8d, 0x43, 0xdb, 0x16, 0x7e, 0x2c, 0x41, 0x8a, 0xf9, 0x46, 0xb7, 0x21, + 0xc5, 0xa6, 0xbf, 0x34, 0xce, 0xf4, 0x67, 0x4d, 0xfd, 0x25, 0x3c, 0x11, 0x5a, 0xc2, 0xe9, 0x7a, + 0xb8, 0xaf, 0xbe, 0x7e, 0xfb, 0x0e, 0xd3, 0xb4, 0x19, 0x2c, 0x4a, 0xa8, 0x04, 0x69, 0xc2, 0xc6, + 0x43, 0x74, 0xe1, 0x99, 0x44, 0x4d, 0xae, 0x2e, 0xc1, 0x7b, 0xa6, 0xc6, 0xc3, 0x43, 0xe7, 0x20, + 0x49, 0x55, 0x78, 0x9a, 0x9f, 0xc4, 0x9d, 0x1c, 0x2f, 0x26, 0xa9, 0xf2, 0x52, 0x18, 0x77, 0xac, + 0x1f, 0xa4, 0xd2, 0x29, 0x79, 0xb2, 0xf8, 0x83, 0x14, 0xe4, 0xaa, 0xad, 0xb8, 0x8d, 0xc3, 0x4a, + 0xb7, 0xc0, 0xa2, 0x1c, 0xc7, 0xae, 0x8f, 0x46, 0xc8, 0xab, 0xcb, 0xcc, 0x26, 0x9f, 0xcf, 0xcc, + 0x56, 0xa9, 0x53, 0x20, 0x2e, 0x86, 0xd1, 0xef, 0xbf, 0x32, 0xf2, 0xfb, 0x75, 0x3a, 0xe3, 0x30, + 0xc5, 0xf1, 0x0e, 0xba, 0x38, 0x01, 0xf4, 0x36, 0xf3, 0x3d, 0xb8, 0xd2, 0x4c, 0x8d, 0xaf, 0x34, + 0xd3, 0xc4, 0xd4, 0x99, 0xca, 0x1c, 0x0a, 0x8d, 0xf9, 0x1c, 0x24, 0x75, 0x63, 0x18, 0x4b, 0xa3, + 0x4c, 0x25, 0x45, 0x19, 0xa1, 0x38, 0xa9, 0xb0, 0xe2, 0x84, 0x03, 0xa7, 0x85, 0x2d, 0x80, 0x60, + 0x54, 0x68, 0x09, 0xa6, 0xac, 0xa6, 0x4e, 0x9d, 0x45, 0x89, 0x39, 0x8b, 0x99, 0x93, 0xe3, 0xc5, + 0xc9, 0xad, 0xa6, 0x5e, 0x5d, 0xc5, 0x93, 0x56, 0x53, 0xaf, 0xea, 0xec, 0x3e, 0x1d, 0x39, 0x50, + 0xd8, 0x15, 0x46, 0x16, 0x04, 0xe1, 0x69, 0x93, 0x1c, 0xac, 0x12, 0x47, 0x0b, 0x2f, 0xac, 0x42, + 0x6d, 0xfe, 0x48, 0x82, 0xbc, 0xc7, 0xc1, 0x78, 0x67, 0x7a, 0xda, 0x68, 0x09, 0xcd, 0x4f, 0x3e, + 0x9f, 0xe6, 0x7b, 0x78, 0x22, 0xeb, 0xff, 0x1b, 0x12, 0xcc, 0xf3, 0xd4, 0x29, 0x4d, 0x75, 0xa9, + 0x99, 0x8f, 0x51, 0xbd, 0x5f, 0x06, 0xd9, 0x56, 0x4d, 0xdd, 0x6a, 0x19, 0xcf, 0x08, 0xdf, 0xca, + 0x70, 0xc4, 0x0e, 0xfe, 0xac, 0x0f, 0x67, 0xb1, 0xba, 0xb7, 0x13, 0xf3, 0x6f, 0x12, 0x9c, 0xea, + 0xee, 0x4c, 0x9c, 0x4c, 0x5b, 0x87, 0x29, 0xb6, 0x0b, 0xe7, 0x4d, 0xb7, 0xd7, 0x22, 0x88, 0x44, + 0x7d, 0x9d, 0x5f, 0x7f, 0xf4, 0x15, 0x9e, 0x91, 0x58, 0xf8, 0x12, 0x4c, 0x32, 0xf0, 0x0b, 0xd8, + 0x38, 0xc1, 0xf9, 0x0f, 0x60, 0x6e, 0x45, 0xd7, 0x6b, 0x35, 0xa1, 0x7d, 0xf1, 0xb1, 0xdd, 0xf3, + 0x9e, 0x12, 0x51, 0xde, 0x53, 0xf8, 0x93, 0x71, 0x7a, 0x4f, 0x6d, 0xc8, 0x8b, 0x8c, 0xc6, 0x98, + 0xb7, 0x5d, 0x0f, 0xa8, 0xbb, 0x27, 0xd4, 0x86, 0x17, 0x82, 0xcb, 0x54, 0xfe, 0x17, 0xe3, 0x1c, + 0x49, 0x07, 0xe6, 0x3d, 0xba, 0x71, 0x9f, 0x70, 0x0c, 0x1b, 0x0e, 0xdb, 0xbe, 0x0a, 0x7f, 0x36, + 0xce, 0x31, 0x7d, 0x57, 0x82, 0x7c, 0xad, 0xb3, 0xcb, 0x6f, 0xd4, 0xc6, 0x37, 0x9e, 0xfb, 0x00, + 0x4d, 0xb2, 0x27, 0x6e, 0xbb, 0x08, 0xff, 0x76, 0xfc, 0x0b, 0xdd, 0x19, 0x8a, 0xcb, 0xaa, 0x04, + 0x0b, 0x7e, 0x90, 0x80, 0x59, 0xbf, 0x97, 0x71, 0xce, 0xfc, 0x5f, 0x04, 0xe6, 0xbc, 0x2a, 0x8e, + 0xab, 0xba, 0x8e, 0x30, 0x98, 0xaf, 0x3e, 0x4f, 0xb6, 0x78, 0x69, 0x4e, 0x64, 0xfa, 0x64, 0x7c, + 0x10, 0xce, 0x50, 0x92, 0xec, 0x27, 0x5a, 0x86, 0x79, 0x66, 0xde, 0x14, 0xb5, 0xdd, 0x6e, 0x1a, + 0x44, 0x57, 0xf8, 0x59, 0x41, 0x8a, 0x9d, 0x15, 0xcc, 0xb1, 0xaa, 0x15, 0x5e, 0x53, 0x65, 0xe7, + 0x06, 0xf7, 0x60, 0x66, 0xcf, 0x26, 0xe4, 0x19, 0x51, 0x98, 0xd3, 0xf4, 0x3c, 0x27, 0x48, 0x59, + 0x8e, 0x58, 0xa3, 0x78, 0xc2, 0x90, 0xbc, 0x0f, 0x73, 0x8c, 0x8b, 0x71, 0x27, 0xf9, 0x0b, 0xa9, + 0xfc, 0x54, 0x02, 0x14, 0xa6, 0xff, 0xc9, 0x09, 0x26, 0x11, 0xbb, 0x60, 0x5e, 0x05, 0xc4, 0xd3, + 0x08, 0x1c, 0xa5, 0x4d, 0x6c, 0xc5, 0x21, 0x9a, 0x25, 0x6e, 0x71, 0x4a, 0x58, 0x16, 0x35, 0xdb, + 0xc4, 0xae, 0x31, 0x78, 0xf1, 0x37, 0x0b, 0x30, 0x23, 0x78, 0xb2, 0x63, 0xd2, 0x58, 0xfd, 0x36, + 0x24, 0x1b, 0x62, 0x33, 0x24, 0x1b, 0x19, 0x2e, 0x05, 0x37, 0xc9, 0x2b, 0x13, 0x98, 0xb6, 0xa5, + 0x28, 0xed, 0x8e, 0x1b, 0x91, 0xb8, 0x15, 0xe4, 0xe7, 0x84, 0x51, 0xda, 0x1d, 0x17, 0xd5, 0x60, + 0x56, 0x0b, 0x6e, 0xd2, 0x2a, 0x14, 0x3d, 0x39, 0x30, 0xe7, 0x3d, 0xf2, 0x3e, 0x72, 0x65, 0x02, + 0xe7, 0xb5, 0xae, 0x0a, 0x54, 0x0e, 0x5f, 0xdd, 0x4c, 0x0d, 0xdc, 0xfa, 0xeb, 0xbd, 0x36, 0x5a, + 0x99, 0x08, 0xdd, 0xf0, 0x44, 0x6f, 0xc2, 0x94, 0xce, 0xae, 0x04, 0x0a, 0x0d, 0x8d, 0x52, 0xa2, + 0xae, 0x5b, 0x98, 0x95, 0x09, 0x2c, 0x30, 0xd0, 0x03, 0x98, 0xe1, 0xbf, 0x84, 0x75, 0x98, 0x1a, + 0xb8, 0x37, 0xda, 0x7f, 0x29, 0xb2, 0x32, 0x81, 0xb3, 0x7a, 0x00, 0x45, 0x9f, 0x85, 0x94, 0xa3, + 0xa9, 0xa6, 0xd8, 0x31, 0xbc, 0x38, 0xe0, 0xea, 0x53, 0x80, 0xcc, 0x5a, 0xa3, 0xc7, 0x30, 0xc7, + 0xf6, 0x47, 0x14, 0x37, 0x38, 0xe3, 0x65, 0xf9, 0xf7, 0xdd, 0xc7, 0xca, 0xbe, 0xb7, 0x14, 0x7d, + 0xed, 0xa3, 0x32, 0x81, 0xe5, 0xdd, 0x9e, 0x2a, 0x2a, 0x32, 0xe6, 0xee, 0x86, 0x08, 0x67, 0x06, + 0x8a, 0x2c, 0xf2, 0x22, 0x06, 0x15, 0x19, 0xe9, 0xaa, 0x40, 0xf7, 0x21, 0xab, 0x52, 0xf7, 0x43, + 0x61, 0xc9, 0xed, 0x05, 0x18, 0xb8, 0xf5, 0xdb, 0x97, 0x6f, 0x5f, 0x61, 0x77, 0x58, 0x3c, 0x60, + 0x40, 0xa8, 0x45, 0xec, 0x06, 0x29, 0x64, 0x87, 0x13, 0x0a, 0x1f, 0x0c, 0xfb, 0x84, 0x18, 0x10, + 0x6d, 0x40, 0x6e, 0xdf, 0xcb, 0x26, 0x65, 0x87, 0xf2, 0x33, 0x03, 0xf7, 0x7f, 0x23, 0xb2, 0x61, + 0x2b, 0x13, 0x78, 0x66, 0x3f, 0x04, 0x46, 0xcb, 0x90, 0x68, 0x68, 0x85, 0x1c, 0xa3, 0x71, 0x61, + 0x58, 0xae, 0x67, 0x65, 0x02, 0x27, 0x1a, 0x1a, 0x0d, 0x2a, 0x78, 0x52, 0xda, 0xa1, 0x59, 0xc8, + 0x0f, 0x34, 0x32, 0xdd, 0xa9, 0x88, 0x95, 0x09, 0xcc, 0x12, 0xf6, 0xe8, 0xf7, 0xb6, 0x21, 0x6f, + 0xf3, 0x93, 0x75, 0x2f, 0x7f, 0x44, 0x66, 0x54, 0xae, 0x47, 0x9b, 0xaa, 0xbe, 0x14, 0x92, 0xca, + 0x04, 0xce, 0xd9, 0x61, 0x38, 0xfa, 0x2a, 0x9c, 0xea, 0xa6, 0x28, 0x94, 0x7b, 0xae, 0xcf, 0x72, + 0x45, 0xd3, 0xed, 0xd6, 0x71, 0x64, 0xf7, 0x55, 0xa2, 0x37, 0x60, 0x92, 0x4b, 0x0d, 0x31, 0x92, + 0x8b, 0x51, 0x7b, 0x34, 0xdd, 0x02, 0xe3, 0xed, 0xe9, 0x7c, 0x73, 0xc5, 0x91, 0xb2, 0xd2, 0xb4, + 0x1a, 0x85, 0xf9, 0x81, 0xf3, 0xad, 0xff, 0x88, 0x9c, 0xce, 0x37, 0x37, 0x80, 0x52, 0xb9, 0xdb, + 0xbc, 0x46, 0x9c, 0x40, 0x9e, 0x1a, 0x28, 0xf7, 0x88, 0x93, 0x66, 0x2a, 0x77, 0x3b, 0x04, 0xa6, + 0x5d, 0xb3, 0xf9, 0x6d, 0x43, 0x85, 0x4d, 0xe3, 0xd3, 0x03, 0xbb, 0xd6, 0x7f, 0x83, 0x92, 0x76, + 0xcd, 0x0e, 0xa0, 0xe8, 0x11, 0xc8, 0xe2, 0x5a, 0x59, 0xb0, 0x9d, 0x74, 0x66, 0xe0, 0x41, 0x42, + 0xf4, 0x91, 0x5d, 0x65, 0x02, 0xcf, 0x6a, 0xdd, 0x35, 0xd4, 0x58, 0x30, 0x7a, 0x8a, 0x16, 0xdc, + 0xc7, 0x2b, 0x14, 0x06, 0x1a, 0x8b, 0x01, 0x97, 0x07, 0xa9, 0xb1, 0xd0, 0x7a, 0xaa, 0xa8, 0x1a, + 0x1b, 0xa6, 0xe1, 0x32, 0xc3, 0xbe, 0x30, 0x50, 0x8d, 0xbb, 0x1f, 0x3b, 0xa0, 0x6a, 0x6c, 0x70, + 0x08, 0x55, 0x63, 0x57, 0x1c, 0x4f, 0x0b, 0x71, 0x5c, 0x18, 0xa8, 0xc6, 0x51, 0xe7, 0xd8, 0x54, + 0x8d, 0xdd, 0x30, 0x9c, 0xaa, 0x31, 0x37, 0x10, 0x3d, 0x74, 0x5f, 0x1a, 0xa8, 0xc6, 0x03, 0xef, + 0x91, 0x50, 0x35, 0x56, 0xfb, 0x2a, 0xd1, 0x2a, 0xf5, 0x0c, 0xa9, 0x47, 0x64, 0x98, 0x7b, 0x56, + 0xe1, 0xe2, 0xc0, 0xf5, 0xa7, 0xf7, 0x80, 0xba, 0xc2, 0xdc, 0x42, 0x01, 0xa3, 0x86, 0x8c, 0xb9, + 0xc8, 0x0a, 0xdb, 0xbb, 0x2e, 0x2c, 0x0e, 0x34, 0x64, 0x7d, 0x5b, 0xd8, 0xd4, 0x90, 0x1d, 0xf8, + 0x40, 0xba, 0x90, 0xf1, 0x1d, 0x9f, 0xc2, 0xd2, 0x88, 0x9d, 0x85, 0xd0, 0x42, 0xc6, 0x31, 0xd0, + 0x0a, 0x64, 0xa8, 0xa7, 0x70, 0xc4, 0xcc, 0xd0, 0xa5, 0x81, 0x3e, 0x6e, 0x4f, 0xc6, 0x69, 0x65, + 0x02, 0xa7, 0x3f, 0x10, 0x20, 0xfa, 0x79, 0x1e, 0x76, 0x17, 0x8a, 0x03, 0x3f, 0xdf, 0xb5, 0xd1, + 0x42, 0x3f, 0xcf, 0x31, 0x90, 0x06, 0xa7, 0xb9, 0xac, 0xc4, 0xc5, 0x13, 0x5b, 0xdc, 0xf0, 0x28, + 0x5c, 0x66, 0xa4, 0x06, 0x06, 0xb1, 0x91, 0x97, 0x60, 0x2a, 0x13, 0x78, 0x5e, 0xed, 0xaf, 0xa5, + 0x13, 0x5e, 0x2c, 0x3d, 0x3c, 0xf4, 0x2d, 0x5c, 0x19, 0x38, 0xe1, 0x23, 0x36, 0x0b, 0xe8, 0x84, + 0x57, 0x43, 0x60, 0xbe, 0x00, 0xe9, 0x8a, 0xe3, 0xf0, 0x93, 0x8e, 0xab, 0x43, 0x16, 0xa0, 0x9e, + 0x00, 0x98, 0x2f, 0x40, 0x7a, 0x8d, 0x63, 0x52, 0x42, 0x5a, 0x93, 0xa8, 0xb6, 0x30, 0xb3, 0xd7, + 0x06, 0x12, 0xea, 0x7b, 0x40, 0x80, 0x12, 0xd2, 0x7c, 0x20, 0x5d, 0xb0, 0x6d, 0xef, 0x3e, 0xaa, + 0xf0, 0x36, 0xaf, 0x0f, 0x5c, 0xb0, 0x23, 0xaf, 0xcd, 0xd2, 0x05, 0xdb, 0xee, 0xaa, 0x40, 0x5f, + 0x80, 0x69, 0x71, 0xb9, 0xaf, 0x70, 0x63, 0x88, 0x0f, 0x1c, 0x8e, 0x8a, 0xe9, 0xbc, 0x16, 0x38, + 0xdc, 0xca, 0xf2, 0xbb, 0x81, 0x7c, 0x78, 0x2f, 0x0f, 0xb1, 0xb2, 0x7d, 0x01, 0x29, 0xb7, 0xb2, + 0x01, 0x98, 0x5a, 0x59, 0xae, 0xa7, 0x62, 0xad, 0xbb, 0x39, 0xd0, 0xca, 0xf6, 0xe7, 0x8a, 0x52, + 0x2b, 0xfb, 0x41, 0x00, 0xa5, 0x23, 0x73, 0x78, 0x20, 0x56, 0x78, 0x65, 0xe0, 0xc8, 0xba, 0x03, + 0x4a, 0x3a, 0x32, 0x81, 0x43, 0xc5, 0xc6, 0xf3, 0xa2, 0x38, 0xa7, 0x5f, 0x1d, 0x28, 0xb6, 0xbe, + 0xb8, 0xa5, 0xe2, 0x3d, 0x2e, 0xc5, 0x39, 0xec, 0x1b, 0x2a, 0x5b, 0xdc, 0xe5, 0x11, 0x9c, 0x7a, + 0x6d, 0xb8, 0xa1, 0x8a, 0xba, 0xa6, 0xe4, 0x1b, 0xaa, 0xae, 0xca, 0xd2, 0xb4, 0xc8, 0x62, 0x7b, + 0x90, 0x4a, 0xcf, 0xca, 0xf2, 0x83, 0x54, 0xfa, 0xac, 0x5c, 0x78, 0x90, 0x4a, 0x9f, 0x93, 0x17, + 0x1e, 0xa4, 0xd2, 0xe7, 0xe5, 0x0b, 0xc5, 0x7f, 0x3f, 0x0b, 0x39, 0x2f, 0x8e, 0xe1, 0x51, 0xc1, + 0x9d, 0x70, 0x54, 0x70, 0x71, 0x50, 0x54, 0x20, 0x22, 0x1f, 0x11, 0x16, 0xdc, 0x09, 0x87, 0x05, + 0x17, 0x07, 0x85, 0x05, 0x01, 0x0e, 0x8d, 0x0b, 0xea, 0x83, 0xe2, 0x82, 0x97, 0xc7, 0x88, 0x0b, + 0x7c, 0x52, 0xbd, 0x81, 0xc1, 0x6a, 0x7f, 0x60, 0x70, 0x65, 0x78, 0x60, 0xe0, 0x93, 0x0a, 0x45, + 0x06, 0x6f, 0xf5, 0x44, 0x06, 0x97, 0x86, 0x44, 0x06, 0x3e, 0xbe, 0x17, 0x1a, 0xac, 0x47, 0x86, + 0x06, 0xd7, 0x46, 0x85, 0x06, 0x3e, 0x9d, 0xae, 0xd8, 0xe0, 0xf5, 0xae, 0xd8, 0x60, 0x71, 0x60, + 0x6c, 0xe0, 0x63, 0xf3, 0xe0, 0xe0, 0xbd, 0xc1, 0xc1, 0xc1, 0x2b, 0x63, 0x05, 0x07, 0x3e, 0xbd, + 0xfe, 0xe8, 0xa0, 0x3e, 0x28, 0x3a, 0x78, 0x79, 0x8c, 0xe8, 0x20, 0x10, 0x5c, 0x4f, 0x78, 0x50, + 0x89, 0x0a, 0x0f, 0xae, 0x8e, 0x08, 0x0f, 0x7c, 0x6a, 0xe1, 0xf8, 0xa0, 0x12, 0x15, 0x1f, 0x5c, + 0x1d, 0x11, 0x1f, 0xf4, 0x50, 0xe2, 0x01, 0xc2, 0x66, 0x74, 0x80, 0x70, 0x7d, 0x64, 0x80, 0xe0, + 0x53, 0xeb, 0x8e, 0x10, 0x6e, 0x85, 0x22, 0x84, 0x97, 0x06, 0x44, 0x08, 0x3e, 0x2a, 0x0d, 0x11, + 0xbe, 0xd8, 0x17, 0x22, 0x14, 0x87, 0x85, 0x08, 0x3e, 0xae, 0x1f, 0x23, 0xbc, 0x33, 0x20, 0x46, + 0xb8, 0x31, 0x3a, 0x46, 0xf0, 0x89, 0xf5, 0x04, 0x09, 0xea, 0xd0, 0x20, 0xe1, 0xb5, 0x31, 0x83, + 0x04, 0x9f, 0x7a, 0x54, 0x94, 0xf0, 0xb9, 0xee, 0x28, 0x61, 0x69, 0x70, 0x94, 0xe0, 0x93, 0x11, + 0x61, 0xc2, 0x7a, 0x64, 0x98, 0x70, 0x6d, 0x54, 0x98, 0x10, 0xcc, 0xbd, 0x70, 0x9c, 0xb0, 0x19, + 0x1d, 0x27, 0x5c, 0x1f, 0x19, 0x27, 0x04, 0xe2, 0xef, 0x0a, 0x14, 0xd6, 0x23, 0x03, 0x85, 0x6b, + 0xa3, 0x02, 0x85, 0xa0, 0x73, 0xe1, 0x48, 0xe1, 0xdd, 0x81, 0x91, 0xc2, 0xcd, 0x71, 0x22, 0x05, + 0x9f, 0x68, 0x5f, 0xa8, 0xf0, 0xde, 0xe0, 0x50, 0xe1, 0x95, 0xb1, 0x42, 0x85, 0xc0, 0x74, 0xf4, + 0xc5, 0x0a, 0x5f, 0xec, 0x8b, 0x15, 0x8a, 0xc3, 0x62, 0x85, 0x40, 0x9f, 0xbd, 0x60, 0x41, 0x1d, + 0xea, 0xda, 0xbf, 0x36, 0xa6, 0x6b, 0x1f, 0x28, 0x5f, 0x84, 0x6f, 0xbf, 0x16, 0xe1, 0xdb, 0x5f, + 0x19, 0xee, 0xdb, 0x07, 0x4b, 0x48, 0xe0, 0xdc, 0x57, 0xa2, 0x9c, 0xfb, 0xab, 0x23, 0x9c, 0xfb, + 0xc0, 0x0a, 0x85, 0xbc, 0xfb, 0xb7, 0x7a, 0xbc, 0xfb, 0x4b, 0x23, 0x0f, 0xbe, 0x43, 0xee, 0x7d, + 0xa9, 0xdf, 0xbd, 0xbf, 0x3c, 0xd4, 0xbd, 0xf7, 0x29, 0x04, 0xfe, 0xfd, 0x5b, 0x3d, 0xfe, 0xfd, + 0xa5, 0x21, 0xfe, 0x7d, 0xd0, 0x01, 0xe1, 0xe0, 0xeb, 0xc3, 0x1d, 0xfc, 0xe5, 0x71, 0x1d, 0x7c, + 0x9f, 0x70, 0xa4, 0x87, 0xbf, 0x19, 0xed, 0xe1, 0x5f, 0x1f, 0xf3, 0x0c, 0xac, 0xcf, 0xc5, 0xaf, + 0x44, 0xb9, 0xf8, 0x57, 0x47, 0xb8, 0xf8, 0xe1, 0x35, 0xc4, 0xf7, 0xf1, 0x2b, 0x51, 0x3e, 0xfe, + 0xd5, 0x11, 0x3e, 0x7e, 0x40, 0x29, 0xe4, 0xe4, 0xd7, 0x07, 0x39, 0xf9, 0x2f, 0x8f, 0xe1, 0xe4, + 0x07, 0xeb, 0x6e, 0x8f, 0x97, 0xff, 0x76, 0xaf, 0x97, 0x5f, 0x1c, 0xe6, 0xe5, 0x07, 0x33, 0xd2, + 0x73, 0xf3, 0x37, 0xa3, 0xdd, 0xfc, 0xeb, 0x23, 0xdd, 0xfc, 0xb0, 0x91, 0x0c, 0xf9, 0xf9, 0xeb, + 0x91, 0x7e, 0xfe, 0xb5, 0x51, 0x7e, 0x7e, 0x60, 0x24, 0xc3, 0x8e, 0xfe, 0xdb, 0xbd, 0x8e, 0x7e, + 0x71, 0x98, 0xa3, 0x1f, 0x0c, 0xce, 0xf3, 0xf4, 0x2b, 0x51, 0x9e, 0xfe, 0xd5, 0x11, 0x9e, 0x7e, + 0x20, 0xbc, 0x90, 0xab, 0xaf, 0x0e, 0x75, 0xf5, 0x5f, 0x1b, 0xd3, 0xd5, 0xef, 0x31, 0x5c, 0xcf, + 0xe7, 0xeb, 0x3f, 0x48, 0xa5, 0x2f, 0xc8, 0x2f, 0x15, 0xff, 0x6a, 0x12, 0xa6, 0x2a, 0x5e, 0x82, + 0x46, 0xe8, 0x32, 0xb6, 0xf4, 0x22, 0x97, 0xb1, 0xd1, 0x2a, 0x55, 0x1f, 0x36, 0x09, 0x85, 0xf7, + 0x3f, 0xe4, 0x65, 0x83, 0xbe, 0x23, 0x32, 0x0f, 0xf5, 0x05, 0x6e, 0x9a, 0xa0, 0xd7, 0x21, 0xd7, + 0x71, 0x88, 0xad, 0xb4, 0x6d, 0xc3, 0xb2, 0x0d, 0x97, 0xa7, 0x35, 0x4a, 0x25, 0xf9, 0xa3, 0xe3, + 0xc5, 0x99, 0x1d, 0x87, 0xd8, 0xdb, 0x02, 0x8e, 0x67, 0x3a, 0xa1, 0x92, 0xf7, 0x36, 0xf1, 0xe4, + 0xf8, 0x6f, 0x13, 0xbf, 0x03, 0xb2, 0x4d, 0x54, 0xbd, 0x6b, 0x39, 0xe4, 0xf7, 0x93, 0xa3, 0x57, + 0x6e, 0x96, 0xbf, 0xeb, 0xb5, 0x64, 0xf7, 0x94, 0x67, 0xed, 0x6e, 0x20, 0xba, 0x0d, 0xa7, 0x5b, + 0xea, 0x21, 0xbf, 0x96, 0xef, 0x79, 0x18, 0x2c, 0x51, 0x25, 0xcd, 0xf2, 0xa9, 0x50, 0x4b, 0x3d, + 0x64, 0x0f, 0x1d, 0xf3, 0x2a, 0xf6, 0xc4, 0xe1, 0x55, 0xc8, 0xeb, 0x86, 0xe3, 0x1a, 0xa6, 0xe6, + 0xbd, 0xf0, 0xc3, 0x2f, 0x32, 0xe7, 0x3c, 0x28, 0x7f, 0x69, 0xe7, 0x26, 0xcc, 0x89, 0xcc, 0xb5, + 0xe0, 0xe9, 0x63, 0xe6, 0x4b, 0xa7, 0x69, 0x2f, 0x68, 0x45, 0xf0, 0x52, 0x75, 0x19, 0x66, 0x1b, + 0xaa, 0x4b, 0x0e, 0xd4, 0x23, 0xc5, 0x4b, 0x21, 0xce, 0xb2, 0x77, 0x4e, 0xce, 0x9f, 0x1c, 0x2f, + 0xe6, 0xee, 0xf3, 0xaa, 0xbe, 0x4c, 0xe2, 0x5c, 0x23, 0x54, 0xa1, 0xa3, 0x15, 0x98, 0x61, 0xaf, + 0xb7, 0x59, 0xfc, 0x91, 0x40, 0xe1, 0x21, 0x0f, 0x3a, 0xc3, 0x10, 0x4f, 0x09, 0x62, 0xf6, 0xe2, + 0x9b, 0xf7, 0xae, 0xe0, 0x75, 0x98, 0x55, 0x9d, 0x23, 0x53, 0x63, 0x1c, 0x26, 0xa6, 0xd3, 0x71, + 0x98, 0x8b, 0x9c, 0xc6, 0x79, 0x06, 0x2e, 0x7b, 0x50, 0xf1, 0x50, 0xd0, 0x6f, 0x4b, 0x30, 0xd3, + 0x95, 0xce, 0xf9, 0x56, 0xcf, 0x51, 0xdd, 0xb9, 0x68, 0xf7, 0x7c, 0x50, 0x8e, 0x52, 0x5a, 0x48, + 0xc0, 0xcb, 0x9b, 0x58, 0x1c, 0xec, 0xde, 0xb1, 0x00, 0xd9, 0xcb, 0x34, 0xf1, 0xd0, 0xde, 0x4c, + 0xfd, 0xee, 0x77, 0x16, 0x27, 0x8a, 0x3f, 0x4b, 0x42, 0xae, 0x3b, 0x6d, 0xb3, 0xda, 0xd3, 0xaf, + 0x28, 0x93, 0xd8, 0x85, 0xb1, 0x3c, 0xe4, 0xfd, 0x90, 0x4c, 0xf0, 0xe6, 0x1b, 0xef, 0xe6, 0xd2, + 0x90, 0x03, 0xc9, 0x70, 0x3f, 0x03, 0xc4, 0x85, 0x1f, 0x26, 0xfc, 0x99, 0xbf, 0x0c, 0x93, 0xec, + 0xd5, 0x75, 0xd1, 0xb5, 0xa8, 0x3b, 0x28, 0x6b, 0xb4, 0x1e, 0xf3, 0x66, 0xd4, 0x52, 0xd4, 0x5f, + 0xe8, 0xd9, 0x06, 0x1f, 0xf0, 0x02, 0xaf, 0x82, 0x8b, 0xa7, 0x42, 0x26, 0x9f, 0xef, 0xa9, 0x10, + 0x7e, 0xe0, 0xd8, 0x6c, 0x12, 0xcd, 0x15, 0x8f, 0xb7, 0x7b, 0x6f, 0x7f, 0x5f, 0xe9, 0x25, 0x21, + 0x9e, 0x7a, 0x5f, 0xc6, 0xe2, 0xa9, 0xf7, 0x50, 0x2a, 0x4b, 0xde, 0x27, 0xc1, 0x26, 0x16, 0x4f, + 0x78, 0x12, 0xa2, 0xfe, 0x55, 0x09, 0x64, 0x36, 0x8d, 0xee, 0x11, 0xa2, 0xc7, 0xa2, 0x85, 0x5e, + 0x96, 0x4d, 0x62, 0xec, 0x2c, 0x9b, 0xa2, 0x0a, 0x79, 0xbf, 0x0f, 0xfc, 0x11, 0xe4, 0x21, 0xaf, + 0x6e, 0xbc, 0xd0, 0x65, 0xc6, 0xe2, 0xef, 0x4b, 0x30, 0xef, 0x7f, 0x83, 0xf9, 0xf9, 0x3c, 0xdb, + 0xfe, 0x05, 0xf2, 0x1e, 0x31, 0x7b, 0xe0, 0x9d, 0xc6, 0x79, 0xec, 0x82, 0xdb, 0x58, 0x1a, 0x84, + 0xc4, 0xd9, 0x37, 0x88, 0xf8, 0x51, 0xaf, 0xd7, 0xd8, 0xd3, 0xef, 0xfc, 0xb7, 0x53, 0xbc, 0x17, + 0xe2, 0x00, 0x53, 0x56, 0x3a, 0xcc, 0xb1, 0xb4, 0xda, 0x1b, 0x26, 0x6b, 0x5c, 0xfc, 0x5b, 0x29, + 0x4c, 0xe8, 0x29, 0xf5, 0x1b, 0xee, 0x42, 0xf2, 0xa9, 0xda, 0x1c, 0x76, 0xf4, 0xdf, 0xc5, 0x7a, + 0x4c, 0x5b, 0xa3, 0x7b, 0xc0, 0x2f, 0xf9, 0xf0, 0x2b, 0x0a, 0x89, 0xc1, 0xc1, 0x5d, 0x3f, 0x4b, + 0x71, 0x08, 0x13, 0xbd, 0xe1, 0x8d, 0x22, 0x39, 0xfa, 0xf3, 0xe1, 0x49, 0xfa, 0x66, 0xea, 0xc3, + 0xef, 0x2c, 0x4a, 0x37, 0x6b, 0x30, 0x1f, 0xb1, 0x08, 0xa1, 0x3c, 0x40, 0x79, 0x6b, 0xb3, 0x56, + 0xad, 0xd5, 0xd7, 0x36, 0xeb, 0xde, 0xfb, 0xf2, 0x2b, 0xab, 0xca, 0xce, 0x66, 0x79, 0x6b, 0x63, + 0xa3, 0x5a, 0xaf, 0xaf, 0xad, 0xca, 0x12, 0x92, 0x61, 0xa6, 0xba, 0x19, 0x6a, 0x27, 0x9e, 0x95, + 0xbf, 0xf9, 0x73, 0x00, 0xc1, 0xf3, 0x9b, 0x94, 0xd6, 0xfa, 0xda, 0x63, 0xe5, 0xd1, 0xca, 0xc3, + 0x9d, 0xb5, 0x9a, 0x3c, 0x81, 0x10, 0xe4, 0x4b, 0x2b, 0xf5, 0x72, 0x45, 0xc1, 0x6b, 0xb5, 0xed, + 0xad, 0xcd, 0xda, 0x9a, 0x2c, 0x09, 0xbc, 0x0d, 0xc8, 0x86, 0x5e, 0xec, 0xa0, 0x0d, 0xb7, 0x77, + 0x6a, 0x15, 0xa5, 0x5e, 0xdd, 0x58, 0xab, 0xd5, 0x57, 0x36, 0xb6, 0xe5, 0x09, 0x4a, 0x8c, 0xc1, + 0x56, 0x4a, 0x5b, 0xb8, 0x2e, 0x4b, 0x7e, 0xb9, 0xbe, 0xb5, 0x53, 0xae, 0xf8, 0xef, 0xda, 0xa7, + 0xd2, 0x49, 0x39, 0x79, 0xd3, 0x82, 0xd3, 0x91, 0x97, 0xa0, 0x50, 0x16, 0xa6, 0x77, 0x4c, 0xf6, + 0xfe, 0x83, 0x3c, 0x81, 0x72, 0xa1, 0x7b, 0x50, 0xb2, 0x84, 0xd2, 0xfc, 0xb6, 0x8b, 0x9c, 0x40, + 0x53, 0x90, 0xa8, 0xdd, 0x95, 0x93, 0x68, 0x16, 0xb2, 0xa1, 0xcb, 0x44, 0x72, 0x0a, 0x65, 0xc4, + 0x1d, 0x0c, 0x79, 0x12, 0xcd, 0x04, 0x97, 0x20, 0xe4, 0xa9, 0x9b, 0x97, 0x20, 0x94, 0x23, 0x8e, + 0x00, 0xa6, 0x1e, 0xaa, 0x2e, 0x71, 0x5c, 0x79, 0x02, 0x4d, 0x43, 0x72, 0xa5, 0xd9, 0x94, 0xa5, + 0x3b, 0xdf, 0x97, 0x20, 0xed, 0x3d, 0xd5, 0x87, 0x1e, 0xc2, 0x24, 0x0f, 0xda, 0x16, 0x07, 0x1b, + 0x7b, 0x66, 0x2f, 0x16, 0x96, 0x46, 0xad, 0x06, 0xc5, 0x09, 0xf4, 0xae, 0xf8, 0xc7, 0x12, 0x54, + 0xd2, 0xe8, 0xf2, 0x30, 0x3d, 0xf0, 0xa8, 0x0e, 0x57, 0x16, 0xaa, 0xdb, 0xc5, 0x89, 0xcf, 0x48, + 0xa5, 0x4b, 0x1f, 0xfe, 0xcb, 0xc5, 0x89, 0x0f, 0x4f, 0x2e, 0x4a, 0x3f, 0x3e, 0xb9, 0x28, 0xfd, + 0xe4, 0xe4, 0xa2, 0xf4, 0xcf, 0x27, 0x17, 0xa5, 0xdf, 0xf8, 0xd7, 0x8b, 0x13, 0xef, 0x4d, 0x0b, + 0xac, 0xdd, 0x29, 0xf6, 0xbf, 0x2d, 0xee, 0xfe, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x5e, + 0x9c, 0x6a, 0xe0, 0x63, 0x00, 0x00, } diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index d055ebfe304a..3fae093efcf3 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -1157,6 +1157,20 @@ message ExportRequest { // may still be set if the request is served by an old node, but since the // caller has declare they're not going to use it, that's okay. bool omit_checksum = 6; + + // EnableTimeBoundIteratorOptimization, if true, enables a performance + // optimization that allows us to entirely skip over sstables in RocksDB that + // don't have data relevant to the time bounds in this request. + // + // This can have a dramatic impact on performance, but we've seen a number of + // extremely subtle and hard to detect correctness issues with this (see + // #28358 #34819). As a result, we've decided to skip the optimization + // everywhere that it isn't absolutely necessary for the feature to work + // (leaving one place: poller-based changefeeds, which are being phased out + // anyway). This will both give increased confidence in correctness as well as + // eliminate any need to investigate time-bound iterators when/if someone hits + // a correctness bug. + bool enable_time_bound_iterator_optimization = 7; } message BulkOpSummary {