From 0ebe40722151f109e3108de73f51a313b4a7372b Mon Sep 17 00:00:00 2001 From: Ten Thousand Leaves <69466447+soothing-rain@users.noreply.github.com> Date: Wed, 20 Jul 2022 15:06:30 +0800 Subject: [PATCH] Make DataNode not panic if stale segment is not found during flush (#18322) /kind improvement Signed-off-by: Yuchen Gao --- internal/core/src/pb/common.pb.cc | 143 ++++++------ internal/core/src/pb/common.pb.h | 1 + internal/datacoord/services.go | 6 +- internal/datacoord/util.go | 10 +- internal/datanode/flush_manager.go | 16 +- internal/datanode/flush_manager_test.go | 16 +- internal/proto/common.proto | 1 + internal/proto/commonpb/common.pb.go | 295 ++++++++++++------------ 8 files changed, 263 insertions(+), 225 deletions(-) diff --git a/internal/core/src/pb/common.pb.cc b/internal/core/src/pb/common.pb.cc index e53475f54d..a1ffc0b277 100644 --- a/internal/core/src/pb/common.pb.cc +++ b/internal/core/src/pb/common.pb.cc @@ -360,7 +360,7 @@ const char descriptor_table_protodef_common_2eproto[] PROTOBUF_SECTION_VARIABLE( "(\0162!.milvus.proto.common.ResourceType\022B\n" "\022resource_privilege\030\002 \001(\0162&.milvus.proto" ".common.ResourcePrivilege\022\033\n\023resource_na" - "me_index\030\003 \001(\005*\276\010\n\tErrorCode\022\013\n\007Success\020" + "me_index\030\003 \001(\005*\323\010\n\tErrorCode\022\013\n\007Success\020" "\000\022\023\n\017UnexpectedError\020\001\022\021\n\rConnectFailed\020" "\002\022\024\n\020PermissionDenied\020\003\022\027\n\023CollectionNot" "Exists\020\004\022\023\n\017IllegalArgument\020\005\022\024\n\020Illegal" @@ -387,75 +387,75 @@ const char descriptor_table_protodef_common_2eproto[] PROTOBUF_SECTION_VARIABLE( "\022SelectGrantFailure\020*\022!\n\035RefreshPolicyIn" "foCacheFailure\020+\022\025\n\021ListPolicyFailure\020,\022" "\022\n\016NotShardLeader\020-\022\026\n\022NoReplicaAvailabl" - "e\020.\022\022\n\rDDRequestRace\020\350\007*X\n\nIndexState\022\022\n" - "\016IndexStateNone\020\000\022\014\n\010Unissued\020\001\022\016\n\nInPro" - "gress\020\002\022\014\n\010Finished\020\003\022\n\n\006Failed\020\004*\202\001\n\014Se" - "gmentState\022\024\n\020SegmentStateNone\020\000\022\014\n\010NotE" - "xist\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed\020\003\022\013\n\007Flush" - "ed\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped\020\006\022\r\n\tImpor" - "ting\020\007*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014B" - "inaryVector\020d\022\017\n\013FloatVector\020e*\266\014\n\007MsgTy" - "pe\022\r\n\tUndefined\020\000\022\024\n\020CreateCollection\020d\022" - "\022\n\016DropCollection\020e\022\021\n\rHasCollection\020f\022\026" - "\n\022DescribeCollection\020g\022\023\n\017ShowCollection" - "s\020h\022\024\n\020GetSystemConfigs\020i\022\022\n\016LoadCollect" - "ion\020j\022\025\n\021ReleaseCollection\020k\022\017\n\013CreateAl" - "ias\020l\022\r\n\tDropAlias\020m\022\016\n\nAlterAlias\020n\022\024\n\017" - "CreatePartition\020\310\001\022\022\n\rDropPartition\020\311\001\022\021" - "\n\014HasPartition\020\312\001\022\026\n\021DescribePartition\020\313" - "\001\022\023\n\016ShowPartitions\020\314\001\022\023\n\016LoadPartitions" - "\020\315\001\022\026\n\021ReleasePartitions\020\316\001\022\021\n\014ShowSegme" - "nts\020\372\001\022\024\n\017DescribeSegment\020\373\001\022\021\n\014LoadSegm" - "ents\020\374\001\022\024\n\017ReleaseSegments\020\375\001\022\024\n\017Handoff" - "Segments\020\376\001\022\030\n\023LoadBalanceSegments\020\377\001\022\025\n" - "\020DescribeSegments\020\200\002\022\020\n\013CreateIndex\020\254\002\022\022" - "\n\rDescribeIndex\020\255\002\022\016\n\tDropIndex\020\256\002\022\013\n\006In" - "sert\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flush\020\222\003\022\027\n\022Rese" - "ndSegmentStats\020\223\003\022\013\n\006Search\020\364\003\022\021\n\014Search" - "Result\020\365\003\022\022\n\rGetIndexState\020\366\003\022\032\n\025GetInde" - "xBuildProgress\020\367\003\022\034\n\027GetCollectionStatis" - "tics\020\370\003\022\033\n\026GetPartitionStatistics\020\371\003\022\r\n\010" - "Retrieve\020\372\003\022\023\n\016RetrieveResult\020\373\003\022\024\n\017Watc" - "hDmChannels\020\374\003\022\025\n\020RemoveDmChannels\020\375\003\022\027\n" - "\022WatchQueryChannels\020\376\003\022\030\n\023RemoveQueryCha" - "nnels\020\377\003\022\035\n\030SealedSegmentsChangeInfo\020\200\004\022" - "\027\n\022WatchDeltaChannels\020\201\004\022\024\n\017GetShardLead" - "ers\020\202\004\022\020\n\013GetReplicas\020\203\004\022\020\n\013SegmentInfo\020" - "\330\004\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRecoveryInfo\020\332" - "\004\022\024\n\017GetSegmentState\020\333\004\022\r\n\010TimeTick\020\260\t\022\023" - "\n\016QueryNodeStats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016\n\tR" - "equestID\020\263\t\022\017\n\nRequestTSO\020\264\t\022\024\n\017Allocate" - "Segment\020\265\t\022\026\n\021SegmentStatistics\020\266\t\022\025\n\020Se" - "gmentFlushDone\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n\020Cr" - "eateCredential\020\334\013\022\022\n\rGetCredential\020\335\013\022\025\n" - "\020DeleteCredential\020\336\013\022\025\n\020UpdateCredential" - "\020\337\013\022\026\n\021ListCredUsernames\020\340\013\022\017\n\nCreateRol" - "e\020\300\014\022\r\n\010DropRole\020\301\014\022\024\n\017OperateUserRole\020\302" - "\014\022\017\n\nSelectRole\020\303\014\022\017\n\nSelectUser\020\304\014\022\023\n\016S" - "electResource\020\305\014\022\025\n\020OperatePrivilege\020\306\014\022" - "\020\n\013SelectGrant\020\307\014\022\033\n\026RefreshPolicyInfoCa" - "che\020\310\014\022\017\n\nListPolicy\020\311\014*\"\n\007DslType\022\007\n\003Ds" - "l\020\000\022\016\n\nBoolExprV1\020\001*B\n\017CompactionState\022\021" - "\n\rUndefiedState\020\000\022\r\n\tExecuting\020\001\022\r\n\tComp" - "leted\020\002*X\n\020ConsistencyLevel\022\n\n\006Strong\020\000\022" - "\013\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\nEventually\020" - "\003\022\016\n\nCustomized\020\004*\257\001\n\013ImportState\022\021\n\rImp" - "ortPending\020\000\022\020\n\014ImportFailed\020\001\022\021\n\rImport" - "Started\020\002\022\024\n\020ImportDownloaded\020\003\022\020\n\014Impor" - "tParsed\020\004\022\023\n\017ImportPersisted\020\005\022\023\n\017Import" - "Completed\020\006\022\026\n\022ImportAllocSegment\020\n*\036\n\014R" - "esourceType\022\016\n\nCollection\020\000*\335\001\n\021Resource" - "Privilege\022\020\n\014PrivilegeAll\020\000\022\023\n\017Privilege" - "Create\020\001\022\021\n\rPrivilegeDrop\020\002\022\022\n\016Privilege" - "Alter\020\003\022\021\n\rPrivilegeRead\020\004\022\021\n\rPrivilegeL" - "oad\020\005\022\024\n\020PrivilegeRelease\020\006\022\024\n\020Privilege" - "Compact\020\007\022\023\n\017PrivilegeInsert\020\010\022\023\n\017Privil" - "egeDelete\020\t:^\n\021privilege_ext_obj\022\037.googl" - "e.protobuf.MessageOptions\030\351\007 \001(\0132!.milvu" - "s.proto.common.PrivilegeExtBW\n\016io.milvus" - ".grpcB\013CommonProtoP\001Z3github.com/milvus-" - "io/milvus/internal/proto/commonpb\240\001\001b\006pr" - "oto3" + "e\020.\022\023\n\017SegmentNotFound\020/\022\022\n\rDDRequestRac" + "e\020\350\007*X\n\nIndexState\022\022\n\016IndexStateNone\020\000\022\014" + "\n\010Unissued\020\001\022\016\n\nInProgress\020\002\022\014\n\010Finished" + "\020\003\022\n\n\006Failed\020\004*\202\001\n\014SegmentState\022\024\n\020Segme" + "ntStateNone\020\000\022\014\n\010NotExist\020\001\022\013\n\007Growing\020\002" + "\022\n\n\006Sealed\020\003\022\013\n\007Flushed\020\004\022\014\n\010Flushing\020\005\022" + "\013\n\007Dropped\020\006\022\r\n\tImporting\020\007*>\n\017Placehold" + "erType\022\010\n\004None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013Fl" + "oatVector\020e*\266\014\n\007MsgType\022\r\n\tUndefined\020\000\022\024" + "\n\020CreateCollection\020d\022\022\n\016DropCollection\020e" + "\022\021\n\rHasCollection\020f\022\026\n\022DescribeCollectio" + "n\020g\022\023\n\017ShowCollections\020h\022\024\n\020GetSystemCon" + "figs\020i\022\022\n\016LoadCollection\020j\022\025\n\021ReleaseCol" + "lection\020k\022\017\n\013CreateAlias\020l\022\r\n\tDropAlias\020" + "m\022\016\n\nAlterAlias\020n\022\024\n\017CreatePartition\020\310\001\022" + "\022\n\rDropPartition\020\311\001\022\021\n\014HasPartition\020\312\001\022\026" + "\n\021DescribePartition\020\313\001\022\023\n\016ShowPartitions" + "\020\314\001\022\023\n\016LoadPartitions\020\315\001\022\026\n\021ReleaseParti" + "tions\020\316\001\022\021\n\014ShowSegments\020\372\001\022\024\n\017DescribeS" + "egment\020\373\001\022\021\n\014LoadSegments\020\374\001\022\024\n\017ReleaseS" + "egments\020\375\001\022\024\n\017HandoffSegments\020\376\001\022\030\n\023Load" + "BalanceSegments\020\377\001\022\025\n\020DescribeSegments\020\200" + "\002\022\020\n\013CreateIndex\020\254\002\022\022\n\rDescribeIndex\020\255\002\022" + "\016\n\tDropIndex\020\256\002\022\013\n\006Insert\020\220\003\022\013\n\006Delete\020\221" + "\003\022\n\n\005Flush\020\222\003\022\027\n\022ResendSegmentStats\020\223\003\022\013" + "\n\006Search\020\364\003\022\021\n\014SearchResult\020\365\003\022\022\n\rGetInd" + "exState\020\366\003\022\032\n\025GetIndexBuildProgress\020\367\003\022\034" + "\n\027GetCollectionStatistics\020\370\003\022\033\n\026GetParti" + "tionStatistics\020\371\003\022\r\n\010Retrieve\020\372\003\022\023\n\016Retr" + "ieveResult\020\373\003\022\024\n\017WatchDmChannels\020\374\003\022\025\n\020R" + "emoveDmChannels\020\375\003\022\027\n\022WatchQueryChannels" + "\020\376\003\022\030\n\023RemoveQueryChannels\020\377\003\022\035\n\030SealedS" + "egmentsChangeInfo\020\200\004\022\027\n\022WatchDeltaChanne" + "ls\020\201\004\022\024\n\017GetShardLeaders\020\202\004\022\020\n\013GetReplic" + "as\020\203\004\022\020\n\013SegmentInfo\020\330\004\022\017\n\nSystemInfo\020\331\004" + "\022\024\n\017GetRecoveryInfo\020\332\004\022\024\n\017GetSegmentStat" + "e\020\333\004\022\r\n\010TimeTick\020\260\t\022\023\n\016QueryNodeStats\020\261\t" + "\022\016\n\tLoadIndex\020\262\t\022\016\n\tRequestID\020\263\t\022\017\n\nRequ" + "estTSO\020\264\t\022\024\n\017AllocateSegment\020\265\t\022\026\n\021Segme" + "ntStatistics\020\266\t\022\025\n\020SegmentFlushDone\020\267\t\022\017" + "\n\nDataNodeTt\020\270\t\022\025\n\020CreateCredential\020\334\013\022\022" + "\n\rGetCredential\020\335\013\022\025\n\020DeleteCredential\020\336" + "\013\022\025\n\020UpdateCredential\020\337\013\022\026\n\021ListCredUser" + "names\020\340\013\022\017\n\nCreateRole\020\300\014\022\r\n\010DropRole\020\301\014" + "\022\024\n\017OperateUserRole\020\302\014\022\017\n\nSelectRole\020\303\014\022" + "\017\n\nSelectUser\020\304\014\022\023\n\016SelectResource\020\305\014\022\025\n" + "\020OperatePrivilege\020\306\014\022\020\n\013SelectGrant\020\307\014\022\033" + "\n\026RefreshPolicyInfoCache\020\310\014\022\017\n\nListPolic" + "y\020\311\014*\"\n\007DslType\022\007\n\003Dsl\020\000\022\016\n\nBoolExprV1\020\001" + "*B\n\017CompactionState\022\021\n\rUndefiedState\020\000\022\r" + "\n\tExecuting\020\001\022\r\n\tCompleted\020\002*X\n\020Consiste" + "ncyLevel\022\n\n\006Strong\020\000\022\013\n\007Session\020\001\022\013\n\007Bou" + "nded\020\002\022\016\n\nEventually\020\003\022\016\n\nCustomized\020\004*\257" + "\001\n\013ImportState\022\021\n\rImportPending\020\000\022\020\n\014Imp" + "ortFailed\020\001\022\021\n\rImportStarted\020\002\022\024\n\020Import" + "Downloaded\020\003\022\020\n\014ImportParsed\020\004\022\023\n\017Import" + "Persisted\020\005\022\023\n\017ImportCompleted\020\006\022\026\n\022Impo" + "rtAllocSegment\020\n*\036\n\014ResourceType\022\016\n\nColl" + "ection\020\000*\335\001\n\021ResourcePrivilege\022\020\n\014Privil" + "egeAll\020\000\022\023\n\017PrivilegeCreate\020\001\022\021\n\rPrivile" + "geDrop\020\002\022\022\n\016PrivilegeAlter\020\003\022\021\n\rPrivileg" + "eRead\020\004\022\021\n\rPrivilegeLoad\020\005\022\024\n\020PrivilegeR" + "elease\020\006\022\024\n\020PrivilegeCompact\020\007\022\023\n\017Privil" + "egeInsert\020\010\022\023\n\017PrivilegeDelete\020\t:^\n\021priv" + "ilege_ext_obj\022\037.google.protobuf.MessageO" + "ptions\030\351\007 \001(\0132!.milvus.proto.common.Priv" + "ilegeExtBW\n\016io.milvus.grpcB\013CommonProtoP" + "\001Z3github.com/milvus-io/milvus/internal/" + "proto/commonpb\240\001\001b\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_common_2eproto_deps[1] = { &::descriptor_table_google_2fprotobuf_2fdescriptor_2eproto, @@ -476,7 +476,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_com static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_common_2eproto_once; static bool descriptor_table_common_2eproto_initialized = false; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_common_2eproto = { - &descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 4684, + &descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 4705, &descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 11, 1, schemas, file_default_instances, TableStruct_common_2eproto::offsets, file_level_metadata_common_2eproto, 11, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto, @@ -539,6 +539,7 @@ bool ErrorCode_IsValid(int value) { case 44: case 45: case 46: + case 47: case 1000: return true; default: diff --git a/internal/core/src/pb/common.pb.h b/internal/core/src/pb/common.pb.h index 160a703bf8..af72269361 100644 --- a/internal/core/src/pb/common.pb.h +++ b/internal/core/src/pb/common.pb.h @@ -159,6 +159,7 @@ enum ErrorCode : int { ListPolicyFailure = 44, NotShardLeader = 45, NoReplicaAvailable = 46, + SegmentNotFound = 47, DDRequestRace = 1000, ErrorCode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ErrorCode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() diff --git a/internal/datacoord/services.go b/internal/datacoord/services.go index 0792e33275..53a976b2f0 100644 --- a/internal/datacoord/services.go +++ b/internal/datacoord/services.go @@ -359,8 +359,8 @@ func (s *Server) SaveBinlogPaths(ctx context.Context, req *datapb.SaveBinlogPath segment := s.meta.GetSegment(segmentID) if segment == nil { - FailResponse(resp, fmt.Sprintf("failed to get segment %d", segmentID)) log.Error("failed to get segment", zap.Int64("segmentID", segmentID)) + failResponseWithCode(resp, commonpb.ErrorCode_SegmentNotFound, fmt.Sprintf("failed to get segment %d", segmentID)) return resp, nil } @@ -368,7 +368,7 @@ func (s *Server) SaveBinlogPaths(ctx context.Context, req *datapb.SaveBinlogPath if !req.GetImporting() { channel := segment.GetInsertChannel() if !s.channelManager.Match(nodeID, channel) { - FailResponse(resp, fmt.Sprintf("channel %s is not watched on node %d", channel, nodeID)) + failResponse(resp, fmt.Sprintf("channel %s is not watched on node %d", channel, nodeID)) resp.ErrorCode = commonpb.ErrorCode_MetaFailed log.Warn("node is not matched with channel", zap.String("channel", channel), zap.Int64("nodeID", nodeID)) return resp, nil @@ -447,7 +447,7 @@ func (s *Server) DropVirtualChannel(ctx context.Context, req *datapb.DropVirtual // validate nodeID := req.GetBase().GetSourceID() if !s.channelManager.Match(nodeID, channel) { - FailResponse(resp.Status, fmt.Sprintf("channel %s is not watched on node %d", channel, nodeID)) + failResponse(resp.Status, fmt.Sprintf("channel %s is not watched on node %d", channel, nodeID)) resp.Status.ErrorCode = commonpb.ErrorCode_MetaFailed log.Warn("node is not matched with channel", zap.String("channel", channel), zap.Int64("nodeID", nodeID)) return resp, nil diff --git a/internal/datacoord/util.go b/internal/datacoord/util.go index feacec62e4..33f416013d 100644 --- a/internal/datacoord/util.go +++ b/internal/datacoord/util.go @@ -60,12 +60,18 @@ func VerifyResponse(response interface{}, err error) error { return nil } -// FailResponse sets status to failed with reason -func FailResponse(status *commonpb.Status, reason string) { +// failResponse sets status to failed with unexpected error and reason. +func failResponse(status *commonpb.Status, reason string) { status.ErrorCode = commonpb.ErrorCode_UnexpectedError status.Reason = reason } +// failResponseWithCode sets status to failed with error code and reason. +func failResponseWithCode(status *commonpb.Status, errCode commonpb.ErrorCode, reason string) { + status.ErrorCode = errCode + status.Reason = reason +} + func getCompactTime(ctx context.Context, allocator allocator) (*compactTime, error) { ts, err := allocator.allocTimestamp(ctx) if err != nil { diff --git a/internal/datanode/flush_manager.go b/internal/datanode/flush_manager.go index 9161af08c8..5023b704f3 100644 --- a/internal/datanode/flush_manager.go +++ b/internal/datanode/flush_manager.go @@ -18,6 +18,7 @@ package datanode import ( "context" + "errors" "fmt" "path" "strconv" @@ -799,6 +800,16 @@ func flushNotifyFunc(dsService *dataSyncService, opts ...retry.Option) notifyMet return fmt.Errorf(err.Error()) } + // Segment not found during stale segment flush. Segment might get compacted already. + // Stop retry and still proceed to the end, ignoring this error. + if !pack.flushed && rsp.GetErrorCode() == commonpb.ErrorCode_SegmentNotFound { + log.Warn("stale segment not found, could be compacted", + zap.Int64("segment ID", pack.segmentID)) + log.Warn("failed to SaveBinlogPaths", + zap.Int64("segment ID", pack.segmentID), + zap.Error(errors.New(rsp.GetReason()))) + return nil + } // meta error, datanode handles a virtual channel does not belong here if rsp.GetErrorCode() == commonpb.ErrorCode_MetaFailed { log.Warn("meta error found, skip sync and start to drop virtual channel", zap.String("channel", dsService.vchannelName)) @@ -811,11 +822,12 @@ func flushNotifyFunc(dsService *dataSyncService, opts ...retry.Option) notifyMet return nil }, opts...) if err != nil { - log.Warn("failed to SaveBinlogPaths", zap.Error(err)) + log.Warn("failed to SaveBinlogPaths", + zap.Int64("segment ID", pack.segmentID), + zap.Error(err)) // TODO change to graceful stop panic(err) } - if pack.flushed || pack.dropped { dsService.replica.segmentFlushed(pack.segmentID) } diff --git a/internal/datanode/flush_manager_test.go b/internal/datanode/flush_manager_test.go index ef8eeaa4bc..17f5ebdd7b 100644 --- a/internal/datanode/flush_manager_test.go +++ b/internal/datanode/flush_manager_test.go @@ -555,13 +555,27 @@ func TestFlushNotifyFunc(t *testing.T) { }) }) - t.Run("datacoord Save fails", func(t *testing.T) { + t.Run("datacoord save fails", func(t *testing.T) { dataCoord.SaveBinlogPathStatus = commonpb.ErrorCode_UnexpectedError assert.Panics(t, func() { notifyFunc(&segmentFlushPack{}) }) }) + t.Run("normal segment not found", func(t *testing.T) { + dataCoord.SaveBinlogPathStatus = commonpb.ErrorCode_SegmentNotFound + assert.Panics(t, func() { + notifyFunc(&segmentFlushPack{flushed: true}) + }) + }) + + t.Run("stale segment not found", func(t *testing.T) { + dataCoord.SaveBinlogPathStatus = commonpb.ErrorCode_SegmentNotFound + assert.NotPanics(t, func() { + notifyFunc(&segmentFlushPack{flushed: false}) + }) + }) + // issue https://github.com/milvus-io/milvus/issues/17097 // meta error, datanode shall not panic, just drop the virtual channel t.Run("datacoord found meta error", func(t *testing.T) { diff --git a/internal/proto/common.proto b/internal/proto/common.proto index bf594f69b1..e4ee2d80d0 100644 --- a/internal/proto/common.proto +++ b/internal/proto/common.proto @@ -57,6 +57,7 @@ enum ErrorCode { ListPolicyFailure = 44; NotShardLeader = 45; NoReplicaAvailable = 46; + SegmentNotFound = 47; // internal error code. DDRequestRace = 1000; diff --git a/internal/proto/commonpb/common.pb.go b/internal/proto/commonpb/common.pb.go index 6fd92d6ec5..85a647d169 100644 --- a/internal/proto/commonpb/common.pb.go +++ b/internal/proto/commonpb/common.pb.go @@ -70,6 +70,7 @@ const ( ErrorCode_ListPolicyFailure ErrorCode = 44 ErrorCode_NotShardLeader ErrorCode = 45 ErrorCode_NoReplicaAvailable ErrorCode = 46 + ErrorCode_SegmentNotFound ErrorCode = 47 // internal error code. ErrorCode_DDRequestRace ErrorCode = 1000 ) @@ -121,6 +122,7 @@ var ErrorCode_name = map[int32]string{ 44: "ListPolicyFailure", 45: "NotShardLeader", 46: "NoReplicaAvailable", + 47: "SegmentNotFound", 1000: "DDRequestRace", } @@ -171,6 +173,7 @@ var ErrorCode_value = map[string]int32{ "ListPolicyFailure": 44, "NotShardLeader": 45, "NoReplicaAvailable": 46, + "SegmentNotFound": 47, "DDRequestRace": 1000, } @@ -1314,150 +1317,150 @@ func init() { func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) } var fileDescriptor_555bd8c177793206 = []byte{ - // 2309 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xd9, 0x73, 0x23, 0x47, - 0x19, 0xf7, 0x58, 0x5a, 0xcb, 0x6a, 0x8d, 0xed, 0xde, 0xf6, 0x1e, 0xce, 0x66, 0x93, 0x38, 0x22, - 0x09, 0xc6, 0x10, 0x2f, 0x24, 0x55, 0x40, 0x51, 0x15, 0xaa, 0x6c, 0xc9, 0xf6, 0xaa, 0xe2, 0x43, - 0x8c, 0xec, 0x24, 0x45, 0x15, 0xb8, 0xda, 0x33, 0x9f, 0xe5, 0xc9, 0xce, 0x4c, 0x0f, 0xdd, 0x2d, - 0xaf, 0xc5, 0x53, 0x08, 0xff, 0x00, 0x84, 0x7f, 0x80, 0x3f, 0x80, 0xfb, 0x08, 0x3c, 0x51, 0xdc, - 0x24, 0x5c, 0xcf, 0x5c, 0x01, 0x1e, 0xe1, 0x9d, 0x33, 0x27, 0xf5, 0x75, 0xcf, 0x65, 0xc7, 0x81, - 0x07, 0xde, 0xd4, 0xbf, 0xef, 0xfe, 0xfa, 0x3b, 0xa6, 0x45, 0x5c, 0x5f, 0xc4, 0xb1, 0x48, 0x56, - 0x52, 0x29, 0xb4, 0x60, 0xf3, 0x71, 0x18, 0x9d, 0x8c, 0x94, 0x3d, 0xad, 0x58, 0xd2, 0x8d, 0xc5, - 0xa1, 0x10, 0xc3, 0x08, 0x6e, 0x19, 0xf0, 0x70, 0x74, 0x74, 0x2b, 0x00, 0xe5, 0xcb, 0x30, 0xd5, - 0x42, 0x5a, 0xc6, 0xf6, 0x01, 0x99, 0x1a, 0x68, 0xae, 0x47, 0x8a, 0x3d, 0x41, 0x08, 0x48, 0x29, - 0xe4, 0x81, 0x2f, 0x02, 0x58, 0x70, 0x16, 0x9d, 0xa5, 0xd9, 0xc7, 0xee, 0x5f, 0xb9, 0x40, 0xeb, - 0xca, 0x3a, 0xb2, 0x75, 0x44, 0x00, 0x5e, 0x13, 0xf2, 0x9f, 0xec, 0x1a, 0x99, 0x92, 0xc0, 0x95, - 0x48, 0x16, 0x26, 0x17, 0x9d, 0xa5, 0xa6, 0x97, 0x9d, 0xda, 0x1f, 0x24, 0xee, 0x93, 0x30, 0x7e, - 0x8a, 0x47, 0x23, 0xe8, 0xf3, 0x50, 0x32, 0x4a, 0x6a, 0x77, 0x60, 0x6c, 0xf4, 0x37, 0x3d, 0xfc, - 0xc9, 0xae, 0x90, 0x4b, 0x27, 0x48, 0xce, 0x04, 0xed, 0xa1, 0xfd, 0x38, 0x69, 0x3d, 0x09, 0xe3, - 0x2e, 0xd7, 0xfc, 0x1d, 0xc4, 0x18, 0xa9, 0x07, 0x5c, 0x73, 0x23, 0xe5, 0x7a, 0xe6, 0x77, 0xfb, - 0x26, 0xa9, 0xaf, 0x45, 0xe2, 0xb0, 0x54, 0xe9, 0x18, 0x62, 0xa6, 0xf2, 0x84, 0xd0, 0x7e, 0xc4, - 0x7d, 0x38, 0x16, 0x51, 0x00, 0xd2, 0xb8, 0x84, 0x7a, 0x35, 0x1f, 0xe6, 0x7a, 0x35, 0x1f, 0xb2, - 0x0f, 0x93, 0xba, 0x1e, 0xa7, 0xd6, 0x9b, 0xd9, 0xc7, 0x1e, 0xba, 0x30, 0x03, 0x15, 0x35, 0x7b, - 0xe3, 0x14, 0x3c, 0x23, 0x81, 0x29, 0x30, 0x86, 0xd4, 0x42, 0x6d, 0xb1, 0xb6, 0xe4, 0x7a, 0xd9, - 0xa9, 0xfd, 0x89, 0x33, 0x76, 0x37, 0xa5, 0x18, 0xa5, 0xac, 0x47, 0xdc, 0xb4, 0xc4, 0xd4, 0x82, - 0xb3, 0x58, 0x5b, 0x6a, 0x3d, 0xf6, 0xf0, 0xff, 0xb2, 0x66, 0x9c, 0xf6, 0xce, 0x88, 0xb6, 0x1f, - 0x25, 0x8d, 0xd5, 0x20, 0x90, 0xa0, 0x14, 0x9b, 0x25, 0x93, 0x61, 0x9a, 0x05, 0x33, 0x19, 0xa6, - 0x98, 0xa3, 0x54, 0x48, 0x6d, 0x62, 0xa9, 0x79, 0xe6, 0x77, 0xfb, 0x05, 0x87, 0x34, 0xb6, 0xd5, - 0x70, 0x8d, 0x2b, 0x60, 0x1f, 0x22, 0xd3, 0xb1, 0x1a, 0x1e, 0x98, 0x78, 0xed, 0x8d, 0xdf, 0xbc, - 0xd0, 0x83, 0x6d, 0x35, 0x34, 0x71, 0x36, 0x62, 0xfb, 0x03, 0x13, 0x1c, 0xab, 0x61, 0xaf, 0x9b, - 0x69, 0xb6, 0x07, 0x76, 0x93, 0x34, 0x75, 0x18, 0x83, 0xd2, 0x3c, 0x4e, 0x17, 0x6a, 0x8b, 0xce, - 0x52, 0xdd, 0x2b, 0x01, 0x76, 0x83, 0x4c, 0x2b, 0x31, 0x92, 0x3e, 0xf4, 0xba, 0x0b, 0x75, 0x23, - 0x56, 0x9c, 0xdb, 0x4f, 0x90, 0xe6, 0xb6, 0x1a, 0xde, 0x06, 0x1e, 0x80, 0x64, 0xef, 0x27, 0xf5, - 0x43, 0xae, 0xac, 0x47, 0xad, 0x77, 0xf6, 0x08, 0x23, 0xf0, 0x0c, 0x67, 0xfb, 0x93, 0xc4, 0xed, - 0x6e, 0x6f, 0xfd, 0x1f, 0x1a, 0xd0, 0x75, 0x75, 0xcc, 0x65, 0xb0, 0xc3, 0xe3, 0xbc, 0x10, 0x4b, - 0xa0, 0xfd, 0x8a, 0x43, 0xdc, 0xbe, 0x0c, 0x4f, 0xc2, 0x08, 0x86, 0xb0, 0x7e, 0xaa, 0xd9, 0x06, - 0x99, 0x91, 0x60, 0xbd, 0xaf, 0x66, 0xef, 0xc1, 0x0b, 0x2d, 0x79, 0x19, 0xa7, 0x49, 0xa1, 0x2b, - 0x2b, 0x27, 0xb6, 0x4f, 0x58, 0xa1, 0x27, 0xcd, 0x0d, 0x64, 0xa5, 0xf7, 0xc8, 0x7f, 0x55, 0x56, - 0xb8, 0xe3, 0x5d, 0x96, 0xe7, 0x21, 0xb6, 0x42, 0xe6, 0x0b, 0xb5, 0x09, 0x8f, 0xe1, 0x20, 0x4c, - 0x02, 0x38, 0x35, 0x57, 0x72, 0xa9, 0xe4, 0xc7, 0xd0, 0x7a, 0x48, 0x58, 0xfe, 0xde, 0x34, 0x69, - 0x16, 0x5d, 0xcd, 0x5a, 0xa4, 0x31, 0x18, 0xf9, 0x3e, 0x28, 0x45, 0x27, 0xd8, 0x3c, 0x99, 0xdb, - 0x4f, 0xe0, 0x34, 0x05, 0x5f, 0x43, 0x60, 0x78, 0xa8, 0xc3, 0x2e, 0x93, 0x99, 0x8e, 0x48, 0x12, - 0xf0, 0xf5, 0x06, 0x0f, 0x23, 0x08, 0xe8, 0x24, 0xbb, 0x42, 0x68, 0x1f, 0x64, 0x1c, 0x2a, 0x15, - 0x8a, 0xa4, 0x0b, 0x49, 0x08, 0x01, 0xad, 0xb1, 0xeb, 0x64, 0xbe, 0x23, 0xa2, 0x08, 0x7c, 0x1d, - 0x8a, 0x64, 0x47, 0xe8, 0xf5, 0xd3, 0x50, 0x69, 0x45, 0xeb, 0xa8, 0xb6, 0x17, 0x45, 0x30, 0xe4, - 0xd1, 0xaa, 0x1c, 0x8e, 0x62, 0x48, 0x34, 0xbd, 0x84, 0x3a, 0x32, 0xb0, 0x1b, 0xc6, 0x90, 0xa0, - 0x26, 0xda, 0xa8, 0xa0, 0xc6, 0x59, 0xcc, 0x1b, 0x9d, 0x66, 0xf7, 0x90, 0xab, 0x19, 0x5a, 0x31, - 0xc0, 0x63, 0xa0, 0x4d, 0x36, 0x47, 0x5a, 0x19, 0x69, 0x6f, 0xb7, 0xff, 0x24, 0x25, 0x15, 0x0d, - 0x9e, 0xb8, 0xeb, 0x81, 0x2f, 0x64, 0x40, 0x5b, 0x15, 0x17, 0x9e, 0x02, 0x5f, 0x0b, 0xd9, 0xeb, - 0x52, 0x17, 0x1d, 0xce, 0xc0, 0x01, 0x70, 0xe9, 0x1f, 0x7b, 0xa0, 0x46, 0x91, 0xa6, 0x33, 0x8c, - 0x12, 0x77, 0x23, 0x8c, 0x60, 0x47, 0xe8, 0x0d, 0x31, 0x4a, 0x02, 0x3a, 0xcb, 0x66, 0x09, 0xd9, - 0x06, 0xcd, 0xb3, 0x0c, 0xcc, 0xa1, 0xd9, 0x0e, 0xf7, 0x8f, 0x21, 0x03, 0x28, 0xbb, 0x46, 0x58, - 0x87, 0x27, 0x89, 0xd0, 0x1d, 0x09, 0x5c, 0xc3, 0x86, 0xe9, 0x57, 0x7a, 0x19, 0xdd, 0x39, 0x83, - 0x87, 0x11, 0x50, 0x56, 0x72, 0x77, 0x21, 0x82, 0x82, 0x7b, 0xbe, 0xe4, 0xce, 0x70, 0xe4, 0xbe, - 0x82, 0xce, 0xaf, 0x8d, 0xc2, 0x28, 0x30, 0x29, 0xb1, 0xd7, 0x72, 0x15, 0x7d, 0xcc, 0x9c, 0xdf, - 0xd9, 0xea, 0x0d, 0xf6, 0xe8, 0x35, 0x76, 0x95, 0x5c, 0xce, 0x90, 0x6d, 0xd0, 0x32, 0xf4, 0x4d, - 0xf2, 0xae, 0xa3, 0xab, 0xbb, 0x23, 0xbd, 0x7b, 0xb4, 0x0d, 0xb1, 0x90, 0x63, 0xba, 0x80, 0x17, - 0x6a, 0x34, 0xe5, 0x57, 0x44, 0xef, 0x41, 0x0b, 0xeb, 0x71, 0xaa, 0xc7, 0x65, 0x7a, 0xe9, 0x0d, - 0x76, 0x2f, 0xb9, 0xbe, 0x9f, 0x06, 0x5c, 0x43, 0x2f, 0xc6, 0x61, 0xb2, 0xc7, 0xd5, 0x1d, 0x0c, - 0x77, 0x24, 0x81, 0xde, 0xcb, 0x6e, 0x90, 0x6b, 0x67, 0xef, 0xa2, 0x48, 0xd6, 0x4d, 0x14, 0xb4, - 0xd1, 0x76, 0x24, 0x04, 0x90, 0xe8, 0x90, 0x47, 0xb9, 0xe0, 0x7d, 0xa5, 0xd6, 0xb7, 0x13, 0xef, - 0x47, 0xa2, 0x8d, 0xfc, 0xed, 0xc4, 0x07, 0xd8, 0x02, 0xb9, 0xb2, 0x09, 0xfa, 0xed, 0x94, 0x45, - 0xa4, 0x6c, 0x85, 0xca, 0x90, 0xf6, 0x15, 0x48, 0x95, 0x53, 0x1e, 0x64, 0x8c, 0xcc, 0x6e, 0x82, - 0x46, 0x30, 0xc7, 0xda, 0x98, 0x27, 0xeb, 0x9e, 0x27, 0x22, 0xc8, 0xe1, 0x77, 0x61, 0x0e, 0xba, - 0x52, 0xa4, 0x55, 0xf0, 0x21, 0x0c, 0x73, 0x37, 0x05, 0xc9, 0x35, 0xa0, 0x8e, 0x2a, 0xed, 0x61, - 0xd4, 0x33, 0x00, 0xcc, 0x40, 0x15, 0x7e, 0xa4, 0x84, 0xab, 0x56, 0xdf, 0x8d, 0x35, 0x9c, 0x71, - 0x67, 0x1d, 0x99, 0x93, 0x96, 0x30, 0xea, 0xcc, 0x48, 0xd1, 0xd5, 0x39, 0xf1, 0x3d, 0x58, 0x2a, - 0x56, 0x6e, 0x53, 0xf2, 0x44, 0xe7, 0xf8, 0x32, 0x7b, 0x90, 0xdc, 0xe7, 0xc1, 0x91, 0x04, 0x75, - 0xdc, 0x17, 0x51, 0xe8, 0x8f, 0x7b, 0xc9, 0x91, 0x28, 0x4a, 0x12, 0x59, 0xde, 0x8b, 0x9e, 0x60, - 0x5a, 0x2c, 0x3d, 0x87, 0xdf, 0x87, 0x39, 0xd9, 0x11, 0x7a, 0x80, 0x03, 0x6f, 0xcb, 0x8c, 0x50, - 0xfa, 0x28, 0x5a, 0xd9, 0x11, 0x1e, 0xa4, 0x51, 0xe8, 0xf3, 0xd5, 0x13, 0x1e, 0x46, 0xfc, 0x30, - 0x02, 0xba, 0xc2, 0x18, 0x99, 0xe9, 0x76, 0x3d, 0xf8, 0xd4, 0x08, 0x94, 0xf6, 0xb8, 0x0f, 0xf4, - 0x2f, 0x8d, 0xe5, 0x67, 0x08, 0x31, 0xf5, 0x83, 0xdf, 0x12, 0x80, 0xda, 0xca, 0xd3, 0x8e, 0x48, - 0x80, 0x4e, 0x30, 0x97, 0x4c, 0xef, 0x27, 0xa1, 0x52, 0x23, 0x08, 0xa8, 0x83, 0xbd, 0xd3, 0x4b, - 0xfa, 0x52, 0x0c, 0x71, 0x6d, 0xd1, 0x49, 0xa4, 0x6e, 0x84, 0x49, 0xa8, 0x8e, 0xcd, 0xd4, 0x20, - 0x64, 0x2a, 0x6b, 0xa2, 0xfa, 0xf2, 0xf3, 0x0e, 0x71, 0x07, 0x30, 0xc4, 0x09, 0x61, 0x95, 0x5f, - 0x21, 0xb4, 0x7a, 0x2e, 0xd5, 0x17, 0xb5, 0xeb, 0xe0, 0x04, 0xdb, 0x94, 0xe2, 0x6e, 0x98, 0x0c, - 0xe9, 0x24, 0x6a, 0x1b, 0x00, 0x8f, 0x8c, 0xe6, 0x16, 0x69, 0x6c, 0x44, 0x23, 0x63, 0xa6, 0x6e, - 0x8c, 0xe2, 0x01, 0xd9, 0x2e, 0x21, 0x09, 0xef, 0x3a, 0x85, 0x80, 0x4e, 0xb1, 0x19, 0xd2, 0xb4, - 0x15, 0x8e, 0xb4, 0xc6, 0xf2, 0x47, 0xc9, 0xdc, 0xb9, 0x95, 0xcf, 0xa6, 0x49, 0x3d, 0x33, 0x4d, - 0x89, 0xbb, 0x16, 0x26, 0x5c, 0x8e, 0xed, 0x18, 0xa1, 0x01, 0xb6, 0xd7, 0x46, 0x24, 0xb8, 0xce, - 0x00, 0x58, 0x7e, 0xd1, 0x35, 0x3b, 0xd7, 0x08, 0xce, 0x90, 0xe6, 0x7e, 0x12, 0xc0, 0x51, 0x98, - 0x40, 0x40, 0x27, 0x4c, 0x7b, 0xdb, 0xc6, 0x28, 0xfb, 0x2c, 0xc0, 0x0c, 0xa2, 0x33, 0x15, 0x0c, - 0xb0, 0x47, 0x6f, 0x73, 0x55, 0x81, 0x8e, 0xf0, 0x8a, 0xba, 0xe6, 0x8b, 0xee, 0xb0, 0x2a, 0x3e, - 0xc4, 0xba, 0x1d, 0x1c, 0x8b, 0xbb, 0x25, 0xa6, 0xe8, 0x31, 0x5a, 0xda, 0x04, 0x3d, 0x18, 0x2b, - 0x0d, 0x71, 0x47, 0x24, 0x47, 0xe1, 0x50, 0xd1, 0x10, 0x2d, 0x6d, 0x09, 0x1e, 0x54, 0xc4, 0x9f, - 0xc5, 0x22, 0xf1, 0x20, 0x02, 0xae, 0xaa, 0x5a, 0xef, 0x98, 0x01, 0x67, 0x5c, 0x5d, 0x8d, 0x42, - 0xae, 0x68, 0x84, 0xa1, 0xa0, 0x97, 0xf6, 0x18, 0xe3, 0xa5, 0xae, 0x46, 0x1a, 0xa4, 0x3d, 0x27, - 0xec, 0x0a, 0x99, 0xb3, 0xfc, 0x7d, 0x2e, 0x75, 0x68, 0x94, 0xbc, 0xe4, 0x98, 0xf2, 0x91, 0x22, - 0x2d, 0xb1, 0x97, 0x71, 0x9f, 0xb8, 0xb7, 0xb9, 0x2a, 0xa1, 0x9f, 0x3b, 0xec, 0x1a, 0xb9, 0x9c, - 0x87, 0x56, 0xe2, 0xbf, 0x70, 0xd8, 0x3c, 0x99, 0xc5, 0xd0, 0x0a, 0x4c, 0xd1, 0x5f, 0x1a, 0x10, - 0x83, 0xa8, 0x80, 0xbf, 0x32, 0x1a, 0xb2, 0x28, 0x2a, 0xf8, 0xaf, 0x8d, 0x31, 0xd4, 0x90, 0x15, - 0x91, 0xa2, 0xaf, 0x3a, 0xe8, 0x69, 0x6e, 0x2c, 0x83, 0xe9, 0x6b, 0x86, 0x11, 0xb5, 0x16, 0x8c, - 0xaf, 0x1b, 0xc6, 0x4c, 0x67, 0x81, 0xbe, 0x61, 0xd0, 0xdb, 0x3c, 0x09, 0xc4, 0xd1, 0x51, 0x81, - 0xbe, 0xe9, 0xb0, 0x05, 0x32, 0x8f, 0xe2, 0x6b, 0x3c, 0xe2, 0x89, 0x5f, 0xf2, 0xbf, 0xe5, 0xb0, - 0xab, 0x84, 0x9e, 0x33, 0xa7, 0xe8, 0x73, 0x93, 0x8c, 0xe6, 0xf9, 0x35, 0xcd, 0x43, 0xbf, 0x34, - 0x69, 0x72, 0x95, 0x31, 0x5a, 0xec, 0xcb, 0x93, 0x6c, 0xd6, 0x26, 0xdd, 0x9e, 0xbf, 0x32, 0xc9, - 0x5a, 0x64, 0xaa, 0x97, 0x28, 0x90, 0x9a, 0x7e, 0x0e, 0xeb, 0x7b, 0xca, 0x0e, 0x4b, 0xfa, 0x79, - 0x6c, 0xa3, 0x4b, 0xa6, 0xbe, 0xe9, 0x0b, 0xb8, 0x88, 0x99, 0x07, 0x0a, 0x92, 0xa0, 0xd2, 0x3b, - 0x8a, 0x7e, 0xc1, 0x48, 0xd8, 0x4d, 0x47, 0xff, 0x56, 0x33, 0xa9, 0xa9, 0xae, 0xbd, 0xbf, 0xd7, - 0xd0, 0x85, 0x4d, 0xd0, 0x65, 0x3b, 0xd3, 0x7f, 0xd4, 0xd8, 0x0d, 0x72, 0x35, 0xc7, 0xcc, 0x12, - 0x2a, 0x1a, 0xf9, 0x9f, 0x35, 0x76, 0x93, 0x5c, 0xc7, 0x89, 0x5c, 0xd4, 0x0d, 0x0a, 0x85, 0x4a, - 0x87, 0xbe, 0xa2, 0xff, 0xaa, 0xb1, 0x7b, 0xc9, 0xb5, 0x4d, 0xd0, 0xc5, 0x7d, 0x54, 0x88, 0xff, - 0xae, 0xb1, 0x19, 0x32, 0xed, 0xe1, 0x96, 0x82, 0x13, 0xa0, 0xaf, 0xd6, 0xf0, 0x52, 0xf3, 0x63, - 0xe6, 0xce, 0x6b, 0x35, 0x4c, 0xf5, 0xd3, 0x5c, 0xfb, 0xc7, 0xdd, 0xb8, 0x73, 0xcc, 0x93, 0x04, - 0x22, 0x45, 0x5f, 0xaf, 0x61, 0x42, 0x3d, 0x88, 0xc5, 0x09, 0x54, 0xe0, 0x37, 0x4c, 0xd0, 0x86, - 0xf9, 0x63, 0x23, 0x90, 0xe3, 0x82, 0xf0, 0x66, 0x0d, 0xaf, 0xc6, 0xf2, 0x9f, 0xa5, 0xbc, 0x55, - 0x63, 0xf7, 0x91, 0x05, 0x3b, 0x2c, 0xf2, 0x8b, 0x41, 0xe2, 0x10, 0x70, 0x92, 0xd2, 0xe7, 0xea, - 0x85, 0xc6, 0x2e, 0x44, 0x9a, 0x17, 0x72, 0x9f, 0xa9, 0xa3, 0x5f, 0xd8, 0x5c, 0xe5, 0x00, 0x55, - 0xf4, 0xf9, 0x3a, 0xde, 0xe8, 0x26, 0xe8, 0x6c, 0x86, 0x2a, 0xfa, 0x59, 0x83, 0x64, 0x9a, 0x8d, - 0xca, 0xdf, 0xd4, 0xd9, 0x1c, 0x21, 0xb6, 0x27, 0x0d, 0xf0, 0xdb, 0x5c, 0x15, 0x7e, 0xa6, 0x9c, - 0x80, 0x34, 0x33, 0x9c, 0xfe, 0xae, 0x30, 0x50, 0x99, 0x7c, 0xf4, 0xf7, 0x75, 0x4c, 0xd9, 0x5e, - 0x18, 0xc3, 0x5e, 0xe8, 0xdf, 0xa1, 0x5f, 0x6b, 0x62, 0xca, 0x4c, 0x44, 0x3b, 0x22, 0x00, 0x7b, - 0xc3, 0x5f, 0x6f, 0x62, 0xc1, 0x60, 0x1d, 0xda, 0x82, 0xf9, 0x86, 0x39, 0x67, 0xd3, 0xbb, 0xd7, - 0xa5, 0xdf, 0xc4, 0xcf, 0x25, 0x92, 0x9d, 0xf7, 0x06, 0xbb, 0xf4, 0x5b, 0x4d, 0x34, 0xb5, 0x1a, - 0x45, 0xc2, 0xe7, 0xba, 0xe8, 0x86, 0x6f, 0x37, 0xb1, 0x9d, 0x2a, 0xd6, 0xb3, 0x5b, 0x7b, 0xb1, - 0x89, 0xb9, 0xcf, 0x70, 0x53, 0x6c, 0x5d, 0x1c, 0x8a, 0xdf, 0x31, 0x5a, 0xf1, 0xf1, 0x86, 0x9e, - 0xec, 0x69, 0xfa, 0x5d, 0xc3, 0x77, 0xfe, 0x0b, 0x80, 0xfe, 0xa1, 0x95, 0xd5, 0x57, 0x05, 0x7b, - 0xa5, 0x65, 0xfb, 0xe3, 0xec, 0xca, 0xa7, 0x7f, 0x34, 0xf0, 0xf9, 0xcf, 0x04, 0xfa, 0xa7, 0x16, - 0x3a, 0x56, 0xdd, 0xf4, 0xf8, 0xbd, 0xab, 0xe8, 0x9f, 0x5b, 0xe8, 0x41, 0xb9, 0xd3, 0xe9, 0xf7, - 0x5d, 0x4c, 0x56, 0xbe, 0xcd, 0xe9, 0x0f, 0x5c, 0x0c, 0xf3, 0xdc, 0x1e, 0xa7, 0x3f, 0x74, 0xcd, - 0x75, 0x14, 0x1b, 0x9c, 0xfe, 0xa8, 0x02, 0x20, 0x17, 0xfd, 0xb1, 0x6b, 0x26, 0xd0, 0x99, 0xad, - 0x4d, 0x7f, 0xe2, 0xa2, 0x6f, 0xe7, 0xf7, 0x35, 0xfd, 0xa9, 0x6b, 0xaf, 0xbb, 0xd8, 0xd4, 0xf4, - 0x67, 0x2e, 0x76, 0xc0, 0xc5, 0x3b, 0x9a, 0xbe, 0x64, 0x6c, 0x95, 0xdb, 0x99, 0xbe, 0xec, 0x2e, - 0xb7, 0x49, 0xa3, 0xab, 0x22, 0xb3, 0x37, 0x1a, 0xa4, 0xd6, 0x55, 0x11, 0x9d, 0xc0, 0x31, 0xbb, - 0x26, 0x44, 0xb4, 0x7e, 0x9a, 0xca, 0xa7, 0x3e, 0x40, 0x9d, 0xe5, 0x35, 0x32, 0xd7, 0x11, 0x71, - 0xca, 0x8b, 0x76, 0x33, 0xab, 0xc2, 0xee, 0x18, 0x08, 0x6c, 0xa9, 0x4c, 0xe0, 0xac, 0x5e, 0x3f, - 0x05, 0x7f, 0x64, 0x36, 0x9a, 0x83, 0x47, 0x14, 0xc2, 0x24, 0x07, 0x74, 0x72, 0xf9, 0x19, 0x42, - 0x3b, 0x22, 0x51, 0xa1, 0xd2, 0x90, 0xf8, 0xe3, 0x2d, 0x38, 0x81, 0xc8, 0xec, 0x4d, 0x2d, 0x45, - 0x32, 0xa4, 0x13, 0xe6, 0x49, 0x00, 0xe6, 0xd3, 0xde, 0x6e, 0xd7, 0x35, 0xfc, 0xac, 0x33, 0xdf, - 0xfd, 0xb3, 0x84, 0xac, 0x9f, 0x40, 0xa2, 0x47, 0x3c, 0x8a, 0xc6, 0xb4, 0x86, 0xe7, 0xce, 0x48, - 0x69, 0x11, 0x87, 0x9f, 0x36, 0xfb, 0xfb, 0xab, 0x0e, 0x69, 0xd9, 0x55, 0x5a, 0xb8, 0x66, 0x8f, - 0x7d, 0x48, 0x82, 0xd0, 0x28, 0xc7, 0xcf, 0x56, 0x03, 0x65, 0x4b, 0xdf, 0x29, 0x99, 0x06, 0x9a, - 0x4b, 0x9d, 0xbf, 0x2f, 0x2c, 0xd4, 0x15, 0x77, 0x93, 0x48, 0xf0, 0xc0, 0xec, 0xf3, 0x42, 0xb4, - 0xcf, 0xa5, 0x32, 0x4b, 0x1d, 0xbf, 0xea, 0x33, 0xfd, 0xd2, 0xc4, 0x13, 0xd0, 0x4b, 0x25, 0x58, - 0xc6, 0x3c, 0x85, 0xcb, 0xd3, 0x82, 0xa6, 0xd8, 0xf3, 0x4a, 0x27, 0xcb, 0xf7, 0x13, 0xb7, 0xfa, - 0x62, 0x33, 0x11, 0x95, 0x6b, 0x70, 0x62, 0xf9, 0x15, 0x07, 0x17, 0xcb, 0xf9, 0x27, 0x17, 0xad, - 0xbc, 0x10, 0x57, 0xa3, 0xc8, 0xbe, 0x9c, 0x0a, 0xc4, 0x16, 0xa2, 0x8d, 0xac, 0x00, 0xb1, 0x18, - 0x29, 0x0e, 0xf9, 0xd9, 0x8a, 0xa4, 0x06, 0x49, 0x6b, 0x67, 0xd8, 0x3c, 0xe0, 0x18, 0x58, 0x15, - 0xc2, 0x7e, 0xb6, 0xef, 0xa5, 0x0a, 0x97, 0x59, 0x4b, 0x74, 0xea, 0x0c, 0x9a, 0x15, 0x06, 0x6d, - 0x9c, 0xf1, 0x26, 0xdb, 0x17, 0xd3, 0x67, 0xc0, 0x6c, 0x6f, 0x34, 0x3f, 0x22, 0xc8, 0xe5, 0xe2, - 0x29, 0x7a, 0x00, 0xa7, 0xfa, 0x40, 0x1c, 0x3e, 0xcb, 0x1e, 0x58, 0xb1, 0x7f, 0x25, 0xad, 0xe4, - 0x7f, 0x25, 0xad, 0x6c, 0x83, 0x52, 0x7c, 0x08, 0xbb, 0xa9, 0x59, 0xac, 0x0b, 0x7f, 0x6d, 0x98, - 0xb7, 0xf6, 0xc5, 0x2f, 0xe0, 0xea, 0xdb, 0xd9, 0x9b, 0x4b, 0x2b, 0xa7, 0xdd, 0xc3, 0x67, 0xd7, - 0x9e, 0x26, 0xb3, 0xa1, 0xc8, 0xe5, 0x86, 0x32, 0xf5, 0xd7, 0x5a, 0x1d, 0x23, 0xd7, 0x47, 0x1d, - 0x7d, 0xe7, 0xe3, 0x8f, 0x0f, 0x43, 0x7d, 0x3c, 0x3a, 0x44, 0x6d, 0xb7, 0x2c, 0xdb, 0xa3, 0xa1, - 0xc8, 0x7e, 0xdd, 0x0a, 0x13, 0x8d, 0x4d, 0x1f, 0xd9, 0x3f, 0xb9, 0x6e, 0x59, 0x8b, 0xe9, 0xe1, - 0x17, 0x1d, 0xe7, 0x70, 0xca, 0x40, 0x8f, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x59, 0x97, - 0x8f, 0x2a, 0x13, 0x00, 0x00, + // 2318 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x49, 0x73, 0x24, 0x47, + 0x15, 0x56, 0xa9, 0x7b, 0xd4, 0xea, 0xec, 0x92, 0x94, 0x93, 0x9a, 0xd1, 0xc8, 0xe3, 0xb1, 0x2d, + 0x37, 0xb6, 0x11, 0x02, 0x4b, 0x60, 0x47, 0x00, 0x41, 0x84, 0x89, 0x90, 0xba, 0x25, 0x4d, 0x87, + 0xb5, 0x34, 0x25, 0xc9, 0x76, 0x10, 0x01, 0x8a, 0x54, 0xd5, 0x53, 0xab, 0x3c, 0x55, 0x95, 0x45, + 0x66, 0xb6, 0x46, 0xcd, 0xc9, 0x98, 0x3f, 0x00, 0xe6, 0x0f, 0xf0, 0x03, 0xd8, 0x17, 0xc3, 0x91, + 0x1d, 0x9b, 0xed, 0xc2, 0x85, 0xcd, 0xc0, 0x11, 0xee, 0xac, 0x5e, 0x89, 0x97, 0x59, 0x9b, 0x64, + 0x19, 0x0e, 0xdc, 0x2a, 0xbf, 0xf7, 0xf2, 0x6d, 0xf9, 0x96, 0xcc, 0x22, 0xae, 0x2f, 0xe2, 0x58, + 0x24, 0xcb, 0xa9, 0x14, 0x5a, 0xb0, 0xd9, 0x38, 0x8c, 0x4e, 0x87, 0xca, 0xae, 0x96, 0x2d, 0xe9, + 0xe6, 0xc2, 0x40, 0x88, 0x41, 0x04, 0x2b, 0x06, 0x3c, 0x1a, 0x1e, 0xaf, 0x04, 0xa0, 0x7c, 0x19, + 0xa6, 0x5a, 0x48, 0xcb, 0xd8, 0x3e, 0x24, 0x13, 0x7b, 0x9a, 0xeb, 0xa1, 0x62, 0x4f, 0x10, 0x02, + 0x52, 0x0a, 0x79, 0xe8, 0x8b, 0x00, 0xe6, 0x9d, 0x05, 0x67, 0x71, 0xfa, 0xb1, 0xfb, 0x97, 0x2f, + 0x91, 0xba, 0xbc, 0x8e, 0x6c, 0x1d, 0x11, 0x80, 0xd7, 0x84, 0xfc, 0x93, 0xcd, 0x91, 0x09, 0x09, + 0x5c, 0x89, 0x64, 0x7e, 0x7c, 0xc1, 0x59, 0x6c, 0x7a, 0xd9, 0xaa, 0xfd, 0x41, 0xe2, 0x3e, 0x09, + 0xa3, 0xa7, 0x78, 0x34, 0x84, 0x3e, 0x0f, 0x25, 0xa3, 0xa4, 0x76, 0x07, 0x46, 0x46, 0x7e, 0xd3, + 0xc3, 0x4f, 0x76, 0x8d, 0x5c, 0x39, 0x45, 0x72, 0xb6, 0xd1, 0x2e, 0xda, 0x8f, 0x93, 0xd6, 0x93, + 0x30, 0xea, 0x72, 0xcd, 0xdf, 0x61, 0x1b, 0x23, 0xf5, 0x80, 0x6b, 0x6e, 0x76, 0xb9, 0x9e, 0xf9, + 0x6e, 0xdf, 0x22, 0xf5, 0xb5, 0x48, 0x1c, 0x95, 0x22, 0x1d, 0x43, 0xcc, 0x44, 0x9e, 0x12, 0xda, + 0x8f, 0xb8, 0x0f, 0x27, 0x22, 0x0a, 0x40, 0x1a, 0x93, 0x50, 0xae, 0xe6, 0x83, 0x5c, 0xae, 0xe6, + 0x03, 0xf6, 0x61, 0x52, 0xd7, 0xa3, 0xd4, 0x5a, 0x33, 0xfd, 0xd8, 0x43, 0x97, 0x46, 0xa0, 0x22, + 0x66, 0x7f, 0x94, 0x82, 0x67, 0x76, 0x60, 0x08, 0x8c, 0x22, 0x35, 0x5f, 0x5b, 0xa8, 0x2d, 0xba, + 0x5e, 0xb6, 0x6a, 0x7f, 0xe2, 0x9c, 0xde, 0x4d, 0x29, 0x86, 0x29, 0xeb, 0x11, 0x37, 0x2d, 0x31, + 0x35, 0xef, 0x2c, 0xd4, 0x16, 0x5b, 0x8f, 0x3d, 0xfc, 0xbf, 0xb4, 0x19, 0xa3, 0xbd, 0x73, 0x5b, + 0xdb, 0x8f, 0x92, 0xc6, 0x6a, 0x10, 0x48, 0x50, 0x8a, 0x4d, 0x93, 0xf1, 0x30, 0xcd, 0x9c, 0x19, + 0x0f, 0x53, 0x8c, 0x51, 0x2a, 0xa4, 0x36, 0xbe, 0xd4, 0x3c, 0xf3, 0xdd, 0x7e, 0xc1, 0x21, 0x8d, + 0x6d, 0x35, 0x58, 0xe3, 0x0a, 0xd8, 0x87, 0xc8, 0x64, 0xac, 0x06, 0x87, 0xc6, 0x5f, 0x7b, 0xe2, + 0xb7, 0x2e, 0xb5, 0x60, 0x5b, 0x0d, 0x8c, 0x9f, 0x8d, 0xd8, 0x7e, 0x60, 0x80, 0x63, 0x35, 0xe8, + 0x75, 0x33, 0xc9, 0x76, 0xc1, 0x6e, 0x91, 0xa6, 0x0e, 0x63, 0x50, 0x9a, 0xc7, 0xe9, 0x7c, 0x6d, + 0xc1, 0x59, 0xac, 0x7b, 0x25, 0xc0, 0x6e, 0x92, 0x49, 0x25, 0x86, 0xd2, 0x87, 0x5e, 0x77, 0xbe, + 0x6e, 0xb6, 0x15, 0xeb, 0xf6, 0x13, 0xa4, 0xb9, 0xad, 0x06, 0xb7, 0x81, 0x07, 0x20, 0xd9, 0xfb, + 0x49, 0xfd, 0x88, 0x2b, 0x6b, 0x51, 0xeb, 0x9d, 0x2d, 0x42, 0x0f, 0x3c, 0xc3, 0xd9, 0xfe, 0x24, + 0x71, 0xbb, 0xdb, 0x5b, 0xff, 0x87, 0x04, 0x34, 0x5d, 0x9d, 0x70, 0x19, 0xec, 0xf0, 0x38, 0x4f, + 0xc4, 0x12, 0x68, 0xbf, 0xe2, 0x10, 0xb7, 0x2f, 0xc3, 0xd3, 0x30, 0x82, 0x01, 0xac, 0x9f, 0x69, + 0xb6, 0x41, 0xa6, 0x24, 0x58, 0xeb, 0xab, 0xd1, 0x7b, 0xf0, 0x52, 0x4d, 0x5e, 0xc6, 0x69, 0x42, + 0xe8, 0xca, 0xca, 0x8a, 0x1d, 0x10, 0x56, 0xc8, 0x49, 0x73, 0x05, 0x59, 0xea, 0x3d, 0xf2, 0x5f, + 0x85, 0x15, 0xe6, 0x78, 0x57, 0xe5, 0x45, 0x88, 0x2d, 0x93, 0xd9, 0x42, 0x6c, 0xc2, 0x63, 0x38, + 0x0c, 0x93, 0x00, 0xce, 0xcc, 0x91, 0x5c, 0x29, 0xf9, 0xd1, 0xb5, 0x1e, 0x12, 0x96, 0x7e, 0x3d, + 0x49, 0x9a, 0x45, 0x55, 0xb3, 0x16, 0x69, 0xec, 0x0d, 0x7d, 0x1f, 0x94, 0xa2, 0x63, 0x6c, 0x96, + 0xcc, 0x1c, 0x24, 0x70, 0x96, 0x82, 0xaf, 0x21, 0x30, 0x3c, 0xd4, 0x61, 0x57, 0xc9, 0x54, 0x47, + 0x24, 0x09, 0xf8, 0x7a, 0x83, 0x87, 0x11, 0x04, 0x74, 0x9c, 0x5d, 0x23, 0xb4, 0x0f, 0x32, 0x0e, + 0x95, 0x0a, 0x45, 0xd2, 0x85, 0x24, 0x84, 0x80, 0xd6, 0xd8, 0x0d, 0x32, 0xdb, 0x11, 0x51, 0x04, + 0xbe, 0x0e, 0x45, 0xb2, 0x23, 0xf4, 0xfa, 0x59, 0xa8, 0xb4, 0xa2, 0x75, 0x14, 0xdb, 0x8b, 0x22, + 0x18, 0xf0, 0x68, 0x55, 0x0e, 0x86, 0x31, 0x24, 0x9a, 0x5e, 0x41, 0x19, 0x19, 0xd8, 0x0d, 0x63, + 0x48, 0x50, 0x12, 0x6d, 0x54, 0x50, 0x63, 0x2c, 0xc6, 0x8d, 0x4e, 0xb2, 0x7b, 0xc8, 0xf5, 0x0c, + 0xad, 0x28, 0xe0, 0x31, 0xd0, 0x26, 0x9b, 0x21, 0xad, 0x8c, 0xb4, 0xbf, 0xdb, 0x7f, 0x92, 0x92, + 0x8a, 0x04, 0x4f, 0xdc, 0xf5, 0xc0, 0x17, 0x32, 0xa0, 0xad, 0x8a, 0x09, 0x4f, 0x81, 0xaf, 0x85, + 0xec, 0x75, 0xa9, 0x8b, 0x06, 0x67, 0xe0, 0x1e, 0x70, 0xe9, 0x9f, 0x78, 0xa0, 0x86, 0x91, 0xa6, + 0x53, 0x8c, 0x12, 0x77, 0x23, 0x8c, 0x60, 0x47, 0xe8, 0x0d, 0x31, 0x4c, 0x02, 0x3a, 0xcd, 0xa6, + 0x09, 0xd9, 0x06, 0xcd, 0xb3, 0x08, 0xcc, 0xa0, 0xda, 0x0e, 0xf7, 0x4f, 0x20, 0x03, 0x28, 0x9b, + 0x23, 0xac, 0xc3, 0x93, 0x44, 0xe8, 0x8e, 0x04, 0xae, 0x61, 0xc3, 0xd4, 0x2b, 0xbd, 0x8a, 0xe6, + 0x9c, 0xc3, 0xc3, 0x08, 0x28, 0x2b, 0xb9, 0xbb, 0x10, 0x41, 0xc1, 0x3d, 0x5b, 0x72, 0x67, 0x38, + 0x72, 0x5f, 0x43, 0xe3, 0xd7, 0x86, 0x61, 0x14, 0x98, 0x90, 0xd8, 0x63, 0xb9, 0x8e, 0x36, 0x66, + 0xc6, 0xef, 0x6c, 0xf5, 0xf6, 0xf6, 0xe9, 0x1c, 0xbb, 0x4e, 0xae, 0x66, 0xc8, 0x36, 0x68, 0x19, + 0xfa, 0x26, 0x78, 0x37, 0xd0, 0xd4, 0xdd, 0xa1, 0xde, 0x3d, 0xde, 0x86, 0x58, 0xc8, 0x11, 0x9d, + 0xc7, 0x03, 0x35, 0x92, 0xf2, 0x23, 0xa2, 0xf7, 0xa0, 0x86, 0xf5, 0x38, 0xd5, 0xa3, 0x32, 0xbc, + 0xf4, 0x26, 0xbb, 0x97, 0xdc, 0x38, 0x48, 0x03, 0xae, 0xa1, 0x17, 0x63, 0x33, 0xd9, 0xe7, 0xea, + 0x0e, 0xba, 0x3b, 0x94, 0x40, 0xef, 0x65, 0x37, 0xc9, 0xdc, 0xf9, 0xb3, 0x28, 0x82, 0x75, 0x0b, + 0x37, 0x5a, 0x6f, 0x3b, 0x12, 0x02, 0x48, 0x74, 0xc8, 0xa3, 0x7c, 0xe3, 0x7d, 0xa5, 0xd4, 0xb7, + 0x13, 0xef, 0x47, 0xa2, 0xf5, 0xfc, 0xed, 0xc4, 0x07, 0xd8, 0x3c, 0xb9, 0xb6, 0x09, 0xfa, 0xed, + 0x94, 0x05, 0xa4, 0x6c, 0x85, 0xca, 0x90, 0x0e, 0x14, 0x48, 0x95, 0x53, 0x1e, 0x64, 0x8c, 0x4c, + 0x6f, 0x82, 0x46, 0x30, 0xc7, 0xda, 0x18, 0x27, 0x6b, 0x9e, 0x27, 0x22, 0xc8, 0xe1, 0x77, 0x61, + 0x0c, 0xba, 0x52, 0xa4, 0x55, 0xf0, 0x21, 0x74, 0x73, 0x37, 0x05, 0xc9, 0x35, 0xa0, 0x8c, 0x2a, + 0xed, 0x61, 0x94, 0xb3, 0x07, 0x18, 0x81, 0x2a, 0xfc, 0x48, 0x09, 0x57, 0xb5, 0xbe, 0x1b, 0x73, + 0x38, 0xe3, 0xce, 0x2a, 0x32, 0x27, 0x2d, 0xa2, 0xd7, 0x99, 0x92, 0xa2, 0xaa, 0x73, 0xe2, 0x7b, + 0x30, 0x55, 0xec, 0xbe, 0x4d, 0xc9, 0x13, 0x9d, 0xe3, 0x4b, 0xec, 0x41, 0x72, 0x9f, 0x07, 0xc7, + 0x12, 0xd4, 0x49, 0x5f, 0x44, 0xa1, 0x3f, 0xea, 0x25, 0xc7, 0xa2, 0x48, 0x49, 0x64, 0x79, 0x2f, + 0x5a, 0x82, 0x61, 0xb1, 0xf4, 0x1c, 0x7e, 0x1f, 0xc6, 0x64, 0x47, 0xe8, 0x3d, 0x6c, 0x78, 0x5b, + 0xa6, 0x85, 0xd2, 0x47, 0x51, 0xcb, 0x8e, 0xf0, 0x20, 0x8d, 0x42, 0x9f, 0xaf, 0x9e, 0xf2, 0x30, + 0xe2, 0x47, 0x11, 0xd0, 0x65, 0x0c, 0xca, 0x1e, 0x0c, 0xb0, 0x64, 0x8b, 0xf3, 0x5d, 0x61, 0x8c, + 0x4c, 0x75, 0xbb, 0x1e, 0x7c, 0x6a, 0x08, 0x4a, 0x7b, 0xdc, 0x07, 0xfa, 0x97, 0xc6, 0xd2, 0x33, + 0x84, 0x98, 0xa4, 0xc2, 0x0b, 0x06, 0xa0, 0x8a, 0x72, 0xb5, 0x23, 0x12, 0xa0, 0x63, 0xcc, 0x25, + 0x93, 0x07, 0x49, 0xa8, 0xd4, 0x10, 0x02, 0xea, 0x60, 0x41, 0xf5, 0x92, 0xbe, 0x14, 0x03, 0x9c, + 0x65, 0x74, 0x1c, 0xa9, 0x1b, 0x61, 0x12, 0xaa, 0x13, 0xd3, 0x4a, 0x08, 0x99, 0xc8, 0x2a, 0xab, + 0xbe, 0xf4, 0xbc, 0x43, 0xdc, 0xcc, 0x06, 0x2b, 0xfc, 0x1a, 0xa1, 0xd5, 0x75, 0x29, 0xbe, 0x48, + 0x68, 0x07, 0xdb, 0xda, 0xa6, 0x14, 0x77, 0xc3, 0x64, 0x40, 0xc7, 0x51, 0xda, 0x1e, 0xf0, 0xc8, + 0x48, 0x6e, 0x91, 0xc6, 0x46, 0x34, 0x34, 0x6a, 0xea, 0x46, 0x29, 0x2e, 0x90, 0xed, 0x0a, 0x92, + 0x30, 0x01, 0x52, 0x08, 0xe8, 0x04, 0x9b, 0x22, 0x4d, 0x9b, 0xf6, 0x48, 0x6b, 0x2c, 0x7d, 0x94, + 0xcc, 0x5c, 0xb8, 0x07, 0xb0, 0x49, 0x52, 0xcf, 0x54, 0x53, 0xe2, 0xae, 0x85, 0x09, 0x97, 0x23, + 0xdb, 0x5b, 0x68, 0x80, 0x35, 0xb7, 0x11, 0x09, 0xae, 0x33, 0x00, 0x96, 0x5e, 0x74, 0xcd, 0x20, + 0x36, 0x1b, 0xa7, 0x48, 0xf3, 0x20, 0x09, 0xe0, 0x38, 0x4c, 0x20, 0xa0, 0x63, 0xa6, 0xe6, 0x6d, + 0xb5, 0x94, 0xc5, 0x17, 0x60, 0x04, 0xd1, 0x98, 0x0a, 0x06, 0x58, 0xb8, 0xb7, 0xb9, 0xaa, 0x40, + 0xc7, 0x78, 0x6e, 0x5d, 0x73, 0xcd, 0x3b, 0xaa, 0x6e, 0x1f, 0x98, 0x73, 0x3b, 0x11, 0x77, 0x4b, + 0x4c, 0xd1, 0x13, 0xd4, 0xb4, 0x09, 0x7a, 0x6f, 0xa4, 0x34, 0xc4, 0x1d, 0x91, 0x1c, 0x87, 0x03, + 0x45, 0x43, 0xd4, 0xb4, 0x25, 0x78, 0x50, 0xd9, 0xfe, 0x2c, 0x66, 0x8e, 0x07, 0x11, 0x70, 0x55, + 0x95, 0x7a, 0xc7, 0x74, 0x3d, 0x63, 0xea, 0x6a, 0x14, 0x72, 0x45, 0x23, 0x74, 0x05, 0xad, 0xb4, + 0xcb, 0x18, 0x0f, 0x75, 0x35, 0xd2, 0x20, 0xed, 0x3a, 0x61, 0xd7, 0xc8, 0x8c, 0xe5, 0xef, 0x73, + 0xa9, 0x43, 0x23, 0xe4, 0x25, 0xc7, 0xa4, 0x8f, 0x14, 0x69, 0x89, 0xbd, 0x8c, 0x43, 0xc6, 0xbd, + 0xcd, 0x55, 0x09, 0xfd, 0xcc, 0x61, 0x73, 0xe4, 0x6a, 0xee, 0x5a, 0x89, 0xff, 0xdc, 0x61, 0xb3, + 0x64, 0x1a, 0x5d, 0x2b, 0x30, 0x45, 0x7f, 0x61, 0x40, 0x74, 0xa2, 0x02, 0xfe, 0xd2, 0x48, 0xc8, + 0xbc, 0xa8, 0xe0, 0xbf, 0x32, 0xca, 0x50, 0x42, 0x96, 0x44, 0x8a, 0xbe, 0xea, 0xa0, 0xa5, 0xb9, + 0xb2, 0x0c, 0xa6, 0xaf, 0x19, 0x46, 0x94, 0x5a, 0x30, 0xbe, 0x6e, 0x18, 0x33, 0x99, 0x05, 0xfa, + 0x86, 0x41, 0x6f, 0xf3, 0x24, 0x10, 0xc7, 0xc7, 0x05, 0xfa, 0xa6, 0xc3, 0xe6, 0xc9, 0x2c, 0x6e, + 0x5f, 0xe3, 0x11, 0x4f, 0xfc, 0x92, 0xff, 0x2d, 0x87, 0x5d, 0x27, 0xf4, 0x82, 0x3a, 0x45, 0x9f, + 0x1b, 0x67, 0x34, 0x8f, 0xaf, 0x29, 0x1e, 0xfa, 0xa5, 0x71, 0x13, 0xab, 0x8c, 0xd1, 0x62, 0x5f, + 0x1e, 0x67, 0xd3, 0x36, 0xe8, 0x76, 0xfd, 0x95, 0x71, 0xd6, 0x22, 0x13, 0xbd, 0x44, 0x81, 0xd4, + 0xf4, 0x73, 0x98, 0xdf, 0x13, 0xb6, 0x83, 0xd2, 0xcf, 0x63, 0x19, 0x5d, 0x31, 0xf9, 0x4d, 0x5f, + 0xc0, 0xe9, 0xcc, 0x3c, 0x50, 0x90, 0x04, 0x95, 0xda, 0x51, 0xf4, 0x0b, 0x66, 0x87, 0x1d, 0x7f, + 0xf4, 0x6f, 0x35, 0x13, 0x9a, 0xea, 0x2c, 0xfc, 0x7b, 0x0d, 0x4d, 0xd8, 0x04, 0x5d, 0x96, 0x33, + 0xfd, 0x47, 0x8d, 0xdd, 0x24, 0xd7, 0x73, 0xcc, 0x4c, 0xa6, 0xa2, 0x90, 0xff, 0x59, 0x63, 0xb7, + 0xc8, 0x0d, 0x6c, 0xd3, 0x45, 0xde, 0xe0, 0xa6, 0x50, 0xe9, 0xd0, 0x57, 0xf4, 0x5f, 0x35, 0x76, + 0x2f, 0x99, 0xdb, 0x04, 0x5d, 0x9c, 0x47, 0x85, 0xf8, 0xef, 0x1a, 0x9b, 0x22, 0x93, 0x1e, 0x8e, + 0x2e, 0x38, 0x05, 0xfa, 0x6a, 0x0d, 0x0f, 0x35, 0x5f, 0x66, 0xe6, 0xbc, 0x56, 0xc3, 0x50, 0x3f, + 0xcd, 0xb5, 0x7f, 0xd2, 0x8d, 0x3b, 0x27, 0x3c, 0x49, 0x20, 0x52, 0xf4, 0xf5, 0x1a, 0x06, 0xd4, + 0x83, 0x58, 0x9c, 0x42, 0x05, 0x7e, 0xc3, 0x38, 0x6d, 0x98, 0x3f, 0x36, 0x04, 0x39, 0x2a, 0x08, + 0x6f, 0xd6, 0xf0, 0x68, 0x2c, 0xff, 0x79, 0xca, 0x5b, 0x35, 0x76, 0x1f, 0x99, 0xb7, 0xcd, 0x22, + 0x3f, 0x18, 0x24, 0x0e, 0x00, 0xdb, 0x2b, 0x7d, 0xae, 0x5e, 0x48, 0xec, 0x42, 0xa4, 0x79, 0xb1, + 0xef, 0x33, 0x75, 0xb4, 0x0b, 0x8b, 0xab, 0xec, 0xaa, 0x8a, 0x3e, 0x5f, 0xc7, 0x13, 0xdd, 0x04, + 0x9d, 0x35, 0x56, 0x45, 0x3f, 0x6b, 0x90, 0x4c, 0xb2, 0x11, 0xf9, 0x9b, 0x3a, 0x9b, 0x21, 0xc4, + 0xd6, 0xa4, 0x01, 0x7e, 0x9b, 0x8b, 0xc2, 0xbb, 0xcb, 0x29, 0x48, 0xd3, 0xd8, 0xe9, 0xef, 0x0a, + 0x05, 0x95, 0xce, 0x47, 0x7f, 0x5f, 0xc7, 0x90, 0xed, 0x87, 0x31, 0xec, 0x87, 0xfe, 0x1d, 0xfa, + 0xb5, 0x26, 0x86, 0xcc, 0x78, 0xb4, 0x23, 0x02, 0xb0, 0x27, 0xfc, 0xf5, 0x26, 0x26, 0x0c, 0xe6, + 0xa1, 0x4d, 0x98, 0x6f, 0x98, 0x75, 0xd6, 0xbd, 0x7b, 0x5d, 0xfa, 0x4d, 0xbc, 0x43, 0x91, 0x6c, + 0xbd, 0xbf, 0xb7, 0x4b, 0xbf, 0xd5, 0x44, 0x55, 0xab, 0x51, 0x24, 0x7c, 0xae, 0x8b, 0x6a, 0xf8, + 0x76, 0x13, 0xcb, 0xa9, 0xa2, 0x3d, 0x3b, 0xb5, 0x17, 0x9b, 0x18, 0xfb, 0x0c, 0x37, 0xc9, 0xd6, + 0xc5, 0xa6, 0xf8, 0x1d, 0x23, 0x15, 0x5f, 0x74, 0x68, 0xc9, 0xbe, 0xa6, 0xdf, 0x35, 0x7c, 0x17, + 0xaf, 0x05, 0xf4, 0x0f, 0xad, 0x2c, 0xbf, 0x2a, 0xd8, 0x2b, 0x2d, 0x5b, 0x1f, 0xe7, 0xef, 0x01, + 0xf4, 0x8f, 0x06, 0xbe, 0x78, 0x77, 0xa0, 0x7f, 0x6a, 0xa1, 0x61, 0xd5, 0xf1, 0x8f, 0x97, 0x60, + 0x45, 0xff, 0xdc, 0x42, 0x0b, 0xca, 0x41, 0x4f, 0xbf, 0xe7, 0x62, 0xb0, 0xf2, 0x11, 0x4f, 0xbf, + 0xef, 0xa2, 0x9b, 0x17, 0x86, 0x3b, 0xfd, 0x81, 0x6b, 0x8e, 0xa3, 0x18, 0xeb, 0xf4, 0x87, 0x15, + 0x00, 0xb9, 0xe8, 0x8f, 0x5c, 0xd3, 0x81, 0xce, 0x8d, 0x72, 0xfa, 0x63, 0x17, 0x6d, 0xbb, 0x38, + 0xc4, 0xe9, 0x4f, 0x5c, 0x7b, 0xdc, 0xc5, 0xf8, 0xa6, 0x3f, 0x75, 0xb1, 0x02, 0x2e, 0x1f, 0xdc, + 0xf4, 0x25, 0xa3, 0xab, 0x1c, 0xd9, 0xf4, 0x65, 0x77, 0xa9, 0x4d, 0x1a, 0x5d, 0x15, 0x99, 0xb9, + 0xd1, 0x20, 0xb5, 0xae, 0x8a, 0xe8, 0x18, 0xb6, 0xd9, 0x35, 0x21, 0xa2, 0xf5, 0xb3, 0x54, 0x3e, + 0xf5, 0x01, 0xea, 0x2c, 0xad, 0x91, 0x99, 0x8e, 0x88, 0x53, 0x5e, 0x94, 0x9b, 0x19, 0x15, 0x76, + 0xc6, 0x40, 0x60, 0x53, 0x65, 0x0c, 0x7b, 0xf5, 0xfa, 0x19, 0xf8, 0x43, 0x33, 0xd1, 0x1c, 0x5c, + 0xe2, 0x26, 0x0c, 0x72, 0x40, 0xc7, 0x97, 0x9e, 0x21, 0xb4, 0x23, 0x12, 0x15, 0x2a, 0x0d, 0x89, + 0x3f, 0xda, 0x82, 0x53, 0x88, 0xcc, 0xdc, 0xd4, 0x52, 0x24, 0x03, 0x3a, 0x66, 0xde, 0x09, 0x60, + 0xee, 0xfb, 0x76, 0xba, 0xae, 0xe1, 0x5d, 0xc0, 0x3c, 0x06, 0xa6, 0x09, 0x59, 0x3f, 0x85, 0x44, + 0x0f, 0x79, 0x14, 0x8d, 0x68, 0x0d, 0xd7, 0x9d, 0xa1, 0xd2, 0x22, 0x0e, 0x3f, 0x6d, 0xe6, 0xf7, + 0x57, 0x1d, 0xd2, 0xb2, 0xa3, 0xb4, 0x30, 0xcd, 0x2e, 0xfb, 0x90, 0x04, 0xa1, 0x11, 0x8e, 0x77, + 0x59, 0x03, 0x65, 0x43, 0xdf, 0x29, 0x99, 0xf6, 0x34, 0x97, 0x3a, 0x7f, 0x74, 0x58, 0xa8, 0x2b, + 0xee, 0x26, 0x91, 0xe0, 0x81, 0x99, 0xe7, 0xc5, 0xd6, 0x3e, 0x97, 0xca, 0x0c, 0x75, 0xbc, 0xea, + 0x67, 0xf2, 0xa5, 0xf1, 0x27, 0xa0, 0x57, 0x4a, 0xb0, 0xf4, 0x79, 0x02, 0x87, 0xa7, 0x05, 0x4d, + 0xb2, 0xe7, 0x99, 0x4e, 0x96, 0xee, 0x27, 0x6e, 0xf5, 0x19, 0x67, 0x3c, 0x2a, 0xc7, 0xe0, 0xd8, + 0xd2, 0x2b, 0x0e, 0x0e, 0x96, 0x8b, 0xef, 0x30, 0x5a, 0x79, 0x36, 0xae, 0x46, 0x91, 0x7d, 0x4e, + 0x15, 0x88, 0x4d, 0x44, 0xeb, 0x59, 0x01, 0x62, 0x32, 0x52, 0x6c, 0xf2, 0xd3, 0x95, 0x9d, 0x1a, + 0x24, 0xad, 0x9d, 0x63, 0xf3, 0x80, 0xa3, 0x63, 0x55, 0x08, 0xeb, 0xd9, 0x3e, 0xa2, 0x2a, 0x5c, + 0x66, 0x2c, 0xd1, 0x89, 0x73, 0x68, 0x96, 0x18, 0xb4, 0x71, 0xce, 0x9a, 0x6c, 0x5e, 0x4c, 0x9e, + 0x03, 0xb3, 0xb9, 0xd1, 0xfc, 0x88, 0x20, 0x57, 0x8b, 0xf7, 0xe9, 0x21, 0x9c, 0xe9, 0x43, 0x71, + 0xf4, 0x2c, 0x7b, 0x60, 0xd9, 0xfe, 0x5f, 0x5a, 0xce, 0xff, 0x2f, 0x2d, 0x6f, 0x83, 0x52, 0x7c, + 0x00, 0xbb, 0xa9, 0x19, 0xac, 0xf3, 0x7f, 0x6d, 0x98, 0x07, 0xf8, 0xe5, 0xcf, 0xe2, 0xea, 0x83, + 0xda, 0x9b, 0x49, 0x2b, 0xab, 0xdd, 0xa3, 0x67, 0xd7, 0x9e, 0x26, 0xd3, 0xa1, 0xc8, 0xf7, 0x0d, + 0x64, 0xea, 0xaf, 0xb5, 0x3a, 0x66, 0x5f, 0x1f, 0x65, 0xf4, 0x9d, 0x8f, 0x3f, 0x3e, 0x08, 0xf5, + 0xc9, 0xf0, 0x08, 0xa5, 0xad, 0x58, 0xb6, 0x47, 0x43, 0x91, 0x7d, 0xad, 0x84, 0x89, 0xc6, 0xa2, + 0x8f, 0xec, 0x9f, 0xaf, 0x15, 0xab, 0x31, 0x3d, 0xfa, 0xa2, 0xe3, 0x1c, 0x4d, 0x18, 0xe8, 0xf1, + 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xd2, 0xcb, 0x48, 0x3f, 0x13, 0x00, 0x00, }