From a6ab1fd7dae8a54d5e3a6a12d47be012d1fd936f Mon Sep 17 00:00:00 2001 From: tzwang Date: Mon, 22 May 2023 17:30:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E6=99=BA=E7=AB=A0=E9=B1=BC=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: e9129ab518f09b5a77e9820249897d6f0d26f038 --- .../rpc/internal/config/octopusConfig.go | 5 + .../rpc/internal/logic/createnotebooklogic.go | 47 + .../rpc/internal/logic/createtrainjoblogic.go | 48 + .../rpc/internal/logic/getnotebooklogic.go | 47 + .../rpc/internal/logic/startnotebooklogic.go | 47 + .../rpc/internal/logic/stopnotebooklogic.go | 47 + .../rpc/internal/server/octopusserver.go | 28 +- .../PCM-OCTOPUS/rpc/octopus/octopus.pb.go | 3516 +++++++++++++---- .../rpc/octopus/octopus_grpc.pb.go | 184 +- .../PCM-OCTOPUS/rpc/octopusclient/octopus.go | 62 +- .../PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto | 181 +- 11 files changed, 3530 insertions(+), 682 deletions(-) create mode 100644 adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createnotebooklogic.go create mode 100644 adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createtrainjoblogic.go create mode 100644 adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/getnotebooklogic.go create mode 100644 adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/startnotebooklogic.go create mode 100644 adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stopnotebooklogic.go diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go index 3834c43e..07f92dd2 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go @@ -40,4 +40,9 @@ type OctopusApi struct { DeleteDataSetVersion string GetDatasetVersionList string DeleteNotebook string + StartNotebook string + StopNotebook string + CreateNotebook string + GetNotebook string + CreateTrainJob string } diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createnotebooklogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createnotebooklogic.go new file mode 100644 index 00000000..ca71adf9 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createnotebooklogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateNotebookLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewCreateNotebookLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateNotebookLogic { + return &CreateNotebookLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *CreateNotebookLogic) CreateNotebook(in *octopus.CreateNotebookReq) (*octopus.CreateNotebookResp, error) { + resp := &octopus.CreateNotebookResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.CreateNotebook + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetBody(in.Param). + SetResult(resp). + Post(reqUrl) + + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createtrainjoblogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createtrainjoblogic.go new file mode 100644 index 00000000..c2f6ec3a --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/createtrainjoblogic.go @@ -0,0 +1,48 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateTrainJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewCreateTrainJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateTrainJobLogic { + return &CreateTrainJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// TrainJobService +func (l *CreateTrainJobLogic) CreateTrainJob(in *octopus.CreateTrainJobReq) (*octopus.CreateTrainJobResp, error) { + resp := &octopus.CreateTrainJobResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.CreateTrainJob + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetBody(in.Param). + SetResult(resp). + Post(reqUrl) + + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/getnotebooklogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/getnotebooklogic.go new file mode 100644 index 00000000..3e893d8f --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/getnotebooklogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetNotebookLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetNotebookLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetNotebookLogic { + return &GetNotebookLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetNotebookLogic) GetNotebook(in *octopus.GetNotebookReq) (*octopus.GetNotebookResp, error) { + resp := &octopus.GetNotebookResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.GetNotebook + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetPathParam("id", in.Id). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/startnotebooklogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/startnotebooklogic.go new file mode 100644 index 00000000..52f00e63 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/startnotebooklogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type StartNotebookLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewStartNotebookLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StartNotebookLogic { + return &StartNotebookLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *StartNotebookLogic) StartNotebook(in *octopus.StartNotebookReq) (*octopus.StartNotebookResp, error) { + resp := &octopus.StartNotebookResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.StartNotebook + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetPathParam("id", in.Id). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stopnotebooklogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stopnotebooklogic.go new file mode 100644 index 00000000..4f670c4d --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stopnotebooklogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type StopNotebookLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewStopNotebookLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StopNotebookLogic { + return &StopNotebookLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *StopNotebookLogic) StopNotebook(in *octopus.StopNotebookReq) (*octopus.StopNotebookResp, error) { + resp := &octopus.StopNotebookResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.StopNotebook + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetPathParam("id", in.Id). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go index 5aec497b..2d956ae0 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go @@ -124,17 +124,37 @@ func (s *OctopusServer) DeleteDataSetVersion(ctx context.Context, in *octopus.De return l.DeleteDataSetVersion(in) } -// ModelDeployService +// Develop func (s *OctopusServer) GetNotebookList(ctx context.Context, in *octopus.GetNotebookListReq) (*octopus.GetNotebookListResp, error) { l := logic.NewGetNotebookListLogic(ctx, s.svcCtx) return l.GetNotebookList(in) } +func (s *OctopusServer) GetNotebook(ctx context.Context, in *octopus.GetNotebookReq) (*octopus.GetNotebookResp, error) { + l := logic.NewGetNotebookLogic(ctx, s.svcCtx) + return l.GetNotebook(in) +} + func (s *OctopusServer) DeleteNotebook(ctx context.Context, in *octopus.DeleteNotebookReq) (*octopus.DeleteNotebookResp, error) { l := logic.NewDeleteNotebookLogic(ctx, s.svcCtx) return l.DeleteNotebook(in) } +func (s *OctopusServer) CreateNotebook(ctx context.Context, in *octopus.CreateNotebookReq) (*octopus.CreateNotebookResp, error) { + l := logic.NewCreateNotebookLogic(ctx, s.svcCtx) + return l.CreateNotebook(in) +} + +func (s *OctopusServer) StartNotebook(ctx context.Context, in *octopus.StartNotebookReq) (*octopus.StartNotebookResp, error) { + l := logic.NewStartNotebookLogic(ctx, s.svcCtx) + return l.StartNotebook(in) +} + +func (s *OctopusServer) StopNotebook(ctx context.Context, in *octopus.StopNotebookReq) (*octopus.StopNotebookResp, error) { + l := logic.NewStopNotebookLogic(ctx, s.svcCtx) + return l.StopNotebook(in) +} + // ImageService func (s *OctopusServer) GetUserImageList(ctx context.Context, in *octopus.GetUserImageListReq) (*octopus.GetUserImageListResp, error) { l := logic.NewGetUserImageListLogic(ctx, s.svcCtx) @@ -160,3 +180,9 @@ func (s *OctopusServer) UploadImageConfirm(ctx context.Context, in *octopus.Uplo l := logic.NewUploadImageConfirmLogic(ctx, s.svcCtx) return l.UploadImageConfirm(in) } + +// TrainJobService +func (s *OctopusServer) CreateTrainJob(ctx context.Context, in *octopus.CreateTrainJobReq) (*octopus.CreateTrainJobResp, error) { + l := logic.NewCreateTrainJobLogic(ctx, s.svcCtx) + return l.CreateTrainJob(in) +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go index 3ce886f3..e244ce08 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go @@ -4282,6 +4282,487 @@ func (x *PayloadDeleteDataSetVersion) GetDeletedAt() int64 { } // *****************Develop Start************************ +type CreateNotebookReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Param *CreateNotebookParam `protobuf:"bytes,2,opt,name=param,proto3" json:"param,omitempty"` +} + +func (x *CreateNotebookReq) Reset() { + *x = CreateNotebookReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNotebookReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNotebookReq) ProtoMessage() {} + +func (x *CreateNotebookReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNotebookReq.ProtoReflect.Descriptor instead. +func (*CreateNotebookReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{68} +} + +func (x *CreateNotebookReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *CreateNotebookReq) GetParam() *CreateNotebookParam { + if x != nil { + return x.Param + } + return nil +} + +type CreateNotebookParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AlgorithmId string `protobuf:"bytes,1,opt,name=algorithmId,proto3" json:"algorithmId,omitempty"` + AlgorithmVersion string `protobuf:"bytes,2,opt,name=algorithmVersion,proto3" json:"algorithmVersion,omitempty"` + Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` + DatasetId string `protobuf:"bytes,4,opt,name=datasetId,proto3" json:"datasetId,omitempty"` + DatasetVersion string `protobuf:"bytes,5,opt,name=datasetVersion,proto3" json:"datasetVersion,omitempty"` + Desc string `protobuf:"bytes,6,opt,name=desc,proto3" json:"desc,omitempty"` + Envs *Envs `protobuf:"bytes,7,opt,name=envs,proto3" json:"envs,omitempty"` + ImageId string `protobuf:"bytes,8,opt,name=imageId,proto3" json:"imageId,omitempty"` + ImageUrl string `protobuf:"bytes,9,opt,name=imageUrl,proto3" json:"imageUrl,omitempty"` + Mounts []*Mounts `protobuf:"bytes,10,rep,name=mounts,proto3" json:"mounts,omitempty"` + Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` + ResourcePool string `protobuf:"bytes,12,opt,name=resourcePool,proto3" json:"resourcePool,omitempty"` + ResourceSpecId string `protobuf:"bytes,13,opt,name=resourceSpecId,proto3" json:"resourceSpecId,omitempty"` + TaskNumber int32 `protobuf:"varint,14,opt,name=taskNumber,proto3" json:"taskNumber,omitempty"` +} + +func (x *CreateNotebookParam) Reset() { + *x = CreateNotebookParam{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNotebookParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNotebookParam) ProtoMessage() {} + +func (x *CreateNotebookParam) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNotebookParam.ProtoReflect.Descriptor instead. +func (*CreateNotebookParam) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{69} +} + +func (x *CreateNotebookParam) GetAlgorithmId() string { + if x != nil { + return x.AlgorithmId + } + return "" +} + +func (x *CreateNotebookParam) GetAlgorithmVersion() string { + if x != nil { + return x.AlgorithmVersion + } + return "" +} + +func (x *CreateNotebookParam) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *CreateNotebookParam) GetDatasetId() string { + if x != nil { + return x.DatasetId + } + return "" +} + +func (x *CreateNotebookParam) GetDatasetVersion() string { + if x != nil { + return x.DatasetVersion + } + return "" +} + +func (x *CreateNotebookParam) GetDesc() string { + if x != nil { + return x.Desc + } + return "" +} + +func (x *CreateNotebookParam) GetEnvs() *Envs { + if x != nil { + return x.Envs + } + return nil +} + +func (x *CreateNotebookParam) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CreateNotebookParam) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *CreateNotebookParam) GetMounts() []*Mounts { + if x != nil { + return x.Mounts + } + return nil +} + +func (x *CreateNotebookParam) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateNotebookParam) GetResourcePool() string { + if x != nil { + return x.ResourcePool + } + return "" +} + +func (x *CreateNotebookParam) GetResourceSpecId() string { + if x != nil { + return x.ResourceSpecId + } + return "" +} + +func (x *CreateNotebookParam) GetTaskNumber() int32 { + if x != nil { + return x.TaskNumber + } + return 0 +} + +type CreateNotebookResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadCreateNotebook `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CreateNotebookResp) Reset() { + *x = CreateNotebookResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNotebookResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNotebookResp) ProtoMessage() {} + +func (x *CreateNotebookResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNotebookResp.ProtoReflect.Descriptor instead. +func (*CreateNotebookResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{70} +} + +func (x *CreateNotebookResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *CreateNotebookResp) GetPayload() *PayloadCreateNotebook { + if x != nil { + return x.Payload + } + return nil +} + +func (x *CreateNotebookResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadCreateNotebook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PayloadCreateNotebook) Reset() { + *x = PayloadCreateNotebook{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadCreateNotebook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadCreateNotebook) ProtoMessage() {} + +func (x *PayloadCreateNotebook) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadCreateNotebook.ProtoReflect.Descriptor instead. +func (*PayloadCreateNotebook) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{71} +} + +func (x *PayloadCreateNotebook) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetNotebookReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *GetNotebookReq) Reset() { + *x = GetNotebookReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNotebookReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNotebookReq) ProtoMessage() {} + +func (x *GetNotebookReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNotebookReq.ProtoReflect.Descriptor instead. +func (*GetNotebookReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{72} +} + +func (x *GetNotebookReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetNotebookReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetNotebookResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadGetNotebook `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *GetNotebookResp) Reset() { + *x = GetNotebookResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNotebookResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNotebookResp) ProtoMessage() {} + +func (x *GetNotebookResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNotebookResp.ProtoReflect.Descriptor instead. +func (*GetNotebookResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{73} +} + +func (x *GetNotebookResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *GetNotebookResp) GetPayload() *PayloadGetNotebook { + if x != nil { + return x.Payload + } + return nil +} + +func (x *GetNotebookResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadGetNotebook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Notebook *Notebook `protobuf:"bytes,1,opt,name=notebook,proto3" json:"notebook,omitempty"` +} + +func (x *PayloadGetNotebook) Reset() { + *x = PayloadGetNotebook{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadGetNotebook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadGetNotebook) ProtoMessage() {} + +func (x *PayloadGetNotebook) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadGetNotebook.ProtoReflect.Descriptor instead. +func (*PayloadGetNotebook) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{74} +} + +func (x *PayloadGetNotebook) GetNotebook() *Notebook { + if x != nil { + return x.Notebook + } + return nil +} + type DeleteNotebookReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4294,7 +4775,7 @@ type DeleteNotebookReq struct { func (x *DeleteNotebookReq) Reset() { *x = DeleteNotebookReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[68] + mi := &file_octopus_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4307,7 +4788,7 @@ func (x *DeleteNotebookReq) String() string { func (*DeleteNotebookReq) ProtoMessage() {} func (x *DeleteNotebookReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[68] + mi := &file_octopus_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4320,7 +4801,7 @@ func (x *DeleteNotebookReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteNotebookReq.ProtoReflect.Descriptor instead. func (*DeleteNotebookReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{68} + return file_octopus_proto_rawDescGZIP(), []int{75} } func (x *DeleteNotebookReq) GetPlatform() string { @@ -4350,7 +4831,7 @@ type DeleteNotebookResp struct { func (x *DeleteNotebookResp) Reset() { *x = DeleteNotebookResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[69] + mi := &file_octopus_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4363,7 +4844,7 @@ func (x *DeleteNotebookResp) String() string { func (*DeleteNotebookResp) ProtoMessage() {} func (x *DeleteNotebookResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[69] + mi := &file_octopus_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4376,7 +4857,7 @@ func (x *DeleteNotebookResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteNotebookResp.ProtoReflect.Descriptor instead. func (*DeleteNotebookResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{69} + return file_octopus_proto_rawDescGZIP(), []int{76} } func (x *DeleteNotebookResp) GetSuccess() bool { @@ -4411,7 +4892,7 @@ type PayloadDeleteNotebook struct { func (x *PayloadDeleteNotebook) Reset() { *x = PayloadDeleteNotebook{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[70] + mi := &file_octopus_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4424,7 +4905,7 @@ func (x *PayloadDeleteNotebook) String() string { func (*PayloadDeleteNotebook) ProtoMessage() {} func (x *PayloadDeleteNotebook) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[70] + mi := &file_octopus_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4437,7 +4918,7 @@ func (x *PayloadDeleteNotebook) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadDeleteNotebook.ProtoReflect.Descriptor instead. func (*PayloadDeleteNotebook) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{70} + return file_octopus_proto_rawDescGZIP(), []int{77} } func (x *PayloadDeleteNotebook) GetId() string { @@ -4460,7 +4941,7 @@ type GetNotebookListReq struct { func (x *GetNotebookListReq) Reset() { *x = GetNotebookListReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[71] + mi := &file_octopus_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4473,7 +4954,7 @@ func (x *GetNotebookListReq) String() string { func (*GetNotebookListReq) ProtoMessage() {} func (x *GetNotebookListReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[71] + mi := &file_octopus_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4486,7 +4967,7 @@ func (x *GetNotebookListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNotebookListReq.ProtoReflect.Descriptor instead. func (*GetNotebookListReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{71} + return file_octopus_proto_rawDescGZIP(), []int{78} } func (x *GetNotebookListReq) GetPlatform() string { @@ -4523,7 +5004,7 @@ type GetNotebookListResp struct { func (x *GetNotebookListResp) Reset() { *x = GetNotebookListResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[72] + mi := &file_octopus_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4536,7 +5017,7 @@ func (x *GetNotebookListResp) String() string { func (*GetNotebookListResp) ProtoMessage() {} func (x *GetNotebookListResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[72] + mi := &file_octopus_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4549,7 +5030,7 @@ func (x *GetNotebookListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNotebookListResp.ProtoReflect.Descriptor instead. func (*GetNotebookListResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{72} + return file_octopus_proto_rawDescGZIP(), []int{79} } func (x *GetNotebookListResp) GetSuccess() bool { @@ -4578,14 +5059,14 @@ type PayloadNotebookList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TotalSize int32 `protobuf:"varint,1,opt,name=totalSize,proto3" json:"totalSize,omitempty"` - Notebooks []*Notebooks `protobuf:"bytes,2,rep,name=notebooks,proto3" json:"notebooks,omitempty"` + TotalSize int32 `protobuf:"varint,1,opt,name=totalSize,proto3" json:"totalSize,omitempty"` + Notebooks []*Notebook `protobuf:"bytes,2,rep,name=notebooks,proto3" json:"notebooks,omitempty"` } func (x *PayloadNotebookList) Reset() { *x = PayloadNotebookList{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[73] + mi := &file_octopus_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4598,7 +5079,7 @@ func (x *PayloadNotebookList) String() string { func (*PayloadNotebookList) ProtoMessage() {} func (x *PayloadNotebookList) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[73] + mi := &file_octopus_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4611,7 +5092,7 @@ func (x *PayloadNotebookList) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadNotebookList.ProtoReflect.Descriptor instead. func (*PayloadNotebookList) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{73} + return file_octopus_proto_rawDescGZIP(), []int{80} } func (x *PayloadNotebookList) GetTotalSize() int32 { @@ -4621,14 +5102,14 @@ func (x *PayloadNotebookList) GetTotalSize() int32 { return 0 } -func (x *PayloadNotebookList) GetNotebooks() []*Notebooks { +func (x *PayloadNotebookList) GetNotebooks() []*Notebook { if x != nil { return x.Notebooks } return nil } -type Notebooks struct { +type Notebook struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4658,23 +5139,23 @@ type Notebooks struct { ImageUrl string `protobuf:"bytes,23,opt,name=imageUrl,proto3" json:"imageUrl,omitempty"` } -func (x *Notebooks) Reset() { - *x = Notebooks{} +func (x *Notebook) Reset() { + *x = Notebook{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[74] + mi := &file_octopus_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Notebooks) String() string { +func (x *Notebook) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Notebooks) ProtoMessage() {} +func (*Notebook) ProtoMessage() {} -func (x *Notebooks) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[74] +func (x *Notebook) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4685,166 +5166,166 @@ func (x *Notebooks) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Notebooks.ProtoReflect.Descriptor instead. -func (*Notebooks) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{74} +// Deprecated: Use Notebook.ProtoReflect.Descriptor instead. +func (*Notebook) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{81} } -func (x *Notebooks) GetCreatedAt() int64 { +func (x *Notebook) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } -func (x *Notebooks) GetUpdatedAt() int64 { +func (x *Notebook) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } -func (x *Notebooks) GetId() string { +func (x *Notebook) GetId() string { if x != nil { return x.Id } return "" } -func (x *Notebooks) GetUserId() string { +func (x *Notebook) GetUserId() string { if x != nil { return x.UserId } return "" } -func (x *Notebooks) GetWorkspaceId() string { +func (x *Notebook) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } -func (x *Notebooks) GetName() string { +func (x *Notebook) GetName() string { if x != nil { return x.Name } return "" } -func (x *Notebooks) GetDesc() string { +func (x *Notebook) GetDesc() string { if x != nil { return x.Desc } return "" } -func (x *Notebooks) GetImageId() string { +func (x *Notebook) GetImageId() string { if x != nil { return x.ImageId } return "" } -func (x *Notebooks) GetImageName() string { +func (x *Notebook) GetImageName() string { if x != nil { return x.ImageName } return "" } -func (x *Notebooks) GetAlgorithmId() string { +func (x *Notebook) GetAlgorithmId() string { if x != nil { return x.AlgorithmId } return "" } -func (x *Notebooks) GetAlgorithmVersion() string { +func (x *Notebook) GetAlgorithmVersion() string { if x != nil { return x.AlgorithmVersion } return "" } -func (x *Notebooks) GetAlgorithmName() string { +func (x *Notebook) GetAlgorithmName() string { if x != nil { return x.AlgorithmName } return "" } -func (x *Notebooks) GetResourceSpecId() string { +func (x *Notebook) GetResourceSpecId() string { if x != nil { return x.ResourceSpecId } return "" } -func (x *Notebooks) GetResourceSpecName() string { +func (x *Notebook) GetResourceSpecName() string { if x != nil { return x.ResourceSpecName } return "" } -func (x *Notebooks) GetStatus() string { +func (x *Notebook) GetStatus() string { if x != nil { return x.Status } return "" } -func (x *Notebooks) GetDatasetId() string { +func (x *Notebook) GetDatasetId() string { if x != nil { return x.DatasetId } return "" } -func (x *Notebooks) GetDatasetVersion() string { +func (x *Notebook) GetDatasetVersion() string { if x != nil { return x.DatasetVersion } return "" } -func (x *Notebooks) GetDatasetName() string { +func (x *Notebook) GetDatasetName() string { if x != nil { return x.DatasetName } return "" } -func (x *Notebooks) GetResourceSpecPrice() int32 { +func (x *Notebook) GetResourceSpecPrice() int32 { if x != nil { return x.ResourceSpecPrice } return 0 } -func (x *Notebooks) GetNotebookJobId() string { +func (x *Notebook) GetNotebookJobId() string { if x != nil { return x.NotebookJobId } return "" } -func (x *Notebooks) GetImageVersion() string { +func (x *Notebook) GetImageVersion() string { if x != nil { return x.ImageVersion } return "" } -func (x *Notebooks) GetTasks() []*Tasks { +func (x *Notebook) GetTasks() []*Tasks { if x != nil { return x.Tasks } return nil } -func (x *Notebooks) GetImageUrl() string { +func (x *Notebook) GetImageUrl() string { if x != nil { return x.ImageUrl } @@ -4863,7 +5344,7 @@ type Tasks struct { func (x *Tasks) Reset() { *x = Tasks{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[75] + mi := &file_octopus_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4876,7 +5357,7 @@ func (x *Tasks) String() string { func (*Tasks) ProtoMessage() {} func (x *Tasks) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[75] + mi := &file_octopus_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4889,7 +5370,7 @@ func (x *Tasks) ProtoReflect() protoreflect.Message { // Deprecated: Use Tasks.ProtoReflect.Descriptor instead. func (*Tasks) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{75} + return file_octopus_proto_rawDescGZIP(), []int{82} } func (x *Tasks) GetUrl() string { @@ -4906,6 +5387,336 @@ func (x *Tasks) GetName() string { return "" } +type StartNotebookReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *StartNotebookReq) Reset() { + *x = StartNotebookReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartNotebookReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartNotebookReq) ProtoMessage() {} + +func (x *StartNotebookReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartNotebookReq.ProtoReflect.Descriptor instead. +func (*StartNotebookReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{83} +} + +func (x *StartNotebookReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *StartNotebookReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type StartNotebookResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadStartNotebook `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *StartNotebookResp) Reset() { + *x = StartNotebookResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartNotebookResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartNotebookResp) ProtoMessage() {} + +func (x *StartNotebookResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartNotebookResp.ProtoReflect.Descriptor instead. +func (*StartNotebookResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{84} +} + +func (x *StartNotebookResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *StartNotebookResp) GetPayload() *PayloadStartNotebook { + if x != nil { + return x.Payload + } + return nil +} + +func (x *StartNotebookResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadStartNotebook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PayloadStartNotebook) Reset() { + *x = PayloadStartNotebook{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadStartNotebook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadStartNotebook) ProtoMessage() {} + +func (x *PayloadStartNotebook) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadStartNotebook.ProtoReflect.Descriptor instead. +func (*PayloadStartNotebook) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{85} +} + +func (x *PayloadStartNotebook) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type StopNotebookReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *StopNotebookReq) Reset() { + *x = StopNotebookReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopNotebookReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopNotebookReq) ProtoMessage() {} + +func (x *StopNotebookReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopNotebookReq.ProtoReflect.Descriptor instead. +func (*StopNotebookReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{86} +} + +func (x *StopNotebookReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *StopNotebookReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type StopNotebookResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadStopNotebook `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *StopNotebookResp) Reset() { + *x = StopNotebookResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopNotebookResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopNotebookResp) ProtoMessage() {} + +func (x *StopNotebookResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopNotebookResp.ProtoReflect.Descriptor instead. +func (*StopNotebookResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{87} +} + +func (x *StopNotebookResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *StopNotebookResp) GetPayload() *PayloadStopNotebook { + if x != nil { + return x.Payload + } + return nil +} + +func (x *StopNotebookResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadStopNotebook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PayloadStopNotebook) Reset() { + *x = PayloadStopNotebook{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadStopNotebook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadStopNotebook) ProtoMessage() {} + +func (x *PayloadStopNotebook) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadStopNotebook.ProtoReflect.Descriptor instead. +func (*PayloadStopNotebook) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{88} +} + +func (x *PayloadStopNotebook) GetId() string { + if x != nil { + return x.Id + } + return "" +} + // *****************ImageService Start************************ type GetUserImageListReq struct { state protoimpl.MessageState @@ -4920,7 +5731,7 @@ type GetUserImageListReq struct { func (x *GetUserImageListReq) Reset() { *x = GetUserImageListReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[76] + mi := &file_octopus_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4933,7 +5744,7 @@ func (x *GetUserImageListReq) String() string { func (*GetUserImageListReq) ProtoMessage() {} func (x *GetUserImageListReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[76] + mi := &file_octopus_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4946,7 +5757,7 @@ func (x *GetUserImageListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserImageListReq.ProtoReflect.Descriptor instead. func (*GetUserImageListReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{76} + return file_octopus_proto_rawDescGZIP(), []int{89} } func (x *GetUserImageListReq) GetPlatform() string { @@ -4983,7 +5794,7 @@ type GetUserImageListResp struct { func (x *GetUserImageListResp) Reset() { *x = GetUserImageListResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[77] + mi := &file_octopus_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4996,7 +5807,7 @@ func (x *GetUserImageListResp) String() string { func (*GetUserImageListResp) ProtoMessage() {} func (x *GetUserImageListResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[77] + mi := &file_octopus_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5009,7 +5820,7 @@ func (x *GetUserImageListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserImageListResp.ProtoReflect.Descriptor instead. func (*GetUserImageListResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{77} + return file_octopus_proto_rawDescGZIP(), []int{90} } func (x *GetUserImageListResp) GetSuccess() bool { @@ -5045,7 +5856,7 @@ type PayloadUserImageList struct { func (x *PayloadUserImageList) Reset() { *x = PayloadUserImageList{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[78] + mi := &file_octopus_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5058,7 +5869,7 @@ func (x *PayloadUserImageList) String() string { func (*PayloadUserImageList) ProtoMessage() {} func (x *PayloadUserImageList) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[78] + mi := &file_octopus_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5071,7 +5882,7 @@ func (x *PayloadUserImageList) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadUserImageList.ProtoReflect.Descriptor instead. func (*PayloadUserImageList) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{78} + return file_octopus_proto_rawDescGZIP(), []int{91} } func (x *PayloadUserImageList) GetTotalSize() int32 { @@ -5100,7 +5911,7 @@ type Images struct { func (x *Images) Reset() { *x = Images{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[79] + mi := &file_octopus_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5113,7 +5924,7 @@ func (x *Images) String() string { func (*Images) ProtoMessage() {} func (x *Images) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[79] + mi := &file_octopus_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5126,7 +5937,7 @@ func (x *Images) ProtoReflect() protoreflect.Message { // Deprecated: Use Images.ProtoReflect.Descriptor instead. func (*Images) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{79} + return file_octopus_proto_rawDescGZIP(), []int{92} } func (x *Images) GetIsShared() bool { @@ -5166,7 +5977,7 @@ type Image struct { func (x *Image) Reset() { *x = Image{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[80] + mi := &file_octopus_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5179,7 +5990,7 @@ func (x *Image) String() string { func (*Image) ProtoMessage() {} func (x *Image) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[80] + mi := &file_octopus_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5192,7 +6003,7 @@ func (x *Image) ProtoReflect() protoreflect.Message { // Deprecated: Use Image.ProtoReflect.Descriptor instead. func (*Image) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{80} + return file_octopus_proto_rawDescGZIP(), []int{93} } func (x *Image) GetId() string { @@ -5298,7 +6109,7 @@ type DeleteImageReq struct { func (x *DeleteImageReq) Reset() { *x = DeleteImageReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[81] + mi := &file_octopus_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5311,7 +6122,7 @@ func (x *DeleteImageReq) String() string { func (*DeleteImageReq) ProtoMessage() {} func (x *DeleteImageReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[81] + mi := &file_octopus_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5324,7 +6135,7 @@ func (x *DeleteImageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteImageReq.ProtoReflect.Descriptor instead. func (*DeleteImageReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{81} + return file_octopus_proto_rawDescGZIP(), []int{94} } func (x *DeleteImageReq) GetPlatform() string { @@ -5354,7 +6165,7 @@ type DeleteImageResp struct { func (x *DeleteImageResp) Reset() { *x = DeleteImageResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[82] + mi := &file_octopus_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5367,7 +6178,7 @@ func (x *DeleteImageResp) String() string { func (*DeleteImageResp) ProtoMessage() {} func (x *DeleteImageResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[82] + mi := &file_octopus_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5380,7 +6191,7 @@ func (x *DeleteImageResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteImageResp.ProtoReflect.Descriptor instead. func (*DeleteImageResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{82} + return file_octopus_proto_rawDescGZIP(), []int{95} } func (x *DeleteImageResp) GetSuccess() bool { @@ -5415,7 +6226,7 @@ type PayloadDeleteImage struct { func (x *PayloadDeleteImage) Reset() { *x = PayloadDeleteImage{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[83] + mi := &file_octopus_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5428,7 +6239,7 @@ func (x *PayloadDeleteImage) String() string { func (*PayloadDeleteImage) ProtoMessage() {} func (x *PayloadDeleteImage) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[83] + mi := &file_octopus_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5441,7 +6252,7 @@ func (x *PayloadDeleteImage) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadDeleteImage.ProtoReflect.Descriptor instead. func (*PayloadDeleteImage) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{83} + return file_octopus_proto_rawDescGZIP(), []int{96} } func (x *PayloadDeleteImage) GetDeletedAt() int64 { @@ -5463,7 +6274,7 @@ type CreateImageReq struct { func (x *CreateImageReq) Reset() { *x = CreateImageReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[84] + mi := &file_octopus_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5476,7 +6287,7 @@ func (x *CreateImageReq) String() string { func (*CreateImageReq) ProtoMessage() {} func (x *CreateImageReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[84] + mi := &file_octopus_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5489,7 +6300,7 @@ func (x *CreateImageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateImageReq.ProtoReflect.Descriptor instead. func (*CreateImageReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{84} + return file_octopus_proto_rawDescGZIP(), []int{97} } func (x *CreateImageReq) GetPlatform() string { @@ -5521,7 +6332,7 @@ type CreateImage struct { func (x *CreateImage) Reset() { *x = CreateImage{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[85] + mi := &file_octopus_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5534,7 +6345,7 @@ func (x *CreateImage) String() string { func (*CreateImage) ProtoMessage() {} func (x *CreateImage) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[85] + mi := &file_octopus_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5547,7 +6358,7 @@ func (x *CreateImage) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateImage.ProtoReflect.Descriptor instead. func (*CreateImage) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{85} + return file_octopus_proto_rawDescGZIP(), []int{98} } func (x *CreateImage) GetImageAddr() string { @@ -5598,7 +6409,7 @@ type CreateImageResp struct { func (x *CreateImageResp) Reset() { *x = CreateImageResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[86] + mi := &file_octopus_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5611,7 +6422,7 @@ func (x *CreateImageResp) String() string { func (*CreateImageResp) ProtoMessage() {} func (x *CreateImageResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[86] + mi := &file_octopus_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5624,7 +6435,7 @@ func (x *CreateImageResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateImageResp.ProtoReflect.Descriptor instead. func (*CreateImageResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{86} + return file_octopus_proto_rawDescGZIP(), []int{99} } func (x *CreateImageResp) GetSuccess() bool { @@ -5660,7 +6471,7 @@ type PayloadCreateImage struct { func (x *PayloadCreateImage) Reset() { *x = PayloadCreateImage{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[87] + mi := &file_octopus_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5673,7 +6484,7 @@ func (x *PayloadCreateImage) String() string { func (*PayloadCreateImage) ProtoMessage() {} func (x *PayloadCreateImage) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[87] + mi := &file_octopus_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5686,7 +6497,7 @@ func (x *PayloadCreateImage) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadCreateImage.ProtoReflect.Descriptor instead. func (*PayloadCreateImage) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{87} + return file_octopus_proto_rawDescGZIP(), []int{100} } func (x *PayloadCreateImage) GetImageId() string { @@ -5716,7 +6527,7 @@ type UploadImageReq struct { func (x *UploadImageReq) Reset() { *x = UploadImageReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[88] + mi := &file_octopus_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5729,7 +6540,7 @@ func (x *UploadImageReq) String() string { func (*UploadImageReq) ProtoMessage() {} func (x *UploadImageReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[88] + mi := &file_octopus_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5742,7 +6553,7 @@ func (x *UploadImageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImageReq.ProtoReflect.Descriptor instead. func (*UploadImageReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{88} + return file_octopus_proto_rawDescGZIP(), []int{101} } func (x *UploadImageReq) GetPlatform() string { @@ -5778,7 +6589,7 @@ type UploadImageParam struct { func (x *UploadImageParam) Reset() { *x = UploadImageParam{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[89] + mi := &file_octopus_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5791,7 +6602,7 @@ func (x *UploadImageParam) String() string { func (*UploadImageParam) ProtoMessage() {} func (x *UploadImageParam) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[89] + mi := &file_octopus_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5804,7 +6615,7 @@ func (x *UploadImageParam) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImageParam.ProtoReflect.Descriptor instead. func (*UploadImageParam) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{89} + return file_octopus_proto_rawDescGZIP(), []int{102} } func (x *UploadImageParam) GetDomain() string { @@ -5834,7 +6645,7 @@ type UploadImageResp struct { func (x *UploadImageResp) Reset() { *x = UploadImageResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[90] + mi := &file_octopus_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5847,7 +6658,7 @@ func (x *UploadImageResp) String() string { func (*UploadImageResp) ProtoMessage() {} func (x *UploadImageResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[90] + mi := &file_octopus_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5860,7 +6671,7 @@ func (x *UploadImageResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImageResp.ProtoReflect.Descriptor instead. func (*UploadImageResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{90} + return file_octopus_proto_rawDescGZIP(), []int{103} } func (x *UploadImageResp) GetSuccess() bool { @@ -5896,7 +6707,7 @@ type PayloadUploadImage struct { func (x *PayloadUploadImage) Reset() { *x = PayloadUploadImage{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[91] + mi := &file_octopus_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5909,7 +6720,7 @@ func (x *PayloadUploadImage) String() string { func (*PayloadUploadImage) ProtoMessage() {} func (x *PayloadUploadImage) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[91] + mi := &file_octopus_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5922,7 +6733,7 @@ func (x *PayloadUploadImage) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadUploadImage.ProtoReflect.Descriptor instead. func (*PayloadUploadImage) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{91} + return file_octopus_proto_rawDescGZIP(), []int{104} } func (x *PayloadUploadImage) GetUploadUrl() string { @@ -5952,7 +6763,7 @@ type Headers struct { func (x *Headers) Reset() { *x = Headers{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[92] + mi := &file_octopus_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5965,7 +6776,7 @@ func (x *Headers) String() string { func (*Headers) ProtoMessage() {} func (x *Headers) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[92] + mi := &file_octopus_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5978,7 +6789,7 @@ func (x *Headers) ProtoReflect() protoreflect.Message { // Deprecated: Use Headers.ProtoReflect.Descriptor instead. func (*Headers) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{92} + return file_octopus_proto_rawDescGZIP(), []int{105} } func (x *Headers) GetAdditionalProp1() string { @@ -6014,7 +6825,7 @@ type UploadImageConfirmReq struct { func (x *UploadImageConfirmReq) Reset() { *x = UploadImageConfirmReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[93] + mi := &file_octopus_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6027,7 +6838,7 @@ func (x *UploadImageConfirmReq) String() string { func (*UploadImageConfirmReq) ProtoMessage() {} func (x *UploadImageConfirmReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[93] + mi := &file_octopus_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6040,7 +6851,7 @@ func (x *UploadImageConfirmReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImageConfirmReq.ProtoReflect.Descriptor instead. func (*UploadImageConfirmReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{93} + return file_octopus_proto_rawDescGZIP(), []int{106} } func (x *UploadImageConfirmReq) GetPlatform() string { @@ -6070,7 +6881,7 @@ type UploadImageConfirmResp struct { func (x *UploadImageConfirmResp) Reset() { *x = UploadImageConfirmResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[94] + mi := &file_octopus_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6083,7 +6894,7 @@ func (x *UploadImageConfirmResp) String() string { func (*UploadImageConfirmResp) ProtoMessage() {} func (x *UploadImageConfirmResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[94] + mi := &file_octopus_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6096,7 +6907,7 @@ func (x *UploadImageConfirmResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImageConfirmResp.ProtoReflect.Descriptor instead. func (*UploadImageConfirmResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{94} + return file_octopus_proto_rawDescGZIP(), []int{107} } func (x *UploadImageConfirmResp) GetSuccess() bool { @@ -6131,7 +6942,7 @@ type PayloadUploadImageConfirm struct { func (x *PayloadUploadImageConfirm) Reset() { *x = PayloadUploadImageConfirm{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[95] + mi := &file_octopus_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6144,7 +6955,7 @@ func (x *PayloadUploadImageConfirm) String() string { func (*PayloadUploadImageConfirm) ProtoMessage() {} func (x *PayloadUploadImageConfirm) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[95] + mi := &file_octopus_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6157,7 +6968,7 @@ func (x *PayloadUploadImageConfirm) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadUploadImageConfirm.ProtoReflect.Descriptor instead. func (*PayloadUploadImageConfirm) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{95} + return file_octopus_proto_rawDescGZIP(), []int{108} } func (x *PayloadUploadImageConfirm) GetUpdatedAt() int64 { @@ -6167,6 +6978,804 @@ func (x *PayloadUploadImageConfirm) GetUpdatedAt() int64 { return 0 } +// *****************TrainJobService Start************************ +type CreateTrainJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Param *CreateTrainJobParam `protobuf:"bytes,2,opt,name=param,proto3" json:"param,omitempty"` +} + +func (x *CreateTrainJobReq) Reset() { + *x = CreateTrainJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTrainJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrainJobReq) ProtoMessage() {} + +func (x *CreateTrainJobReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrainJobReq.ProtoReflect.Descriptor instead. +func (*CreateTrainJobReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{109} +} + +func (x *CreateTrainJobReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *CreateTrainJobReq) GetParam() *CreateTrainJobParam { + if x != nil { + return x.Param + } + return nil +} + +type CreateTrainJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadCreateTrainJob `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CreateTrainJobResp) Reset() { + *x = CreateTrainJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTrainJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrainJobResp) ProtoMessage() {} + +func (x *CreateTrainJobResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrainJobResp.ProtoReflect.Descriptor instead. +func (*CreateTrainJobResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{110} +} + +func (x *CreateTrainJobResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *CreateTrainJobResp) GetPayload() *PayloadCreateTrainJob { + if x != nil { + return x.Payload + } + return nil +} + +func (x *CreateTrainJobResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type CreateTrainJobParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AlgorithmId string `protobuf:"bytes,1,opt,name=algorithmId,proto3" json:"algorithmId,omitempty"` + AlgorithmVersion string `protobuf:"bytes,2,opt,name=algorithmVersion,proto3" json:"algorithmVersion,omitempty"` + Config []*Config `protobuf:"bytes,3,rep,name=config,proto3" json:"config,omitempty"` + DataSetId string `protobuf:"bytes,4,opt,name=dataSetId,proto3" json:"dataSetId,omitempty"` + DataSetVersion string `protobuf:"bytes,5,opt,name=dataSetVersion,proto3" json:"dataSetVersion,omitempty"` + Desc string `protobuf:"bytes,6,opt,name=desc,proto3" json:"desc,omitempty"` + ImageId string `protobuf:"bytes,7,opt,name=imageId,proto3" json:"imageId,omitempty"` + ImageUrl string `protobuf:"bytes,8,opt,name=imageUrl,proto3" json:"imageUrl,omitempty"` + IsDistributed bool `protobuf:"varint,9,opt,name=isDistributed,proto3" json:"isDistributed,omitempty"` + Mounts []*Mounts `protobuf:"bytes,10,rep,name=mounts,proto3" json:"mounts,omitempty"` + Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` + ResourcePool string `protobuf:"bytes,12,opt,name=resourcePool,proto3" json:"resourcePool,omitempty"` +} + +func (x *CreateTrainJobParam) Reset() { + *x = CreateTrainJobParam{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTrainJobParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrainJobParam) ProtoMessage() {} + +func (x *CreateTrainJobParam) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrainJobParam.ProtoReflect.Descriptor instead. +func (*CreateTrainJobParam) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{111} +} + +func (x *CreateTrainJobParam) GetAlgorithmId() string { + if x != nil { + return x.AlgorithmId + } + return "" +} + +func (x *CreateTrainJobParam) GetAlgorithmVersion() string { + if x != nil { + return x.AlgorithmVersion + } + return "" +} + +func (x *CreateTrainJobParam) GetConfig() []*Config { + if x != nil { + return x.Config + } + return nil +} + +func (x *CreateTrainJobParam) GetDataSetId() string { + if x != nil { + return x.DataSetId + } + return "" +} + +func (x *CreateTrainJobParam) GetDataSetVersion() string { + if x != nil { + return x.DataSetVersion + } + return "" +} + +func (x *CreateTrainJobParam) GetDesc() string { + if x != nil { + return x.Desc + } + return "" +} + +func (x *CreateTrainJobParam) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CreateTrainJobParam) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *CreateTrainJobParam) GetIsDistributed() bool { + if x != nil { + return x.IsDistributed + } + return false +} + +func (x *CreateTrainJobParam) GetMounts() []*Mounts { + if x != nil { + return x.Mounts + } + return nil +} + +func (x *CreateTrainJobParam) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateTrainJobParam) GetResourcePool() string { + if x != nil { + return x.ResourcePool + } + return "" +} + +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` + Envs *Envs `protobuf:"bytes,2,opt,name=envs,proto3" json:"envs,omitempty"` + IsMainRole bool `protobuf:"varint,3,opt,name=isMainRole,proto3" json:"isMainRole,omitempty"` + MinFailedTaskCount int32 `protobuf:"varint,4,opt,name=minFailedTaskCount,proto3" json:"minFailedTaskCount,omitempty"` + MinSucceededTaskCount int32 `protobuf:"varint,5,opt,name=minSucceededTaskCount,proto3" json:"minSucceededTaskCount,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Parameters []*Parameters `protobuf:"bytes,7,rep,name=parameters,proto3" json:"parameters,omitempty"` + ReplicaStates []*ReplicaStates `protobuf:"bytes,8,rep,name=replicaStates,proto3" json:"replicaStates,omitempty"` + ResourceSpecId string `protobuf:"bytes,9,opt,name=resourceSpecId,proto3" json:"resourceSpecId,omitempty"` + ResourceSpecName string `protobuf:"bytes,10,opt,name=resourceSpecName,proto3" json:"resourceSpecName,omitempty"` + ResourceSpecPrice int32 `protobuf:"varint,11,opt,name=resourceSpecPrice,proto3" json:"resourceSpecPrice,omitempty"` + SubTaskState string `protobuf:"bytes,12,opt,name=subTaskState,proto3" json:"subTaskState,omitempty"` + TaskNumber int32 `protobuf:"varint,13,opt,name=taskNumber,proto3" json:"taskNumber,omitempty"` +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{112} +} + +func (x *Config) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *Config) GetEnvs() *Envs { + if x != nil { + return x.Envs + } + return nil +} + +func (x *Config) GetIsMainRole() bool { + if x != nil { + return x.IsMainRole + } + return false +} + +func (x *Config) GetMinFailedTaskCount() int32 { + if x != nil { + return x.MinFailedTaskCount + } + return 0 +} + +func (x *Config) GetMinSucceededTaskCount() int32 { + if x != nil { + return x.MinSucceededTaskCount + } + return 0 +} + +func (x *Config) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Config) GetParameters() []*Parameters { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *Config) GetReplicaStates() []*ReplicaStates { + if x != nil { + return x.ReplicaStates + } + return nil +} + +func (x *Config) GetResourceSpecId() string { + if x != nil { + return x.ResourceSpecId + } + return "" +} + +func (x *Config) GetResourceSpecName() string { + if x != nil { + return x.ResourceSpecName + } + return "" +} + +func (x *Config) GetResourceSpecPrice() int32 { + if x != nil { + return x.ResourceSpecPrice + } + return 0 +} + +func (x *Config) GetSubTaskState() string { + if x != nil { + return x.SubTaskState + } + return "" +} + +func (x *Config) GetTaskNumber() int32 { + if x != nil { + return x.TaskNumber + } + return 0 +} + +type Envs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdditionalProp1 string `protobuf:"bytes,1,opt,name=additionalProp1,proto3" json:"additionalProp1,omitempty"` + AdditionalProp2 string `protobuf:"bytes,2,opt,name=additionalProp2,proto3" json:"additionalProp2,omitempty"` + AdditionalProp3 string `protobuf:"bytes,3,opt,name=additionalProp3,proto3" json:"additionalProp3,omitempty"` +} + +func (x *Envs) Reset() { + *x = Envs{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Envs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Envs) ProtoMessage() {} + +func (x *Envs) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Envs.ProtoReflect.Descriptor instead. +func (*Envs) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{113} +} + +func (x *Envs) GetAdditionalProp1() string { + if x != nil { + return x.AdditionalProp1 + } + return "" +} + +func (x *Envs) GetAdditionalProp2() string { + if x != nil { + return x.AdditionalProp2 + } + return "" +} + +func (x *Envs) GetAdditionalProp3() string { + if x != nil { + return x.AdditionalProp3 + } + return "" +} + +type Parameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Parameters) Reset() { + *x = Parameters{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Parameters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Parameters) ProtoMessage() {} + +func (x *Parameters) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Parameters.ProtoReflect.Descriptor instead. +func (*Parameters) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{114} +} + +func (x *Parameters) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Parameters) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type ReplicaStates struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` +} + +func (x *ReplicaStates) Reset() { + *x = ReplicaStates{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplicaStates) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplicaStates) ProtoMessage() {} + +func (x *ReplicaStates) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReplicaStates.ProtoReflect.Descriptor instead. +func (*ReplicaStates) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{115} +} + +func (x *ReplicaStates) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ReplicaStates) GetState() string { + if x != nil { + return x.State + } + return "" +} + +type Mounts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerPath string `protobuf:"bytes,1,opt,name=containerPath,proto3" json:"containerPath,omitempty"` + Nfs *Nfs `protobuf:"bytes,2,opt,name=nfs,proto3" json:"nfs,omitempty"` + Octopus *TrainJobOctopus `protobuf:"bytes,3,opt,name=octopus,proto3" json:"octopus,omitempty"` + ReadOnly bool `protobuf:"varint,4,opt,name=readOnly,proto3" json:"readOnly,omitempty"` +} + +func (x *Mounts) Reset() { + *x = Mounts{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Mounts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Mounts) ProtoMessage() {} + +func (x *Mounts) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Mounts.ProtoReflect.Descriptor instead. +func (*Mounts) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{116} +} + +func (x *Mounts) GetContainerPath() string { + if x != nil { + return x.ContainerPath + } + return "" +} + +func (x *Mounts) GetNfs() *Nfs { + if x != nil { + return x.Nfs + } + return nil +} + +func (x *Mounts) GetOctopus() *TrainJobOctopus { + if x != nil { + return x.Octopus + } + return nil +} + +func (x *Mounts) GetReadOnly() bool { + if x != nil { + return x.ReadOnly + } + return false +} + +type PayloadCreateTrainJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JobId string `protobuf:"bytes,1,opt,name=jobId,proto3" json:"jobId,omitempty"` +} + +func (x *PayloadCreateTrainJob) Reset() { + *x = PayloadCreateTrainJob{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadCreateTrainJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadCreateTrainJob) ProtoMessage() {} + +func (x *PayloadCreateTrainJob) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayloadCreateTrainJob.ProtoReflect.Descriptor instead. +func (*PayloadCreateTrainJob) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{117} +} + +func (x *PayloadCreateTrainJob) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +type Nfs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"` +} + +func (x *Nfs) Reset() { + *x = Nfs{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Nfs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Nfs) ProtoMessage() {} + +func (x *Nfs) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Nfs.ProtoReflect.Descriptor instead. +func (*Nfs) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{118} +} + +func (x *Nfs) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *Nfs) GetServer() string { + if x != nil { + return x.Server + } + return "" +} + +type TrainJobOctopus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + Object string `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` +} + +func (x *TrainJobOctopus) Reset() { + *x = TrainJobOctopus{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrainJobOctopus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrainJobOctopus) ProtoMessage() {} + +func (x *TrainJobOctopus) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrainJobOctopus.ProtoReflect.Descriptor instead. +func (*TrainJobOctopus) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{119} +} + +func (x *TrainJobOctopus) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *TrainJobOctopus) GetObject() string { + if x != nil { + return x.Object + } + return "" +} + type Error struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6181,7 +7790,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[96] + mi := &file_octopus_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6194,7 +7803,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[96] + mi := &file_octopus_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6207,7 +7816,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{96} + return file_octopus_proto_rawDescGZIP(), []int{120} } func (x *Error) GetCode() int32 { @@ -6775,393 +8384,622 @@ var file_octopus_proto_rawDesc = []byte{ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0x3f, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, + 0x74, 0x22, 0x63, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, + 0x72, 0x6d, 0x12, 0x32, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, + 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xd9, 0x03, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, + 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, + 0x12, 0x21, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, + 0x6e, 0x76, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x06, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x74, - 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x65, 0x0a, 0x13, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, - 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, - 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x22, - 0xf3, 0x05, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, - 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, - 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x12, - 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x2d, 0x0a, 0x05, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x43, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x2d, 0x0a, 0x08, 0x6e, + 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x3f, 0x0a, 0x11, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x15, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x5d, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x73, 0x22, 0x4a, 0x0a, 0x06, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x87, - 0x03, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, - 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x44, 0x65, 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, - 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0x64, 0x0a, 0x13, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x09, 0x6e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0xf2, 0x05, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x41, - 0x64, 0x64, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x46, 0x75, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x22, 0x46, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, - 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x35, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x12, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, - 0x64, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, - 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, - 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, + 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, + 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4a, 0x6f, 0x62, 0x49, + 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x61, + 0x73, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x2d, 0x0a, 0x05, + 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x0a, 0x10, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8c, 0x01, 0x0a, 0x11, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4c, - 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8d, 0x01, 0x0a, - 0x0e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x46, 0x0a, 0x10, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, + 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x25, + 0x0a, 0x13, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5d, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x06, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x73, 0x22, 0x4a, 0x0a, 0x06, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, + 0x87, 0x03, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x44, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, + 0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x75, 0x6c, 0x6c, + 0x41, 0x64, 0x64, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x22, 0x46, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x12, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x22, 0x64, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, + 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x41, 0x64, 0x64, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, + 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, + 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x5e, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, - 0x87, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x61, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x50, 0x72, 0x6f, 0x70, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x12, - 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, - 0x70, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x22, 0x4d, 0x0a, 0x15, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, + 0x4c, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8d, 0x01, + 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x10, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x46, 0x0a, + 0x10, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x5e, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x22, 0x87, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, + 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x6f, 0x70, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x22, 0x4d, 0x0a, 0x15, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3c, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x39, 0x0a, 0x19, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, + 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x63, 0x0a, + 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, - 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x39, 0x0a, 0x19, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1c, - 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6f, 0x0a, 0x05, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x8b, 0x11, - 0x0a, 0x07, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x14, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x63, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, - 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x67, 0x69, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, - 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x26, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x32, + 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0xa3, 0x03, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x2a, 0x0a, + 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x98, 0x04, 0x0a, 0x06, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x21, + 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, + 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, + 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x34, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, + 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x54, 0x61, + 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, + 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x76, 0x73, 0x12, 0x28, 0x0a, + 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, + 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x22, 0x34, 0x0a, 0x0a, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x06, 0x4d, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x03, 0x6e, + 0x66, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x4e, 0x66, 0x73, 0x52, 0x03, 0x6e, 0x66, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x52, 0x07, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x15, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x03, 0x4e, 0x66, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x41, 0x0a, + 0x0f, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x22, 0x6f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x62, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x73, 0x75, 0x62, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x32, 0xf0, 0x13, 0x0a, 0x07, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, 0x3a, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, + 0x65, 0x72, 0x12, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x63, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x67, 0x69, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x6a, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, - 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x52, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x61, 0x0a, 0x16, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x22, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, - 0x23, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x16, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, + 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, - 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, - 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, - 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, - 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, - 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, + 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, + 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x18, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, + 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, + 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, + 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, + 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, + 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, + 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x40, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, - 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x40, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, + 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, - 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, - 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, - 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2f, - 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7176,7 +9014,7 @@ func file_octopus_proto_rawDescGZIP() []byte { return file_octopus_proto_rawDescData } -var file_octopus_proto_msgTypes = make([]protoimpl.MessageInfo, 97) +var file_octopus_proto_msgTypes = make([]protoimpl.MessageInfo, 121) var file_octopus_proto_goTypes = []interface{}{ (*ResourceReq)(nil), // 0: octopus.resourceReq (*CpResp)(nil), // 1: octopus.cpResp @@ -7246,167 +9084,223 @@ var file_octopus_proto_goTypes = []interface{}{ (*DeleteDataSetVersionReq)(nil), // 65: octopus.DeleteDataSetVersionReq (*DeleteDataSetVersionResp)(nil), // 66: octopus.DeleteDataSetVersionResp (*PayloadDeleteDataSetVersion)(nil), // 67: octopus.PayloadDeleteDataSetVersion - (*DeleteNotebookReq)(nil), // 68: octopus.DeleteNotebookReq - (*DeleteNotebookResp)(nil), // 69: octopus.DeleteNotebookResp - (*PayloadDeleteNotebook)(nil), // 70: octopus.PayloadDeleteNotebook - (*GetNotebookListReq)(nil), // 71: octopus.GetNotebookListReq - (*GetNotebookListResp)(nil), // 72: octopus.GetNotebookListResp - (*PayloadNotebookList)(nil), // 73: octopus.PayloadNotebookList - (*Notebooks)(nil), // 74: octopus.Notebooks - (*Tasks)(nil), // 75: octopus.Tasks - (*GetUserImageListReq)(nil), // 76: octopus.GetUserImageListReq - (*GetUserImageListResp)(nil), // 77: octopus.GetUserImageListResp - (*PayloadUserImageList)(nil), // 78: octopus.PayloadUserImageList - (*Images)(nil), // 79: octopus.Images - (*Image)(nil), // 80: octopus.Image - (*DeleteImageReq)(nil), // 81: octopus.DeleteImageReq - (*DeleteImageResp)(nil), // 82: octopus.DeleteImageResp - (*PayloadDeleteImage)(nil), // 83: octopus.PayloadDeleteImage - (*CreateImageReq)(nil), // 84: octopus.CreateImageReq - (*CreateImage)(nil), // 85: octopus.CreateImage - (*CreateImageResp)(nil), // 86: octopus.CreateImageResp - (*PayloadCreateImage)(nil), // 87: octopus.PayloadCreateImage - (*UploadImageReq)(nil), // 88: octopus.UploadImageReq - (*UploadImageParam)(nil), // 89: octopus.UploadImageParam - (*UploadImageResp)(nil), // 90: octopus.UploadImageResp - (*PayloadUploadImage)(nil), // 91: octopus.PayloadUploadImage - (*Headers)(nil), // 92: octopus.Headers - (*UploadImageConfirmReq)(nil), // 93: octopus.UploadImageConfirmReq - (*UploadImageConfirmResp)(nil), // 94: octopus.UploadImageConfirmResp - (*PayloadUploadImageConfirm)(nil), // 95: octopus.PayloadUploadImageConfirm - (*Error)(nil), // 96: octopus.Error + (*CreateNotebookReq)(nil), // 68: octopus.CreateNotebookReq + (*CreateNotebookParam)(nil), // 69: octopus.CreateNotebookParam + (*CreateNotebookResp)(nil), // 70: octopus.CreateNotebookResp + (*PayloadCreateNotebook)(nil), // 71: octopus.PayloadCreateNotebook + (*GetNotebookReq)(nil), // 72: octopus.GetNotebookReq + (*GetNotebookResp)(nil), // 73: octopus.GetNotebookResp + (*PayloadGetNotebook)(nil), // 74: octopus.PayloadGetNotebook + (*DeleteNotebookReq)(nil), // 75: octopus.DeleteNotebookReq + (*DeleteNotebookResp)(nil), // 76: octopus.DeleteNotebookResp + (*PayloadDeleteNotebook)(nil), // 77: octopus.PayloadDeleteNotebook + (*GetNotebookListReq)(nil), // 78: octopus.GetNotebookListReq + (*GetNotebookListResp)(nil), // 79: octopus.GetNotebookListResp + (*PayloadNotebookList)(nil), // 80: octopus.PayloadNotebookList + (*Notebook)(nil), // 81: octopus.Notebook + (*Tasks)(nil), // 82: octopus.Tasks + (*StartNotebookReq)(nil), // 83: octopus.StartNotebookReq + (*StartNotebookResp)(nil), // 84: octopus.StartNotebookResp + (*PayloadStartNotebook)(nil), // 85: octopus.PayloadStartNotebook + (*StopNotebookReq)(nil), // 86: octopus.StopNotebookReq + (*StopNotebookResp)(nil), // 87: octopus.StopNotebookResp + (*PayloadStopNotebook)(nil), // 88: octopus.PayloadStopNotebook + (*GetUserImageListReq)(nil), // 89: octopus.GetUserImageListReq + (*GetUserImageListResp)(nil), // 90: octopus.GetUserImageListResp + (*PayloadUserImageList)(nil), // 91: octopus.PayloadUserImageList + (*Images)(nil), // 92: octopus.Images + (*Image)(nil), // 93: octopus.Image + (*DeleteImageReq)(nil), // 94: octopus.DeleteImageReq + (*DeleteImageResp)(nil), // 95: octopus.DeleteImageResp + (*PayloadDeleteImage)(nil), // 96: octopus.PayloadDeleteImage + (*CreateImageReq)(nil), // 97: octopus.CreateImageReq + (*CreateImage)(nil), // 98: octopus.CreateImage + (*CreateImageResp)(nil), // 99: octopus.CreateImageResp + (*PayloadCreateImage)(nil), // 100: octopus.PayloadCreateImage + (*UploadImageReq)(nil), // 101: octopus.UploadImageReq + (*UploadImageParam)(nil), // 102: octopus.UploadImageParam + (*UploadImageResp)(nil), // 103: octopus.UploadImageResp + (*PayloadUploadImage)(nil), // 104: octopus.PayloadUploadImage + (*Headers)(nil), // 105: octopus.Headers + (*UploadImageConfirmReq)(nil), // 106: octopus.UploadImageConfirmReq + (*UploadImageConfirmResp)(nil), // 107: octopus.UploadImageConfirmResp + (*PayloadUploadImageConfirm)(nil), // 108: octopus.PayloadUploadImageConfirm + (*CreateTrainJobReq)(nil), // 109: octopus.CreateTrainJobReq + (*CreateTrainJobResp)(nil), // 110: octopus.CreateTrainJobResp + (*CreateTrainJobParam)(nil), // 111: octopus.CreateTrainJobParam + (*Config)(nil), // 112: octopus.Config + (*Envs)(nil), // 113: octopus.Envs + (*Parameters)(nil), // 114: octopus.Parameters + (*ReplicaStates)(nil), // 115: octopus.ReplicaStates + (*Mounts)(nil), // 116: octopus.Mounts + (*PayloadCreateTrainJob)(nil), // 117: octopus.PayloadCreateTrainJob + (*Nfs)(nil), // 118: octopus.Nfs + (*TrainJobOctopus)(nil), // 119: octopus.TrainJobOctopus + (*Error)(nil), // 120: octopus.Error } var file_octopus_proto_depIdxs = []int32{ - 5, // 0: octopus.GetAlgorithmResp.payload:type_name -> octopus.PayloadGetAlgorithm - 96, // 1: octopus.GetAlgorithmResp.error:type_name -> octopus.Error - 24, // 2: octopus.PayloadGetAlgorithm.algorithm:type_name -> octopus.Algorithms - 6, // 3: octopus.PayloadGetAlgorithm.versionAccesses:type_name -> octopus.VersionAccesses - 9, // 4: octopus.DownloadAlgorithmResp.payload:type_name -> octopus.PayloadDownloadAlgorithm - 96, // 5: octopus.DownloadAlgorithmResp.error:type_name -> octopus.Error - 11, // 6: octopus.UploadAlgorithmReq.uploadAlgorithmParam:type_name -> octopus.UploadAlgorithmParam - 13, // 7: octopus.UploadAlgorithmResp.payload:type_name -> octopus.PayloadUploadAlgorithm - 96, // 8: octopus.UploadAlgorithmResp.error:type_name -> octopus.Error - 16, // 9: octopus.UploadAlgorithmConfirmResp.payload:type_name -> octopus.PayloadUploadAlgorithmConfirm - 96, // 10: octopus.UploadAlgorithmConfirmResp.error:type_name -> octopus.Error - 19, // 11: octopus.GetAlgorithmListResp.payload:type_name -> octopus.PayloadAlgorithmList - 96, // 12: octopus.GetAlgorithmListResp.error:type_name -> octopus.Error - 20, // 13: octopus.PayloadAlgorithmList.algorithms:type_name -> octopus.AlgorithmDetail - 24, // 14: octopus.AlgorithmDetail.algorithmDetail:type_name -> octopus.Algorithms - 23, // 15: octopus.GetMyAlgorithmListResp.payload:type_name -> octopus.PayloadMyAlgorithmList - 96, // 16: octopus.GetMyAlgorithmListResp.error:type_name -> octopus.Error - 24, // 17: octopus.PayloadMyAlgorithmList.algorithms:type_name -> octopus.Algorithms - 27, // 18: octopus.GetAlgorithmApplyListResp.payload:type_name -> octopus.PayloadGetAlgorithmApplyList - 96, // 19: octopus.GetAlgorithmApplyListResp.error:type_name -> octopus.Error - 31, // 20: octopus.PayloadGetAlgorithmApplyList.lables:type_name -> octopus.Lables - 30, // 21: octopus.GetAlgorithmFrameworkListResp.payload:type_name -> octopus.PayloadAlgorithmFrameworkList - 96, // 22: octopus.GetAlgorithmFrameworkListResp.error:type_name -> octopus.Error - 31, // 23: octopus.PayloadAlgorithmFrameworkList.lables:type_name -> octopus.Lables - 34, // 24: octopus.DeleteMyAlgorithmResp.payload:type_name -> octopus.PayloadDeleteMyAlgorithm - 96, // 25: octopus.DeleteMyAlgorithmResp.error:type_name -> octopus.Error - 37, // 26: octopus.CreateMyAlgorithmReq.createMyAlgorithm:type_name -> octopus.CreateMyAlgorithm - 38, // 27: octopus.CreateMyAlgorithmResp.payload:type_name -> octopus.PayloadCreateMyAlgorithm - 96, // 28: octopus.CreateMyAlgorithmResp.error:type_name -> octopus.Error - 41, // 29: octopus.GetDatasetVersionListResp.payload:type_name -> octopus.PayloadGetDatasetVersion - 96, // 30: octopus.GetDatasetVersionListResp.error:type_name -> octopus.Error - 42, // 31: octopus.PayloadGetDatasetVersion.versions:type_name -> octopus.DatasetVersion - 45, // 32: octopus.CreateDataSetReq.createDataSet:type_name -> octopus.CreateDataSet - 46, // 33: octopus.CreateDataSetResp.payload:type_name -> octopus.PayloadCreateDataSet - 96, // 34: octopus.CreateDataSetResp.error:type_name -> octopus.Error - 49, // 35: octopus.GetMyDatasetListResp.payload:type_name -> octopus.PayloadMyDatasetList - 96, // 36: octopus.GetMyDatasetListResp.error:type_name -> octopus.Error - 50, // 37: octopus.PayloadMyDatasetList.datasets:type_name -> octopus.Datasets - 51, // 38: octopus.Datasets.applies:type_name -> octopus.Applies - 54, // 39: octopus.DeleteDataSetResp.payload:type_name -> octopus.PayloadDeleteDataSet - 96, // 40: octopus.DeleteDataSetResp.error:type_name -> octopus.Error - 56, // 41: octopus.UploadDataSetReq.UploadDataSetParam:type_name -> octopus.UploadDataSetParam - 58, // 42: octopus.UploadDataSetResp.payload:type_name -> octopus.PayloadUploadDataSet - 96, // 43: octopus.UploadDataSetResp.error:type_name -> octopus.Error - 61, // 44: octopus.UploadDataSetConfirmResp.payload:type_name -> octopus.PayloadUploadDataSetConfirm - 96, // 45: octopus.UploadDataSetConfirmResp.error:type_name -> octopus.Error - 64, // 46: octopus.CreateDataSetVersionResp.payload:type_name -> octopus.PayloadCreateDataSetVersion - 96, // 47: octopus.CreateDataSetVersionResp.error:type_name -> octopus.Error - 67, // 48: octopus.DeleteDataSetVersionResp.payload:type_name -> octopus.PayloadDeleteDataSetVersion - 96, // 49: octopus.DeleteDataSetVersionResp.error:type_name -> octopus.Error - 70, // 50: octopus.DeleteNotebookResp.payload:type_name -> octopus.PayloadDeleteNotebook - 96, // 51: octopus.DeleteNotebookResp.error:type_name -> octopus.Error - 73, // 52: octopus.GetNotebookListResp.payload:type_name -> octopus.PayloadNotebookList - 96, // 53: octopus.GetNotebookListResp.error:type_name -> octopus.Error - 74, // 54: octopus.PayloadNotebookList.notebooks:type_name -> octopus.Notebooks - 75, // 55: octopus.Notebooks.tasks:type_name -> octopus.Tasks - 78, // 56: octopus.GetUserImageListResp.payload:type_name -> octopus.PayloadUserImageList - 96, // 57: octopus.GetUserImageListResp.error:type_name -> octopus.Error - 79, // 58: octopus.PayloadUserImageList.images:type_name -> octopus.Images - 80, // 59: octopus.Images.image:type_name -> octopus.Image - 83, // 60: octopus.DeleteImageResp.payload:type_name -> octopus.PayloadDeleteImage - 96, // 61: octopus.DeleteImageResp.error:type_name -> octopus.Error - 85, // 62: octopus.CreateImageReq.createImage:type_name -> octopus.CreateImage - 87, // 63: octopus.CreateImageResp.payload:type_name -> octopus.PayloadCreateImage - 96, // 64: octopus.CreateImageResp.error:type_name -> octopus.Error - 89, // 65: octopus.UploadImageReq.uploadImageParam:type_name -> octopus.UploadImageParam - 91, // 66: octopus.UploadImageResp.payload:type_name -> octopus.PayloadUploadImage - 96, // 67: octopus.UploadImageResp.error:type_name -> octopus.Error - 92, // 68: octopus.PayloadUploadImage.headers:type_name -> octopus.Headers - 95, // 69: octopus.UploadImageConfirmResp.payload:type_name -> octopus.PayloadUploadImageConfirm - 96, // 70: octopus.UploadImageConfirmResp.error:type_name -> octopus.Error - 0, // 71: octopus.Octopus.GetComputingPower:input_type -> octopus.resourceReq - 0, // 72: octopus.Octopus.GetGeneralInfo:input_type -> octopus.resourceReq - 21, // 73: octopus.Octopus.GetMyAlgorithmList:input_type -> octopus.GetMyAlgorithmListReq - 17, // 74: octopus.Octopus.GetAlgorithmList:input_type -> octopus.GetAlgorithmListReq - 3, // 75: octopus.Octopus.GetAlgorithm:input_type -> octopus.GetAlgorithmReq - 25, // 76: octopus.Octopus.GetAlgorithmApplyList:input_type -> octopus.GetAlgorithmApplyListReq - 28, // 77: octopus.Octopus.GetAlgorithmFrameworkList:input_type -> octopus.GetAlgorithmFrameworkListReq - 32, // 78: octopus.Octopus.DeleteMyAlgorithm:input_type -> octopus.DeleteMyAlgorithmReq - 35, // 79: octopus.Octopus.CreateMyAlgorithm:input_type -> octopus.CreateMyAlgorithmReq - 7, // 80: octopus.Octopus.DownloadAlgorithm:input_type -> octopus.DownloadAlgorithmReq - 10, // 81: octopus.Octopus.UploadAlgorithm:input_type -> octopus.UploadAlgorithmReq - 14, // 82: octopus.Octopus.UploadAlgorithmConfirm:input_type -> octopus.UploadAlgorithmConfirmReq - 47, // 83: octopus.Octopus.GetMyDatasetList:input_type -> octopus.GetMyDatasetListReq - 39, // 84: octopus.Octopus.GetDatasetVersionList:input_type -> octopus.GetDatasetVersionListReq - 43, // 85: octopus.Octopus.CreateDataSet:input_type -> octopus.CreateDataSetReq - 52, // 86: octopus.Octopus.DeleteDataSet:input_type -> octopus.DeleteDataSetReq - 55, // 87: octopus.Octopus.UploadDataSet:input_type -> octopus.UploadDataSetReq - 59, // 88: octopus.Octopus.UploadDataSetConfirm:input_type -> octopus.UploadDataSetConfirmReq - 62, // 89: octopus.Octopus.CreateDataSetVersion:input_type -> octopus.CreateDataSetVersionReq - 65, // 90: octopus.Octopus.DeleteDataSetVersion:input_type -> octopus.DeleteDataSetVersionReq - 71, // 91: octopus.Octopus.GetNotebookList:input_type -> octopus.GetNotebookListReq - 68, // 92: octopus.Octopus.DeleteNotebook:input_type -> octopus.DeleteNotebookReq - 76, // 93: octopus.Octopus.GetUserImageList:input_type -> octopus.GetUserImageListReq - 84, // 94: octopus.Octopus.CreateImage:input_type -> octopus.CreateImageReq - 81, // 95: octopus.Octopus.DeleteImage:input_type -> octopus.DeleteImageReq - 88, // 96: octopus.Octopus.UploadImage:input_type -> octopus.UploadImageReq - 93, // 97: octopus.Octopus.UploadImageConfirm:input_type -> octopus.UploadImageConfirmReq - 1, // 98: octopus.Octopus.GetComputingPower:output_type -> octopus.cpResp - 2, // 99: octopus.Octopus.GetGeneralInfo:output_type -> octopus.giResp - 22, // 100: octopus.Octopus.GetMyAlgorithmList:output_type -> octopus.GetMyAlgorithmListResp - 18, // 101: octopus.Octopus.GetAlgorithmList:output_type -> octopus.GetAlgorithmListResp - 4, // 102: octopus.Octopus.GetAlgorithm:output_type -> octopus.GetAlgorithmResp - 26, // 103: octopus.Octopus.GetAlgorithmApplyList:output_type -> octopus.GetAlgorithmApplyListResp - 29, // 104: octopus.Octopus.GetAlgorithmFrameworkList:output_type -> octopus.GetAlgorithmFrameworkListResp - 33, // 105: octopus.Octopus.DeleteMyAlgorithm:output_type -> octopus.DeleteMyAlgorithmResp - 36, // 106: octopus.Octopus.CreateMyAlgorithm:output_type -> octopus.CreateMyAlgorithmResp - 8, // 107: octopus.Octopus.DownloadAlgorithm:output_type -> octopus.DownloadAlgorithmResp - 12, // 108: octopus.Octopus.UploadAlgorithm:output_type -> octopus.UploadAlgorithmResp - 15, // 109: octopus.Octopus.UploadAlgorithmConfirm:output_type -> octopus.UploadAlgorithmConfirmResp - 48, // 110: octopus.Octopus.GetMyDatasetList:output_type -> octopus.GetMyDatasetListResp - 40, // 111: octopus.Octopus.GetDatasetVersionList:output_type -> octopus.GetDatasetVersionListResp - 44, // 112: octopus.Octopus.CreateDataSet:output_type -> octopus.CreateDataSetResp - 53, // 113: octopus.Octopus.DeleteDataSet:output_type -> octopus.DeleteDataSetResp - 57, // 114: octopus.Octopus.UploadDataSet:output_type -> octopus.UploadDataSetResp - 60, // 115: octopus.Octopus.UploadDataSetConfirm:output_type -> octopus.UploadDataSetConfirmResp - 63, // 116: octopus.Octopus.CreateDataSetVersion:output_type -> octopus.CreateDataSetVersionResp - 66, // 117: octopus.Octopus.DeleteDataSetVersion:output_type -> octopus.DeleteDataSetVersionResp - 72, // 118: octopus.Octopus.GetNotebookList:output_type -> octopus.GetNotebookListResp - 69, // 119: octopus.Octopus.DeleteNotebook:output_type -> octopus.DeleteNotebookResp - 77, // 120: octopus.Octopus.GetUserImageList:output_type -> octopus.GetUserImageListResp - 86, // 121: octopus.Octopus.CreateImage:output_type -> octopus.CreateImageResp - 82, // 122: octopus.Octopus.DeleteImage:output_type -> octopus.DeleteImageResp - 90, // 123: octopus.Octopus.UploadImage:output_type -> octopus.UploadImageResp - 94, // 124: octopus.Octopus.UploadImageConfirm:output_type -> octopus.UploadImageConfirmResp - 98, // [98:125] is the sub-list for method output_type - 71, // [71:98] is the sub-list for method input_type - 71, // [71:71] is the sub-list for extension type_name - 71, // [71:71] is the sub-list for extension extendee - 0, // [0:71] is the sub-list for field type_name + 5, // 0: octopus.GetAlgorithmResp.payload:type_name -> octopus.PayloadGetAlgorithm + 120, // 1: octopus.GetAlgorithmResp.error:type_name -> octopus.Error + 24, // 2: octopus.PayloadGetAlgorithm.algorithm:type_name -> octopus.Algorithms + 6, // 3: octopus.PayloadGetAlgorithm.versionAccesses:type_name -> octopus.VersionAccesses + 9, // 4: octopus.DownloadAlgorithmResp.payload:type_name -> octopus.PayloadDownloadAlgorithm + 120, // 5: octopus.DownloadAlgorithmResp.error:type_name -> octopus.Error + 11, // 6: octopus.UploadAlgorithmReq.uploadAlgorithmParam:type_name -> octopus.UploadAlgorithmParam + 13, // 7: octopus.UploadAlgorithmResp.payload:type_name -> octopus.PayloadUploadAlgorithm + 120, // 8: octopus.UploadAlgorithmResp.error:type_name -> octopus.Error + 16, // 9: octopus.UploadAlgorithmConfirmResp.payload:type_name -> octopus.PayloadUploadAlgorithmConfirm + 120, // 10: octopus.UploadAlgorithmConfirmResp.error:type_name -> octopus.Error + 19, // 11: octopus.GetAlgorithmListResp.payload:type_name -> octopus.PayloadAlgorithmList + 120, // 12: octopus.GetAlgorithmListResp.error:type_name -> octopus.Error + 20, // 13: octopus.PayloadAlgorithmList.algorithms:type_name -> octopus.AlgorithmDetail + 24, // 14: octopus.AlgorithmDetail.algorithmDetail:type_name -> octopus.Algorithms + 23, // 15: octopus.GetMyAlgorithmListResp.payload:type_name -> octopus.PayloadMyAlgorithmList + 120, // 16: octopus.GetMyAlgorithmListResp.error:type_name -> octopus.Error + 24, // 17: octopus.PayloadMyAlgorithmList.algorithms:type_name -> octopus.Algorithms + 27, // 18: octopus.GetAlgorithmApplyListResp.payload:type_name -> octopus.PayloadGetAlgorithmApplyList + 120, // 19: octopus.GetAlgorithmApplyListResp.error:type_name -> octopus.Error + 31, // 20: octopus.PayloadGetAlgorithmApplyList.lables:type_name -> octopus.Lables + 30, // 21: octopus.GetAlgorithmFrameworkListResp.payload:type_name -> octopus.PayloadAlgorithmFrameworkList + 120, // 22: octopus.GetAlgorithmFrameworkListResp.error:type_name -> octopus.Error + 31, // 23: octopus.PayloadAlgorithmFrameworkList.lables:type_name -> octopus.Lables + 34, // 24: octopus.DeleteMyAlgorithmResp.payload:type_name -> octopus.PayloadDeleteMyAlgorithm + 120, // 25: octopus.DeleteMyAlgorithmResp.error:type_name -> octopus.Error + 37, // 26: octopus.CreateMyAlgorithmReq.createMyAlgorithm:type_name -> octopus.CreateMyAlgorithm + 38, // 27: octopus.CreateMyAlgorithmResp.payload:type_name -> octopus.PayloadCreateMyAlgorithm + 120, // 28: octopus.CreateMyAlgorithmResp.error:type_name -> octopus.Error + 41, // 29: octopus.GetDatasetVersionListResp.payload:type_name -> octopus.PayloadGetDatasetVersion + 120, // 30: octopus.GetDatasetVersionListResp.error:type_name -> octopus.Error + 42, // 31: octopus.PayloadGetDatasetVersion.versions:type_name -> octopus.DatasetVersion + 45, // 32: octopus.CreateDataSetReq.createDataSet:type_name -> octopus.CreateDataSet + 46, // 33: octopus.CreateDataSetResp.payload:type_name -> octopus.PayloadCreateDataSet + 120, // 34: octopus.CreateDataSetResp.error:type_name -> octopus.Error + 49, // 35: octopus.GetMyDatasetListResp.payload:type_name -> octopus.PayloadMyDatasetList + 120, // 36: octopus.GetMyDatasetListResp.error:type_name -> octopus.Error + 50, // 37: octopus.PayloadMyDatasetList.datasets:type_name -> octopus.Datasets + 51, // 38: octopus.Datasets.applies:type_name -> octopus.Applies + 54, // 39: octopus.DeleteDataSetResp.payload:type_name -> octopus.PayloadDeleteDataSet + 120, // 40: octopus.DeleteDataSetResp.error:type_name -> octopus.Error + 56, // 41: octopus.UploadDataSetReq.UploadDataSetParam:type_name -> octopus.UploadDataSetParam + 58, // 42: octopus.UploadDataSetResp.payload:type_name -> octopus.PayloadUploadDataSet + 120, // 43: octopus.UploadDataSetResp.error:type_name -> octopus.Error + 61, // 44: octopus.UploadDataSetConfirmResp.payload:type_name -> octopus.PayloadUploadDataSetConfirm + 120, // 45: octopus.UploadDataSetConfirmResp.error:type_name -> octopus.Error + 64, // 46: octopus.CreateDataSetVersionResp.payload:type_name -> octopus.PayloadCreateDataSetVersion + 120, // 47: octopus.CreateDataSetVersionResp.error:type_name -> octopus.Error + 67, // 48: octopus.DeleteDataSetVersionResp.payload:type_name -> octopus.PayloadDeleteDataSetVersion + 120, // 49: octopus.DeleteDataSetVersionResp.error:type_name -> octopus.Error + 69, // 50: octopus.CreateNotebookReq.param:type_name -> octopus.CreateNotebookParam + 113, // 51: octopus.CreateNotebookParam.envs:type_name -> octopus.Envs + 116, // 52: octopus.CreateNotebookParam.mounts:type_name -> octopus.Mounts + 71, // 53: octopus.CreateNotebookResp.payload:type_name -> octopus.PayloadCreateNotebook + 120, // 54: octopus.CreateNotebookResp.error:type_name -> octopus.Error + 74, // 55: octopus.GetNotebookResp.payload:type_name -> octopus.PayloadGetNotebook + 120, // 56: octopus.GetNotebookResp.error:type_name -> octopus.Error + 81, // 57: octopus.PayloadGetNotebook.notebook:type_name -> octopus.Notebook + 77, // 58: octopus.DeleteNotebookResp.payload:type_name -> octopus.PayloadDeleteNotebook + 120, // 59: octopus.DeleteNotebookResp.error:type_name -> octopus.Error + 80, // 60: octopus.GetNotebookListResp.payload:type_name -> octopus.PayloadNotebookList + 120, // 61: octopus.GetNotebookListResp.error:type_name -> octopus.Error + 81, // 62: octopus.PayloadNotebookList.notebooks:type_name -> octopus.Notebook + 82, // 63: octopus.Notebook.tasks:type_name -> octopus.Tasks + 85, // 64: octopus.StartNotebookResp.payload:type_name -> octopus.PayloadStartNotebook + 120, // 65: octopus.StartNotebookResp.error:type_name -> octopus.Error + 88, // 66: octopus.StopNotebookResp.payload:type_name -> octopus.PayloadStopNotebook + 120, // 67: octopus.StopNotebookResp.error:type_name -> octopus.Error + 91, // 68: octopus.GetUserImageListResp.payload:type_name -> octopus.PayloadUserImageList + 120, // 69: octopus.GetUserImageListResp.error:type_name -> octopus.Error + 92, // 70: octopus.PayloadUserImageList.images:type_name -> octopus.Images + 93, // 71: octopus.Images.image:type_name -> octopus.Image + 96, // 72: octopus.DeleteImageResp.payload:type_name -> octopus.PayloadDeleteImage + 120, // 73: octopus.DeleteImageResp.error:type_name -> octopus.Error + 98, // 74: octopus.CreateImageReq.createImage:type_name -> octopus.CreateImage + 100, // 75: octopus.CreateImageResp.payload:type_name -> octopus.PayloadCreateImage + 120, // 76: octopus.CreateImageResp.error:type_name -> octopus.Error + 102, // 77: octopus.UploadImageReq.uploadImageParam:type_name -> octopus.UploadImageParam + 104, // 78: octopus.UploadImageResp.payload:type_name -> octopus.PayloadUploadImage + 120, // 79: octopus.UploadImageResp.error:type_name -> octopus.Error + 105, // 80: octopus.PayloadUploadImage.headers:type_name -> octopus.Headers + 108, // 81: octopus.UploadImageConfirmResp.payload:type_name -> octopus.PayloadUploadImageConfirm + 120, // 82: octopus.UploadImageConfirmResp.error:type_name -> octopus.Error + 111, // 83: octopus.CreateTrainJobReq.param:type_name -> octopus.CreateTrainJobParam + 117, // 84: octopus.CreateTrainJobResp.payload:type_name -> octopus.PayloadCreateTrainJob + 120, // 85: octopus.CreateTrainJobResp.error:type_name -> octopus.Error + 112, // 86: octopus.CreateTrainJobParam.config:type_name -> octopus.Config + 116, // 87: octopus.CreateTrainJobParam.mounts:type_name -> octopus.Mounts + 113, // 88: octopus.Config.envs:type_name -> octopus.Envs + 114, // 89: octopus.Config.parameters:type_name -> octopus.Parameters + 115, // 90: octopus.Config.replicaStates:type_name -> octopus.ReplicaStates + 118, // 91: octopus.Mounts.nfs:type_name -> octopus.Nfs + 119, // 92: octopus.Mounts.octopus:type_name -> octopus.TrainJobOctopus + 0, // 93: octopus.Octopus.GetComputingPower:input_type -> octopus.resourceReq + 0, // 94: octopus.Octopus.GetGeneralInfo:input_type -> octopus.resourceReq + 21, // 95: octopus.Octopus.GetMyAlgorithmList:input_type -> octopus.GetMyAlgorithmListReq + 17, // 96: octopus.Octopus.GetAlgorithmList:input_type -> octopus.GetAlgorithmListReq + 3, // 97: octopus.Octopus.GetAlgorithm:input_type -> octopus.GetAlgorithmReq + 25, // 98: octopus.Octopus.GetAlgorithmApplyList:input_type -> octopus.GetAlgorithmApplyListReq + 28, // 99: octopus.Octopus.GetAlgorithmFrameworkList:input_type -> octopus.GetAlgorithmFrameworkListReq + 32, // 100: octopus.Octopus.DeleteMyAlgorithm:input_type -> octopus.DeleteMyAlgorithmReq + 35, // 101: octopus.Octopus.CreateMyAlgorithm:input_type -> octopus.CreateMyAlgorithmReq + 7, // 102: octopus.Octopus.DownloadAlgorithm:input_type -> octopus.DownloadAlgorithmReq + 10, // 103: octopus.Octopus.UploadAlgorithm:input_type -> octopus.UploadAlgorithmReq + 14, // 104: octopus.Octopus.UploadAlgorithmConfirm:input_type -> octopus.UploadAlgorithmConfirmReq + 47, // 105: octopus.Octopus.GetMyDatasetList:input_type -> octopus.GetMyDatasetListReq + 39, // 106: octopus.Octopus.GetDatasetVersionList:input_type -> octopus.GetDatasetVersionListReq + 43, // 107: octopus.Octopus.CreateDataSet:input_type -> octopus.CreateDataSetReq + 52, // 108: octopus.Octopus.DeleteDataSet:input_type -> octopus.DeleteDataSetReq + 55, // 109: octopus.Octopus.UploadDataSet:input_type -> octopus.UploadDataSetReq + 59, // 110: octopus.Octopus.UploadDataSetConfirm:input_type -> octopus.UploadDataSetConfirmReq + 62, // 111: octopus.Octopus.CreateDataSetVersion:input_type -> octopus.CreateDataSetVersionReq + 65, // 112: octopus.Octopus.DeleteDataSetVersion:input_type -> octopus.DeleteDataSetVersionReq + 78, // 113: octopus.Octopus.GetNotebookList:input_type -> octopus.GetNotebookListReq + 72, // 114: octopus.Octopus.GetNotebook:input_type -> octopus.GetNotebookReq + 75, // 115: octopus.Octopus.DeleteNotebook:input_type -> octopus.DeleteNotebookReq + 68, // 116: octopus.Octopus.CreateNotebook:input_type -> octopus.CreateNotebookReq + 83, // 117: octopus.Octopus.StartNotebook:input_type -> octopus.StartNotebookReq + 86, // 118: octopus.Octopus.StopNotebook:input_type -> octopus.StopNotebookReq + 89, // 119: octopus.Octopus.GetUserImageList:input_type -> octopus.GetUserImageListReq + 97, // 120: octopus.Octopus.CreateImage:input_type -> octopus.CreateImageReq + 94, // 121: octopus.Octopus.DeleteImage:input_type -> octopus.DeleteImageReq + 101, // 122: octopus.Octopus.UploadImage:input_type -> octopus.UploadImageReq + 106, // 123: octopus.Octopus.UploadImageConfirm:input_type -> octopus.UploadImageConfirmReq + 109, // 124: octopus.Octopus.CreateTrainJob:input_type -> octopus.CreateTrainJobReq + 1, // 125: octopus.Octopus.GetComputingPower:output_type -> octopus.cpResp + 2, // 126: octopus.Octopus.GetGeneralInfo:output_type -> octopus.giResp + 22, // 127: octopus.Octopus.GetMyAlgorithmList:output_type -> octopus.GetMyAlgorithmListResp + 18, // 128: octopus.Octopus.GetAlgorithmList:output_type -> octopus.GetAlgorithmListResp + 4, // 129: octopus.Octopus.GetAlgorithm:output_type -> octopus.GetAlgorithmResp + 26, // 130: octopus.Octopus.GetAlgorithmApplyList:output_type -> octopus.GetAlgorithmApplyListResp + 29, // 131: octopus.Octopus.GetAlgorithmFrameworkList:output_type -> octopus.GetAlgorithmFrameworkListResp + 33, // 132: octopus.Octopus.DeleteMyAlgorithm:output_type -> octopus.DeleteMyAlgorithmResp + 36, // 133: octopus.Octopus.CreateMyAlgorithm:output_type -> octopus.CreateMyAlgorithmResp + 8, // 134: octopus.Octopus.DownloadAlgorithm:output_type -> octopus.DownloadAlgorithmResp + 12, // 135: octopus.Octopus.UploadAlgorithm:output_type -> octopus.UploadAlgorithmResp + 15, // 136: octopus.Octopus.UploadAlgorithmConfirm:output_type -> octopus.UploadAlgorithmConfirmResp + 48, // 137: octopus.Octopus.GetMyDatasetList:output_type -> octopus.GetMyDatasetListResp + 40, // 138: octopus.Octopus.GetDatasetVersionList:output_type -> octopus.GetDatasetVersionListResp + 44, // 139: octopus.Octopus.CreateDataSet:output_type -> octopus.CreateDataSetResp + 53, // 140: octopus.Octopus.DeleteDataSet:output_type -> octopus.DeleteDataSetResp + 57, // 141: octopus.Octopus.UploadDataSet:output_type -> octopus.UploadDataSetResp + 60, // 142: octopus.Octopus.UploadDataSetConfirm:output_type -> octopus.UploadDataSetConfirmResp + 63, // 143: octopus.Octopus.CreateDataSetVersion:output_type -> octopus.CreateDataSetVersionResp + 66, // 144: octopus.Octopus.DeleteDataSetVersion:output_type -> octopus.DeleteDataSetVersionResp + 79, // 145: octopus.Octopus.GetNotebookList:output_type -> octopus.GetNotebookListResp + 73, // 146: octopus.Octopus.GetNotebook:output_type -> octopus.GetNotebookResp + 76, // 147: octopus.Octopus.DeleteNotebook:output_type -> octopus.DeleteNotebookResp + 70, // 148: octopus.Octopus.CreateNotebook:output_type -> octopus.CreateNotebookResp + 84, // 149: octopus.Octopus.StartNotebook:output_type -> octopus.StartNotebookResp + 87, // 150: octopus.Octopus.StopNotebook:output_type -> octopus.StopNotebookResp + 90, // 151: octopus.Octopus.GetUserImageList:output_type -> octopus.GetUserImageListResp + 99, // 152: octopus.Octopus.CreateImage:output_type -> octopus.CreateImageResp + 95, // 153: octopus.Octopus.DeleteImage:output_type -> octopus.DeleteImageResp + 103, // 154: octopus.Octopus.UploadImage:output_type -> octopus.UploadImageResp + 107, // 155: octopus.Octopus.UploadImageConfirm:output_type -> octopus.UploadImageConfirmResp + 110, // 156: octopus.Octopus.CreateTrainJob:output_type -> octopus.CreateTrainJobResp + 125, // [125:157] is the sub-list for method output_type + 93, // [93:125] is the sub-list for method input_type + 93, // [93:93] is the sub-list for extension type_name + 93, // [93:93] is the sub-list for extension extendee + 0, // [0:93] is the sub-list for field type_name } func init() { file_octopus_proto_init() } @@ -8232,7 +10126,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNotebookReq); i { + switch v := v.(*CreateNotebookReq); i { case 0: return &v.state case 1: @@ -8244,7 +10138,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNotebookResp); i { + switch v := v.(*CreateNotebookParam); i { case 0: return &v.state case 1: @@ -8256,7 +10150,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadDeleteNotebook); i { + switch v := v.(*CreateNotebookResp); i { case 0: return &v.state case 1: @@ -8268,7 +10162,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNotebookListReq); i { + switch v := v.(*PayloadCreateNotebook); i { case 0: return &v.state case 1: @@ -8280,7 +10174,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNotebookListResp); i { + switch v := v.(*GetNotebookReq); i { case 0: return &v.state case 1: @@ -8292,7 +10186,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadNotebookList); i { + switch v := v.(*GetNotebookResp); i { case 0: return &v.state case 1: @@ -8304,7 +10198,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Notebooks); i { + switch v := v.(*PayloadGetNotebook); i { case 0: return &v.state case 1: @@ -8316,7 +10210,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tasks); i { + switch v := v.(*DeleteNotebookReq); i { case 0: return &v.state case 1: @@ -8328,7 +10222,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserImageListReq); i { + switch v := v.(*DeleteNotebookResp); i { case 0: return &v.state case 1: @@ -8340,7 +10234,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserImageListResp); i { + switch v := v.(*PayloadDeleteNotebook); i { case 0: return &v.state case 1: @@ -8352,7 +10246,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadUserImageList); i { + switch v := v.(*GetNotebookListReq); i { case 0: return &v.state case 1: @@ -8364,7 +10258,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Images); i { + switch v := v.(*GetNotebookListResp); i { case 0: return &v.state case 1: @@ -8376,7 +10270,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Image); i { + switch v := v.(*PayloadNotebookList); i { case 0: return &v.state case 1: @@ -8388,7 +10282,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteImageReq); i { + switch v := v.(*Notebook); i { case 0: return &v.state case 1: @@ -8400,7 +10294,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteImageResp); i { + switch v := v.(*Tasks); i { case 0: return &v.state case 1: @@ -8412,7 +10306,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadDeleteImage); i { + switch v := v.(*StartNotebookReq); i { case 0: return &v.state case 1: @@ -8424,7 +10318,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateImageReq); i { + switch v := v.(*StartNotebookResp); i { case 0: return &v.state case 1: @@ -8436,7 +10330,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateImage); i { + switch v := v.(*PayloadStartNotebook); i { case 0: return &v.state case 1: @@ -8448,7 +10342,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateImageResp); i { + switch v := v.(*StopNotebookReq); i { case 0: return &v.state case 1: @@ -8460,7 +10354,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadCreateImage); i { + switch v := v.(*StopNotebookResp); i { case 0: return &v.state case 1: @@ -8472,7 +10366,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImageReq); i { + switch v := v.(*PayloadStopNotebook); i { case 0: return &v.state case 1: @@ -8484,7 +10378,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImageParam); i { + switch v := v.(*GetUserImageListReq); i { case 0: return &v.state case 1: @@ -8496,7 +10390,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImageResp); i { + switch v := v.(*GetUserImageListResp); i { case 0: return &v.state case 1: @@ -8508,7 +10402,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadUploadImage); i { + switch v := v.(*PayloadUserImageList); i { case 0: return &v.state case 1: @@ -8520,7 +10414,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Headers); i { + switch v := v.(*Images); i { case 0: return &v.state case 1: @@ -8532,7 +10426,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImageConfirmReq); i { + switch v := v.(*Image); i { case 0: return &v.state case 1: @@ -8544,7 +10438,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImageConfirmResp); i { + switch v := v.(*DeleteImageReq); i { case 0: return &v.state case 1: @@ -8556,7 +10450,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadUploadImageConfirm); i { + switch v := v.(*DeleteImageResp); i { case 0: return &v.state case 1: @@ -8568,6 +10462,294 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadDeleteImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateImageReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateImageResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadCreateImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadImageReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadImageParam); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadImageResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadUploadImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Headers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadImageConfirmReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadImageConfirmResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadUploadImageConfirm); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobParam); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Envs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Parameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplicaStates); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Mounts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadCreateTrainJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Nfs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TrainJobOctopus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Error); i { case 0: return &v.state @@ -8586,7 +10768,7 @@ func file_octopus_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_octopus_proto_rawDesc, NumEnums: 0, - NumMessages: 97, + NumMessages: 121, NumExtensions: 0, NumServices: 1, }, diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go index 793bec6c..c94f4cb7 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go @@ -44,16 +44,21 @@ type OctopusClient interface { UploadDataSetConfirm(ctx context.Context, in *UploadDataSetConfirmReq, opts ...grpc.CallOption) (*UploadDataSetConfirmResp, error) CreateDataSetVersion(ctx context.Context, in *CreateDataSetVersionReq, opts ...grpc.CallOption) (*CreateDataSetVersionResp, error) DeleteDataSetVersion(ctx context.Context, in *DeleteDataSetVersionReq, opts ...grpc.CallOption) (*DeleteDataSetVersionResp, error) - // ModelDeployService // Develop GetNotebookList(ctx context.Context, in *GetNotebookListReq, opts ...grpc.CallOption) (*GetNotebookListResp, error) + GetNotebook(ctx context.Context, in *GetNotebookReq, opts ...grpc.CallOption) (*GetNotebookResp, error) DeleteNotebook(ctx context.Context, in *DeleteNotebookReq, opts ...grpc.CallOption) (*DeleteNotebookResp, error) + CreateNotebook(ctx context.Context, in *CreateNotebookReq, opts ...grpc.CallOption) (*CreateNotebookResp, error) + StartNotebook(ctx context.Context, in *StartNotebookReq, opts ...grpc.CallOption) (*StartNotebookResp, error) + StopNotebook(ctx context.Context, in *StopNotebookReq, opts ...grpc.CallOption) (*StopNotebookResp, error) // ImageService GetUserImageList(ctx context.Context, in *GetUserImageListReq, opts ...grpc.CallOption) (*GetUserImageListResp, error) CreateImage(ctx context.Context, in *CreateImageReq, opts ...grpc.CallOption) (*CreateImageResp, error) DeleteImage(ctx context.Context, in *DeleteImageReq, opts ...grpc.CallOption) (*DeleteImageResp, error) UploadImage(ctx context.Context, in *UploadImageReq, opts ...grpc.CallOption) (*UploadImageResp, error) UploadImageConfirm(ctx context.Context, in *UploadImageConfirmReq, opts ...grpc.CallOption) (*UploadImageConfirmResp, error) + // TrainJobService + CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) } type octopusClient struct { @@ -253,6 +258,15 @@ func (c *octopusClient) GetNotebookList(ctx context.Context, in *GetNotebookList return out, nil } +func (c *octopusClient) GetNotebook(ctx context.Context, in *GetNotebookReq, opts ...grpc.CallOption) (*GetNotebookResp, error) { + out := new(GetNotebookResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/GetNotebook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *octopusClient) DeleteNotebook(ctx context.Context, in *DeleteNotebookReq, opts ...grpc.CallOption) (*DeleteNotebookResp, error) { out := new(DeleteNotebookResp) err := c.cc.Invoke(ctx, "/octopus.Octopus/DeleteNotebook", in, out, opts...) @@ -262,6 +276,33 @@ func (c *octopusClient) DeleteNotebook(ctx context.Context, in *DeleteNotebookRe return out, nil } +func (c *octopusClient) CreateNotebook(ctx context.Context, in *CreateNotebookReq, opts ...grpc.CallOption) (*CreateNotebookResp, error) { + out := new(CreateNotebookResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/CreateNotebook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) StartNotebook(ctx context.Context, in *StartNotebookReq, opts ...grpc.CallOption) (*StartNotebookResp, error) { + out := new(StartNotebookResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/StartNotebook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) StopNotebook(ctx context.Context, in *StopNotebookReq, opts ...grpc.CallOption) (*StopNotebookResp, error) { + out := new(StopNotebookResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/StopNotebook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *octopusClient) GetUserImageList(ctx context.Context, in *GetUserImageListReq, opts ...grpc.CallOption) (*GetUserImageListResp, error) { out := new(GetUserImageListResp) err := c.cc.Invoke(ctx, "/octopus.Octopus/GetUserImageList", in, out, opts...) @@ -307,6 +348,15 @@ func (c *octopusClient) UploadImageConfirm(ctx context.Context, in *UploadImageC return out, nil } +func (c *octopusClient) CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) { + out := new(CreateTrainJobResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/CreateTrainJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OctopusServer is the server API for Octopus service. // All implementations must embed UnimplementedOctopusServer // for forward compatibility @@ -333,16 +383,21 @@ type OctopusServer interface { UploadDataSetConfirm(context.Context, *UploadDataSetConfirmReq) (*UploadDataSetConfirmResp, error) CreateDataSetVersion(context.Context, *CreateDataSetVersionReq) (*CreateDataSetVersionResp, error) DeleteDataSetVersion(context.Context, *DeleteDataSetVersionReq) (*DeleteDataSetVersionResp, error) - // ModelDeployService // Develop GetNotebookList(context.Context, *GetNotebookListReq) (*GetNotebookListResp, error) + GetNotebook(context.Context, *GetNotebookReq) (*GetNotebookResp, error) DeleteNotebook(context.Context, *DeleteNotebookReq) (*DeleteNotebookResp, error) + CreateNotebook(context.Context, *CreateNotebookReq) (*CreateNotebookResp, error) + StartNotebook(context.Context, *StartNotebookReq) (*StartNotebookResp, error) + StopNotebook(context.Context, *StopNotebookReq) (*StopNotebookResp, error) // ImageService GetUserImageList(context.Context, *GetUserImageListReq) (*GetUserImageListResp, error) CreateImage(context.Context, *CreateImageReq) (*CreateImageResp, error) DeleteImage(context.Context, *DeleteImageReq) (*DeleteImageResp, error) UploadImage(context.Context, *UploadImageReq) (*UploadImageResp, error) UploadImageConfirm(context.Context, *UploadImageConfirmReq) (*UploadImageConfirmResp, error) + // TrainJobService + CreateTrainJob(context.Context, *CreateTrainJobReq) (*CreateTrainJobResp, error) mustEmbedUnimplementedOctopusServer() } @@ -413,9 +468,21 @@ func (UnimplementedOctopusServer) DeleteDataSetVersion(context.Context, *DeleteD func (UnimplementedOctopusServer) GetNotebookList(context.Context, *GetNotebookListReq) (*GetNotebookListResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetNotebookList not implemented") } +func (UnimplementedOctopusServer) GetNotebook(context.Context, *GetNotebookReq) (*GetNotebookResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNotebook not implemented") +} func (UnimplementedOctopusServer) DeleteNotebook(context.Context, *DeleteNotebookReq) (*DeleteNotebookResp, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteNotebook not implemented") } +func (UnimplementedOctopusServer) CreateNotebook(context.Context, *CreateNotebookReq) (*CreateNotebookResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateNotebook not implemented") +} +func (UnimplementedOctopusServer) StartNotebook(context.Context, *StartNotebookReq) (*StartNotebookResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartNotebook not implemented") +} +func (UnimplementedOctopusServer) StopNotebook(context.Context, *StopNotebookReq) (*StopNotebookResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopNotebook not implemented") +} func (UnimplementedOctopusServer) GetUserImageList(context.Context, *GetUserImageListReq) (*GetUserImageListResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUserImageList not implemented") } @@ -431,6 +498,9 @@ func (UnimplementedOctopusServer) UploadImage(context.Context, *UploadImageReq) func (UnimplementedOctopusServer) UploadImageConfirm(context.Context, *UploadImageConfirmReq) (*UploadImageConfirmResp, error) { return nil, status.Errorf(codes.Unimplemented, "method UploadImageConfirm not implemented") } +func (UnimplementedOctopusServer) CreateTrainJob(context.Context, *CreateTrainJobReq) (*CreateTrainJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTrainJob not implemented") +} func (UnimplementedOctopusServer) mustEmbedUnimplementedOctopusServer() {} // UnsafeOctopusServer may be embedded to opt out of forward compatibility for this service. @@ -822,6 +892,24 @@ func _Octopus_GetNotebookList_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Octopus_GetNotebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNotebookReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).GetNotebook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/GetNotebook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).GetNotebook(ctx, req.(*GetNotebookReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Octopus_DeleteNotebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteNotebookReq) if err := dec(in); err != nil { @@ -840,6 +928,60 @@ func _Octopus_DeleteNotebook_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Octopus_CreateNotebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNotebookReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).CreateNotebook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/CreateNotebook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).CreateNotebook(ctx, req.(*CreateNotebookReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_StartNotebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartNotebookReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).StartNotebook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/StartNotebook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).StartNotebook(ctx, req.(*StartNotebookReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_StopNotebook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopNotebookReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).StopNotebook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/StopNotebook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).StopNotebook(ctx, req.(*StopNotebookReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Octopus_GetUserImageList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetUserImageListReq) if err := dec(in); err != nil { @@ -930,6 +1072,24 @@ func _Octopus_UploadImageConfirm_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _Octopus_CreateTrainJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTrainJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).CreateTrainJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/CreateTrainJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).CreateTrainJob(ctx, req.(*CreateTrainJobReq)) + } + return interceptor(ctx, in, info, handler) +} + // Octopus_ServiceDesc is the grpc.ServiceDesc for Octopus service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1021,10 +1181,26 @@ var Octopus_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetNotebookList", Handler: _Octopus_GetNotebookList_Handler, }, + { + MethodName: "GetNotebook", + Handler: _Octopus_GetNotebook_Handler, + }, { MethodName: "DeleteNotebook", Handler: _Octopus_DeleteNotebook_Handler, }, + { + MethodName: "CreateNotebook", + Handler: _Octopus_CreateNotebook_Handler, + }, + { + MethodName: "StartNotebook", + Handler: _Octopus_StartNotebook_Handler, + }, + { + MethodName: "StopNotebook", + Handler: _Octopus_StopNotebook_Handler, + }, { MethodName: "GetUserImageList", Handler: _Octopus_GetUserImageList_Handler, @@ -1045,6 +1221,10 @@ var Octopus_ServiceDesc = grpc.ServiceDesc{ MethodName: "UploadImageConfirm", Handler: _Octopus_UploadImageConfirm_Handler, }, + { + MethodName: "CreateTrainJob", + Handler: _Octopus_CreateTrainJob_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "octopus.proto", diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go index 41804b88..0d9290b7 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go @@ -16,6 +16,7 @@ type ( AlgorithmDetail = octopus.AlgorithmDetail Algorithms = octopus.Algorithms Applies = octopus.Applies + Config = octopus.Config CpResp = octopus.CpResp CreateDataSet = octopus.CreateDataSet CreateDataSetReq = octopus.CreateDataSetReq @@ -28,6 +29,12 @@ type ( CreateMyAlgorithm = octopus.CreateMyAlgorithm CreateMyAlgorithmReq = octopus.CreateMyAlgorithmReq CreateMyAlgorithmResp = octopus.CreateMyAlgorithmResp + CreateNotebookParam = octopus.CreateNotebookParam + CreateNotebookReq = octopus.CreateNotebookReq + CreateNotebookResp = octopus.CreateNotebookResp + CreateTrainJobParam = octopus.CreateTrainJobParam + CreateTrainJobReq = octopus.CreateTrainJobReq + CreateTrainJobResp = octopus.CreateTrainJobResp DatasetVersion = octopus.DatasetVersion Datasets = octopus.Datasets DeleteDataSetReq = octopus.DeleteDataSetReq @@ -42,6 +49,7 @@ type ( DeleteNotebookResp = octopus.DeleteNotebookResp DownloadAlgorithmReq = octopus.DownloadAlgorithmReq DownloadAlgorithmResp = octopus.DownloadAlgorithmResp + Envs = octopus.Envs Error = octopus.Error GetAlgorithmApplyListReq = octopus.GetAlgorithmApplyListReq GetAlgorithmApplyListResp = octopus.GetAlgorithmApplyListResp @@ -59,6 +67,8 @@ type ( GetMyDatasetListResp = octopus.GetMyDatasetListResp GetNotebookListReq = octopus.GetNotebookListReq GetNotebookListResp = octopus.GetNotebookListResp + GetNotebookReq = octopus.GetNotebookReq + GetNotebookResp = octopus.GetNotebookResp GetUserImageListReq = octopus.GetUserImageListReq GetUserImageListResp = octopus.GetUserImageListResp GiResp = octopus.GiResp @@ -66,13 +76,18 @@ type ( Image = octopus.Image Images = octopus.Images Lables = octopus.Lables - Notebooks = octopus.Notebooks + Mounts = octopus.Mounts + Nfs = octopus.Nfs + Notebook = octopus.Notebook + Parameters = octopus.Parameters PayloadAlgorithmFrameworkList = octopus.PayloadAlgorithmFrameworkList PayloadAlgorithmList = octopus.PayloadAlgorithmList PayloadCreateDataSet = octopus.PayloadCreateDataSet PayloadCreateDataSetVersion = octopus.PayloadCreateDataSetVersion PayloadCreateImage = octopus.PayloadCreateImage PayloadCreateMyAlgorithm = octopus.PayloadCreateMyAlgorithm + PayloadCreateNotebook = octopus.PayloadCreateNotebook + PayloadCreateTrainJob = octopus.PayloadCreateTrainJob PayloadDeleteDataSet = octopus.PayloadDeleteDataSet PayloadDeleteDataSetVersion = octopus.PayloadDeleteDataSetVersion PayloadDeleteImage = octopus.PayloadDeleteImage @@ -82,9 +97,12 @@ type ( PayloadGetAlgorithm = octopus.PayloadGetAlgorithm PayloadGetAlgorithmApplyList = octopus.PayloadGetAlgorithmApplyList PayloadGetDatasetVersion = octopus.PayloadGetDatasetVersion + PayloadGetNotebook = octopus.PayloadGetNotebook PayloadMyAlgorithmList = octopus.PayloadMyAlgorithmList PayloadMyDatasetList = octopus.PayloadMyDatasetList PayloadNotebookList = octopus.PayloadNotebookList + PayloadStartNotebook = octopus.PayloadStartNotebook + PayloadStopNotebook = octopus.PayloadStopNotebook PayloadUploadAlgorithm = octopus.PayloadUploadAlgorithm PayloadUploadAlgorithmConfirm = octopus.PayloadUploadAlgorithmConfirm PayloadUploadDataSet = octopus.PayloadUploadDataSet @@ -92,8 +110,14 @@ type ( PayloadUploadImage = octopus.PayloadUploadImage PayloadUploadImageConfirm = octopus.PayloadUploadImageConfirm PayloadUserImageList = octopus.PayloadUserImageList + ReplicaStates = octopus.ReplicaStates ResourceReq = octopus.ResourceReq + StartNotebookReq = octopus.StartNotebookReq + StartNotebookResp = octopus.StartNotebookResp + StopNotebookReq = octopus.StopNotebookReq + StopNotebookResp = octopus.StopNotebookResp Tasks = octopus.Tasks + TrainJobOctopus = octopus.TrainJobOctopus UploadAlgorithmConfirmReq = octopus.UploadAlgorithmConfirmReq UploadAlgorithmConfirmResp = octopus.UploadAlgorithmConfirmResp UploadAlgorithmParam = octopus.UploadAlgorithmParam @@ -134,15 +158,21 @@ type ( UploadDataSetConfirm(ctx context.Context, in *UploadDataSetConfirmReq, opts ...grpc.CallOption) (*UploadDataSetConfirmResp, error) CreateDataSetVersion(ctx context.Context, in *CreateDataSetVersionReq, opts ...grpc.CallOption) (*CreateDataSetVersionResp, error) DeleteDataSetVersion(ctx context.Context, in *DeleteDataSetVersionReq, opts ...grpc.CallOption) (*DeleteDataSetVersionResp, error) - // ModelDeployService + // Develop GetNotebookList(ctx context.Context, in *GetNotebookListReq, opts ...grpc.CallOption) (*GetNotebookListResp, error) + GetNotebook(ctx context.Context, in *GetNotebookReq, opts ...grpc.CallOption) (*GetNotebookResp, error) DeleteNotebook(ctx context.Context, in *DeleteNotebookReq, opts ...grpc.CallOption) (*DeleteNotebookResp, error) + CreateNotebook(ctx context.Context, in *CreateNotebookReq, opts ...grpc.CallOption) (*CreateNotebookResp, error) + StartNotebook(ctx context.Context, in *StartNotebookReq, opts ...grpc.CallOption) (*StartNotebookResp, error) + StopNotebook(ctx context.Context, in *StopNotebookReq, opts ...grpc.CallOption) (*StopNotebookResp, error) // ImageService GetUserImageList(ctx context.Context, in *GetUserImageListReq, opts ...grpc.CallOption) (*GetUserImageListResp, error) CreateImage(ctx context.Context, in *CreateImageReq, opts ...grpc.CallOption) (*CreateImageResp, error) DeleteImage(ctx context.Context, in *DeleteImageReq, opts ...grpc.CallOption) (*DeleteImageResp, error) UploadImage(ctx context.Context, in *UploadImageReq, opts ...grpc.CallOption) (*UploadImageResp, error) UploadImageConfirm(ctx context.Context, in *UploadImageConfirmReq, opts ...grpc.CallOption) (*UploadImageConfirmResp, error) + // TrainJobService + CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) } defaultOctopus struct { @@ -258,17 +288,37 @@ func (m *defaultOctopus) DeleteDataSetVersion(ctx context.Context, in *DeleteDat return client.DeleteDataSetVersion(ctx, in, opts...) } -// ModelDeployService +// Develop func (m *defaultOctopus) GetNotebookList(ctx context.Context, in *GetNotebookListReq, opts ...grpc.CallOption) (*GetNotebookListResp, error) { client := octopus.NewOctopusClient(m.cli.Conn()) return client.GetNotebookList(ctx, in, opts...) } +func (m *defaultOctopus) GetNotebook(ctx context.Context, in *GetNotebookReq, opts ...grpc.CallOption) (*GetNotebookResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.GetNotebook(ctx, in, opts...) +} + func (m *defaultOctopus) DeleteNotebook(ctx context.Context, in *DeleteNotebookReq, opts ...grpc.CallOption) (*DeleteNotebookResp, error) { client := octopus.NewOctopusClient(m.cli.Conn()) return client.DeleteNotebook(ctx, in, opts...) } +func (m *defaultOctopus) CreateNotebook(ctx context.Context, in *CreateNotebookReq, opts ...grpc.CallOption) (*CreateNotebookResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.CreateNotebook(ctx, in, opts...) +} + +func (m *defaultOctopus) StartNotebook(ctx context.Context, in *StartNotebookReq, opts ...grpc.CallOption) (*StartNotebookResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.StartNotebook(ctx, in, opts...) +} + +func (m *defaultOctopus) StopNotebook(ctx context.Context, in *StopNotebookReq, opts ...grpc.CallOption) (*StopNotebookResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.StopNotebook(ctx, in, opts...) +} + // ImageService func (m *defaultOctopus) GetUserImageList(ctx context.Context, in *GetUserImageListReq, opts ...grpc.CallOption) (*GetUserImageListResp, error) { client := octopus.NewOctopusClient(m.cli.Conn()) @@ -294,3 +344,9 @@ func (m *defaultOctopus) UploadImageConfirm(ctx context.Context, in *UploadImage client := octopus.NewOctopusClient(m.cli.Conn()) return client.UploadImageConfirm(ctx, in, opts...) } + +// TrainJobService +func (m *defaultOctopus) CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.CreateTrainJob(ctx, in, opts...) +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto index b8697c8a..17fd32a5 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto @@ -417,6 +417,53 @@ message PayloadDeleteDataSetVersion{ /******************ModelDeployService End*************************/ /******************Develop Start*************************/ +message CreateNotebookReq{ + string platform =1; + CreateNotebookParam param = 2; +} + +message CreateNotebookParam{ + string algorithmId = 1; + string algorithmVersion = 2; + string command = 3; + string datasetId = 4; + string datasetVersion = 5; + string desc = 6; + Envs envs = 7; + string imageId = 8; + string imageUrl = 9; + repeated Mounts mounts = 10; + string name = 11; + string resourcePool = 12; + string resourceSpecId = 13; + int32 taskNumber = 14; +} + +message CreateNotebookResp{ + bool success =1; + PayloadCreateNotebook payload =2; + Error error = 3; +} + +message PayloadCreateNotebook{ + string id = 1; +} + +message GetNotebookReq{ + string platform =1; + string id =2; +} + +message GetNotebookResp{ + bool success =1; + PayloadGetNotebook payload =2; + Error error = 3; +} + +message PayloadGetNotebook{ + Notebook notebook = 1; +} + message DeleteNotebookReq{ string platform =1; string id =2; @@ -446,10 +493,10 @@ message GetNotebookListResp{ message PayloadNotebookList{ int32 totalSize =1; - repeated Notebooks notebooks = 2; + repeated Notebook notebooks = 2; } -message Notebooks{ +message Notebook{ int64 createdAt =1; int64 updatedAt =2; string id = 3; @@ -479,6 +526,38 @@ message Tasks{ string url =1; string name= 2; } + +message StartNotebookReq{ + string platform =1; + string id =2; +} + +message StartNotebookResp{ + bool success =1; + PayloadStartNotebook payload =2; + Error error = 3; +} + +message PayloadStartNotebook{ + string id = 1; +} + +message StopNotebookReq{ + string platform =1; + string id =2; +} + +message StopNotebookResp{ + bool success =1; + PayloadStopNotebook payload =2; + Error error = 3; +} + +message PayloadStopNotebook{ + string id = 1; +} + + /******************Develop End*************************/ /******************ImageService Start*************************/ @@ -608,6 +687,85 @@ message PayloadUploadImageConfirm{ /******************Model End*************************/ /******************TrainJobService Start*************************/ +message CreateTrainJobReq{ + string platform =1; + CreateTrainJobParam param = 2; +} + +message CreateTrainJobResp{ + bool success =1; + PayloadCreateTrainJob payload =2; + Error error = 3; +} + +message CreateTrainJobParam{ + string algorithmId = 1; + string algorithmVersion = 2; + repeated Config config = 3; + string dataSetId = 4; + string dataSetVersion = 5; + string desc = 6; + string imageId = 7; + string imageUrl = 8; + bool isDistributed = 9; + repeated Mounts mounts = 10; + string name = 11; + string resourcePool = 12; +} + +message Config{ + string command = 1; + Envs envs = 2; + bool isMainRole = 3; + int32 minFailedTaskCount = 4; + int32 minSucceededTaskCount =5; + string name = 6; + repeated Parameters parameters = 7; + repeated ReplicaStates replicaStates = 8; + string resourceSpecId = 9; + string resourceSpecName = 10; + int32 resourceSpecPrice = 11; + string subTaskState = 12; + int32 taskNumber = 13; +} + +message Envs{ + string additionalProp1 = 1; + string additionalProp2 = 2; + string additionalProp3 = 3; +} + +message Parameters{ + string key = 1; + string value = 2; +} + +message ReplicaStates{ + string key = 1; + string state = 2; +} + +message Mounts{ + string containerPath = 1; + Nfs nfs = 2; + TrainJobOctopus octopus = 3; + bool readOnly = 4; +} + +message PayloadCreateTrainJob{ + string jobId = 1; +} + +message Nfs{ + string path = 1; + string server = 2; +} + +message TrainJobOctopus{ + string bucket = 1; + string object = 2; +} + /******************TrainJobService End*************************/ message Error{ @@ -638,9 +796,6 @@ service Octopus { - - - //DatasetService rpc GetMyDatasetList(GetMyDatasetListReq) returns (GetMyDatasetListResp); rpc GetDatasetVersionList(GetDatasetVersionListReq) returns (GetDatasetVersionListResp); @@ -653,12 +808,17 @@ service Octopus { - - //ModelDeployService + + //Develop rpc GetNotebookList(GetNotebookListReq) returns (GetNotebookListResp); + rpc GetNotebook(GetNotebookReq) returns (GetNotebookResp); rpc DeleteNotebook(DeleteNotebookReq) returns (DeleteNotebookResp); + rpc CreateNotebook(CreateNotebookReq) returns (CreateNotebookResp); + rpc StartNotebook(StartNotebookReq) returns (StartNotebookResp); + rpc StopNotebook(StopNotebookReq) returns (StopNotebookResp); + //ImageService @@ -669,9 +829,12 @@ service Octopus { rpc UploadImageConfirm(UploadImageConfirmReq) returns (UploadImageConfirmResp); - - //Model + + + //TrainJobService + rpc CreateTrainJob(CreateTrainJobReq) returns (CreateTrainJobResp); + } \ No newline at end of file