diff --git a/Dockerfile b/Dockerfile index f9381ff..0647c1e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,8 @@ RUN go env -w GO111MODULE=on && \ WORKDIR /app -COPY . /app/fonchain-approval + +COPY fonchain-approval /app/fonchain-approval WORKDIR /app/fonchain-approval RUN go mod download diff --git a/api/approval/approval.pb.go b/api/approval/approval.pb.go index b47d602..51a7426 100644 --- a/api/approval/approval.pb.go +++ b/api/approval/approval.pb.go @@ -21,6 +21,77 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type KeyInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApprovalKey string `protobuf:"bytes,1,opt,name=ApprovalKey,json=approvalKey,proto3" json:"ApprovalKey,omitempty"` + ApprovalName string `protobuf:"bytes,2,opt,name=ApprovalName,json=approvalName,proto3" json:"ApprovalName,omitempty"` + ApprovalType string `protobuf:"bytes,3,opt,name=ApprovalType,json=approvalType,proto3" json:"ApprovalType,omitempty"` + ApprovalValue string `protobuf:"bytes,4,opt,name=ApprovalValue,json=approvalValue,proto3" json:"ApprovalValue,omitempty"` +} + +func (x *KeyInfo) Reset() { + *x = KeyInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_api_approval_approval_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KeyInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeyInfo) ProtoMessage() {} + +func (x *KeyInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_approval_approval_proto_msgTypes[0] + 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 KeyInfo.ProtoReflect.Descriptor instead. +func (*KeyInfo) Descriptor() ([]byte, []int) { + return file_api_approval_approval_proto_rawDescGZIP(), []int{0} +} + +func (x *KeyInfo) GetApprovalKey() string { + if x != nil { + return x.ApprovalKey + } + return "" +} + +func (x *KeyInfo) GetApprovalName() string { + if x != nil { + return x.ApprovalName + } + return "" +} + +func (x *KeyInfo) GetApprovalType() string { + if x != nil { + return x.ApprovalType + } + return "" +} + +func (x *KeyInfo) GetApprovalValue() string { + if x != nil { + return x.ApprovalValue + } + return "" +} + type UpdateEhApplyIDRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28,13 +99,13 @@ type UpdateEhApplyIDRequest struct { Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` ApprovalID uint64 `protobuf:"varint,2,opt,name=ApprovalID,json=approvalID,proto3" json:"ApprovalID,omitempty"` - ApplyId uint64 `protobuf:"varint,3,opt,name=ApplyId,json=applyId,proto3" json:"ApplyId,omitempty"` + ApplyId string `protobuf:"bytes,3,opt,name=ApplyId,json=applyId,proto3" json:"ApplyId,omitempty"` } func (x *UpdateEhApplyIDRequest) Reset() { *x = UpdateEhApplyIDRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[0] + mi := &file_api_approval_approval_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -47,7 +118,7 @@ func (x *UpdateEhApplyIDRequest) String() string { func (*UpdateEhApplyIDRequest) ProtoMessage() {} func (x *UpdateEhApplyIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[0] + mi := &file_api_approval_approval_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60,7 +131,7 @@ func (x *UpdateEhApplyIDRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateEhApplyIDRequest.ProtoReflect.Descriptor instead. func (*UpdateEhApplyIDRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{0} + return file_api_approval_approval_proto_rawDescGZIP(), []int{1} } func (x *UpdateEhApplyIDRequest) GetDomain() string { @@ -77,11 +148,11 @@ func (x *UpdateEhApplyIDRequest) GetApprovalID() uint64 { return 0 } -func (x *UpdateEhApplyIDRequest) GetApplyId() uint64 { +func (x *UpdateEhApplyIDRequest) GetApplyId() string { if x != nil { return x.ApplyId } - return 0 + return "" } type UpdateEhApplyIDResponse struct { @@ -93,7 +164,7 @@ type UpdateEhApplyIDResponse struct { func (x *UpdateEhApplyIDResponse) Reset() { *x = UpdateEhApplyIDResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[1] + mi := &file_api_approval_approval_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -106,7 +177,7 @@ func (x *UpdateEhApplyIDResponse) String() string { func (*UpdateEhApplyIDResponse) ProtoMessage() {} func (x *UpdateEhApplyIDResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[1] + mi := &file_api_approval_approval_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -119,7 +190,7 @@ func (x *UpdateEhApplyIDResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateEhApplyIDResponse.ProtoReflect.Descriptor instead. func (*UpdateEhApplyIDResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{1} + return file_api_approval_approval_proto_rawDescGZIP(), []int{2} } type UsedNumByUserRequest struct { @@ -134,7 +205,7 @@ type UsedNumByUserRequest struct { func (x *UsedNumByUserRequest) Reset() { *x = UsedNumByUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[2] + mi := &file_api_approval_approval_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -147,7 +218,7 @@ func (x *UsedNumByUserRequest) String() string { func (*UsedNumByUserRequest) ProtoMessage() {} func (x *UsedNumByUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[2] + mi := &file_api_approval_approval_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -160,7 +231,7 @@ func (x *UsedNumByUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UsedNumByUserRequest.ProtoReflect.Descriptor instead. func (*UsedNumByUserRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{2} + return file_api_approval_approval_proto_rawDescGZIP(), []int{3} } func (x *UsedNumByUserRequest) GetDomain() string { @@ -188,7 +259,7 @@ type UsedNumByUserResponse struct { func (x *UsedNumByUserResponse) Reset() { *x = UsedNumByUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[3] + mi := &file_api_approval_approval_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -201,7 +272,7 @@ func (x *UsedNumByUserResponse) String() string { func (*UsedNumByUserResponse) ProtoMessage() {} func (x *UsedNumByUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[3] + mi := &file_api_approval_approval_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -214,7 +285,7 @@ func (x *UsedNumByUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UsedNumByUserResponse.ProtoReflect.Descriptor instead. func (*UsedNumByUserResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{3} + return file_api_approval_approval_proto_rawDescGZIP(), []int{4} } func (x *UsedNumByUserResponse) GetTotal() uint64 { @@ -236,7 +307,7 @@ type NowLevelByInfoRequest struct { func (x *NowLevelByInfoRequest) Reset() { *x = NowLevelByInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[4] + mi := &file_api_approval_approval_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -249,7 +320,7 @@ func (x *NowLevelByInfoRequest) String() string { func (*NowLevelByInfoRequest) ProtoMessage() {} func (x *NowLevelByInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[4] + mi := &file_api_approval_approval_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -262,7 +333,7 @@ func (x *NowLevelByInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NowLevelByInfoRequest.ProtoReflect.Descriptor instead. func (*NowLevelByInfoRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{4} + return file_api_approval_approval_proto_rawDescGZIP(), []int{5} } func (x *NowLevelByInfoRequest) GetDomain() string { @@ -293,7 +364,7 @@ type WorkFlowResponse struct { func (x *WorkFlowResponse) Reset() { *x = WorkFlowResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[5] + mi := &file_api_approval_approval_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -306,7 +377,7 @@ func (x *WorkFlowResponse) String() string { func (*WorkFlowResponse) ProtoMessage() {} func (x *WorkFlowResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[5] + mi := &file_api_approval_approval_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -319,7 +390,7 @@ func (x *WorkFlowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkFlowResponse.ProtoReflect.Descriptor instead. func (*WorkFlowResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{5} + return file_api_approval_approval_proto_rawDescGZIP(), []int{6} } func (x *WorkFlowResponse) GetID() uint64 { @@ -363,7 +434,7 @@ type CommonRequest struct { func (x *CommonRequest) Reset() { *x = CommonRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[6] + mi := &file_api_approval_approval_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -376,7 +447,7 @@ func (x *CommonRequest) String() string { func (*CommonRequest) ProtoMessage() {} func (x *CommonRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[6] + mi := &file_api_approval_approval_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -389,7 +460,7 @@ func (x *CommonRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonRequest.ProtoReflect.Descriptor instead. func (*CommonRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{6} + return file_api_approval_approval_proto_rawDescGZIP(), []int{7} } func (x *CommonRequest) GetDomain() string { @@ -418,17 +489,19 @@ type CreateTypeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - Title string `protobuf:"bytes,3,opt,name=Title,json=title,proto3" json:"Title,omitempty"` - Remark string `protobuf:"bytes,5,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - KeyWord string `protobuf:"bytes,6,opt,name=KeyWord,json=keyWord,proto3" json:"KeyWord,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` + Title string `protobuf:"bytes,3,opt,name=Title,json=title,proto3" json:"Title,omitempty"` + Remark string `protobuf:"bytes,5,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` + KeyWord string `protobuf:"bytes,6,opt,name=KeyWord,json=keyWord,proto3" json:"KeyWord,omitempty"` + KeyInfos []*KeyInfo `protobuf:"bytes,7,rep,name=KeyInfos,json=keyInfos,proto3" json:"KeyInfos,omitempty"` + IsCustom uint64 `protobuf:"varint,8,opt,name=IsCustom,json=isCustom,proto3" json:"IsCustom,omitempty"` } func (x *CreateTypeRequest) Reset() { *x = CreateTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[7] + mi := &file_api_approval_approval_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -441,7 +514,7 @@ func (x *CreateTypeRequest) String() string { func (*CreateTypeRequest) ProtoMessage() {} func (x *CreateTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[7] + mi := &file_api_approval_approval_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -454,7 +527,7 @@ func (x *CreateTypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTypeRequest.ProtoReflect.Descriptor instead. func (*CreateTypeRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{7} + return file_api_approval_approval_proto_rawDescGZIP(), []int{8} } func (x *CreateTypeRequest) GetDomain() string { @@ -492,6 +565,20 @@ func (x *CreateTypeRequest) GetKeyWord() string { return "" } +func (x *CreateTypeRequest) GetKeyInfos() []*KeyInfo { + if x != nil { + return x.KeyInfos + } + return nil +} + +func (x *CreateTypeRequest) GetIsCustom() uint64 { + if x != nil { + return x.IsCustom + } + return 0 +} + type TypeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -504,7 +591,7 @@ type TypeResponse struct { func (x *TypeResponse) Reset() { *x = TypeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[8] + mi := &file_api_approval_approval_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -517,7 +604,7 @@ func (x *TypeResponse) String() string { func (*TypeResponse) ProtoMessage() {} func (x *TypeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[8] + mi := &file_api_approval_approval_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -530,7 +617,7 @@ func (x *TypeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeResponse.ProtoReflect.Descriptor instead. func (*TypeResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{8} + return file_api_approval_approval_proto_rawDescGZIP(), []int{9} } func (x *TypeResponse) GetID() uint64 { @@ -559,7 +646,7 @@ type AllTypeResponse struct { func (x *AllTypeResponse) Reset() { *x = AllTypeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[9] + mi := &file_api_approval_approval_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +659,7 @@ func (x *AllTypeResponse) String() string { func (*AllTypeResponse) ProtoMessage() {} func (x *AllTypeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[9] + mi := &file_api_approval_approval_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +672,7 @@ func (x *AllTypeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AllTypeResponse.ProtoReflect.Descriptor instead. func (*AllTypeResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{9} + return file_api_approval_approval_proto_rawDescGZIP(), []int{10} } func (x *AllTypeResponse) GetData() []*CreateTypeRequest { @@ -618,7 +705,7 @@ type StatusRequest struct { func (x *StatusRequest) Reset() { *x = StatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[10] + mi := &file_api_approval_approval_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -631,7 +718,7 @@ func (x *StatusRequest) String() string { func (*StatusRequest) ProtoMessage() {} func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[10] + mi := &file_api_approval_approval_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -644,7 +731,7 @@ func (x *StatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead. func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{10} + return file_api_approval_approval_proto_rawDescGZIP(), []int{11} } func (x *StatusRequest) GetDomain() string { @@ -698,7 +785,7 @@ type StatusResponse struct { func (x *StatusResponse) Reset() { *x = StatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[11] + mi := &file_api_approval_approval_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -711,7 +798,7 @@ func (x *StatusResponse) String() string { func (*StatusResponse) ProtoMessage() {} func (x *StatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[11] + mi := &file_api_approval_approval_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -724,7 +811,7 @@ func (x *StatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead. func (*StatusResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{11} + return file_api_approval_approval_proto_rawDescGZIP(), []int{12} } type ListRequest struct { @@ -743,7 +830,7 @@ type ListRequest struct { func (x *ListRequest) Reset() { *x = ListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[12] + mi := &file_api_approval_approval_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -756,7 +843,7 @@ func (x *ListRequest) String() string { func (*ListRequest) ProtoMessage() {} func (x *ListRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[12] + mi := &file_api_approval_approval_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -769,7 +856,7 @@ func (x *ListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRequest.ProtoReflect.Descriptor instead. func (*ListRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{12} + return file_api_approval_approval_proto_rawDescGZIP(), []int{13} } func (x *ListRequest) GetDomain() string { @@ -826,7 +913,7 @@ type ListResponse struct { func (x *ListResponse) Reset() { *x = ListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[13] + mi := &file_api_approval_approval_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -839,7 +926,7 @@ func (x *ListResponse) String() string { func (*ListResponse) ProtoMessage() {} func (x *ListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[13] + mi := &file_api_approval_approval_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -852,7 +939,7 @@ func (x *ListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResponse.ProtoReflect.Descriptor instead. func (*ListResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{13} + return file_api_approval_approval_proto_rawDescGZIP(), []int{14} } func (x *ListResponse) GetCount() uint64 { @@ -882,7 +969,7 @@ type ViewedRequest struct { func (x *ViewedRequest) Reset() { *x = ViewedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[14] + mi := &file_api_approval_approval_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -895,7 +982,7 @@ func (x *ViewedRequest) String() string { func (*ViewedRequest) ProtoMessage() {} func (x *ViewedRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[14] + mi := &file_api_approval_approval_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -908,7 +995,7 @@ func (x *ViewedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ViewedRequest.ProtoReflect.Descriptor instead. func (*ViewedRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{14} + return file_api_approval_approval_proto_rawDescGZIP(), []int{15} } func (x *ViewedRequest) GetDomain() string { @@ -945,7 +1032,7 @@ type InformationRequest struct { func (x *InformationRequest) Reset() { *x = InformationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[15] + mi := &file_api_approval_approval_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -958,7 +1045,7 @@ func (x *InformationRequest) String() string { func (*InformationRequest) ProtoMessage() {} func (x *InformationRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[15] + mi := &file_api_approval_approval_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -971,7 +1058,7 @@ func (x *InformationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InformationRequest.ProtoReflect.Descriptor instead. func (*InformationRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{15} + return file_api_approval_approval_proto_rawDescGZIP(), []int{16} } func (x *InformationRequest) GetDomain() string { @@ -1009,7 +1096,7 @@ type Information struct { func (x *Information) Reset() { *x = Information{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[16] + mi := &file_api_approval_approval_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1022,7 +1109,7 @@ func (x *Information) String() string { func (*Information) ProtoMessage() {} func (x *Information) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[16] + mi := &file_api_approval_approval_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1035,7 +1122,7 @@ func (x *Information) ProtoReflect() protoreflect.Message { // Deprecated: Use Information.ProtoReflect.Descriptor instead. func (*Information) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{16} + return file_api_approval_approval_proto_rawDescGZIP(), []int{17} } func (x *Information) GetTotal() uint64 { @@ -1079,7 +1166,7 @@ type InformationResponse struct { func (x *InformationResponse) Reset() { *x = InformationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[17] + mi := &file_api_approval_approval_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1092,7 +1179,7 @@ func (x *InformationResponse) String() string { func (*InformationResponse) ProtoMessage() {} func (x *InformationResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[17] + mi := &file_api_approval_approval_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1105,7 +1192,7 @@ func (x *InformationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InformationResponse.ProtoReflect.Descriptor instead. func (*InformationResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{17} + return file_api_approval_approval_proto_rawDescGZIP(), []int{18} } func (x *InformationResponse) GetMySubmitInfo() *Information { @@ -1143,7 +1230,7 @@ type Bundle struct { func (x *Bundle) Reset() { *x = Bundle{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[18] + mi := &file_api_approval_approval_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1156,7 +1243,7 @@ func (x *Bundle) String() string { func (*Bundle) ProtoMessage() {} func (x *Bundle) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[18] + mi := &file_api_approval_approval_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1169,7 +1256,7 @@ func (x *Bundle) ProtoReflect() protoreflect.Message { // Deprecated: Use Bundle.ProtoReflect.Descriptor instead. func (*Bundle) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{18} + return file_api_approval_approval_proto_rawDescGZIP(), []int{19} } func (x *Bundle) GetID() uint64 { @@ -1213,7 +1300,7 @@ type Show struct { func (x *Show) Reset() { *x = Show{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[19] + mi := &file_api_approval_approval_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1226,7 +1313,7 @@ func (x *Show) String() string { func (*Show) ProtoMessage() {} func (x *Show) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[19] + mi := &file_api_approval_approval_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1239,7 +1326,7 @@ func (x *Show) ProtoReflect() protoreflect.Message { // Deprecated: Use Show.ProtoReflect.Descriptor instead. func (*Show) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{19} + return file_api_approval_approval_proto_rawDescGZIP(), []int{20} } func (x *Show) GetID() uint64 { @@ -1281,7 +1368,7 @@ type ApprovalWork struct { func (x *ApprovalWork) Reset() { *x = ApprovalWork{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[20] + mi := &file_api_approval_approval_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1294,7 +1381,7 @@ func (x *ApprovalWork) String() string { func (*ApprovalWork) ProtoMessage() {} func (x *ApprovalWork) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[20] + mi := &file_api_approval_approval_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1307,7 +1394,7 @@ func (x *ApprovalWork) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalWork.ProtoReflect.Descriptor instead. func (*ApprovalWork) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{20} + return file_api_approval_approval_proto_rawDescGZIP(), []int{21} } func (x *ApprovalWork) GetID() uint64 { @@ -1380,7 +1467,7 @@ type Work struct { func (x *Work) Reset() { *x = Work{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[21] + mi := &file_api_approval_approval_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1393,7 +1480,7 @@ func (x *Work) String() string { func (*Work) ProtoMessage() {} func (x *Work) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[21] + mi := &file_api_approval_approval_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1406,7 +1493,7 @@ func (x *Work) ProtoReflect() protoreflect.Message { // Deprecated: Use Work.ProtoReflect.Descriptor instead. func (*Work) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{21} + return file_api_approval_approval_proto_rawDescGZIP(), []int{22} } func (x *Work) GetID() uint64 { @@ -1446,16 +1533,17 @@ type ApprovalExhibition struct { ExhibitionID uint64 `protobuf:"varint,2,opt,name=ExhibitionID,json=exhibitionID,proto3" json:"ExhibitionID,omitempty"` ApprovalID uint64 `protobuf:"varint,3,opt,name=ApprovalID,json=approvalID,proto3" json:"ApprovalID,omitempty"` PackageName string `protobuf:"bytes,4,opt,name=PackageName,json=packageName,proto3" json:"PackageName,omitempty"` - PackageID uint64 `protobuf:"varint,5,opt,name=PackageID,json=packageID,proto3" json:"PackageID,omitempty"` + PackageID string `protobuf:"bytes,5,opt,name=PackageID,json=packageID,proto3" json:"PackageID,omitempty"` PackageSize uint64 `protobuf:"varint,6,opt,name=PackageSize,json=packageSize,proto3" json:"PackageSize,omitempty"` PackageNumber string `protobuf:"bytes,7,opt,name=PackageNumber,json=packageNumber,proto3" json:"PackageNumber,omitempty"` Address string `protobuf:"bytes,8,opt,name=Address,json=address,proto3" json:"Address,omitempty"` + ShowDate string `protobuf:"bytes,9,opt,name=ShowDate,json=showDate,proto3" json:"ShowDate,omitempty"` } func (x *ApprovalExhibition) Reset() { *x = ApprovalExhibition{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[22] + mi := &file_api_approval_approval_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1468,7 +1556,7 @@ func (x *ApprovalExhibition) String() string { func (*ApprovalExhibition) ProtoMessage() {} func (x *ApprovalExhibition) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[22] + mi := &file_api_approval_approval_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1481,7 +1569,7 @@ func (x *ApprovalExhibition) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalExhibition.ProtoReflect.Descriptor instead. func (*ApprovalExhibition) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{22} + return file_api_approval_approval_proto_rawDescGZIP(), []int{23} } func (x *ApprovalExhibition) GetID() uint64 { @@ -1512,11 +1600,11 @@ func (x *ApprovalExhibition) GetPackageName() string { return "" } -func (x *ApprovalExhibition) GetPackageID() uint64 { +func (x *ApprovalExhibition) GetPackageID() string { if x != nil { return x.PackageID } - return 0 + return "" } func (x *ApprovalExhibition) GetPackageSize() uint64 { @@ -1540,6 +1628,13 @@ func (x *ApprovalExhibition) GetAddress() string { return "" } +func (x *ApprovalExhibition) GetShowDate() string { + if x != nil { + return x.ShowDate + } + return "" +} + type Exhibition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1551,13 +1646,13 @@ type Exhibition struct { PidApprovalID uint64 `protobuf:"varint,4,opt,name=PidApprovalID,json=pidApprovalID,proto3" json:"PidApprovalID,omitempty"` ApprovalExhibitions []*ApprovalExhibition `protobuf:"bytes,5,rep,name=ApprovalExhibitions,json=approvalExhibitions,proto3" json:"ApprovalExhibitions,omitempty"` Num uint64 `protobuf:"varint,6,opt,name=Num,json=num,proto3" json:"Num,omitempty"` - ApplyID uint64 `protobuf:"varint,7,opt,name=ApplyID,json=applyID,proto3" json:"ApplyID,omitempty"` + ApplyID string `protobuf:"bytes,7,opt,name=ApplyID,json=applyID,proto3" json:"ApplyID,omitempty"` } func (x *Exhibition) Reset() { *x = Exhibition{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[23] + mi := &file_api_approval_approval_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1665,7 @@ func (x *Exhibition) String() string { func (*Exhibition) ProtoMessage() {} func (x *Exhibition) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[23] + mi := &file_api_approval_approval_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1678,7 @@ func (x *Exhibition) ProtoReflect() protoreflect.Message { // Deprecated: Use Exhibition.ProtoReflect.Descriptor instead. func (*Exhibition) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{23} + return file_api_approval_approval_proto_rawDescGZIP(), []int{24} } func (x *Exhibition) GetID() uint64 { @@ -1628,11 +1723,11 @@ func (x *Exhibition) GetNum() uint64 { return 0 } -func (x *Exhibition) GetApplyID() uint64 { +func (x *Exhibition) GetApplyID() string { if x != nil { return x.ApplyID } - return 0 + return "" } type CreateRequest struct { @@ -1663,12 +1758,14 @@ type CreateRequest struct { Level uint64 `protobuf:"varint,23,opt,name=Level,json=level,proto3" json:"Level,omitempty"` NowLevel uint64 `protobuf:"varint,24,opt,name=NowLevel,json=nowLevel,proto3" json:"NowLevel,omitempty"` CreatedAt string `protobuf:"bytes,25,opt,name=CreatedAt,json=createdAt,proto3" json:"CreatedAt,omitempty"` + CustomizeInfo []*KeyInfo `protobuf:"bytes,26,rep,name=CustomizeInfo,json=customizeInfo,proto3" json:"CustomizeInfo,omitempty"` + IsCustom uint64 `protobuf:"varint,27,opt,name=IsCustom,json=isCustom,proto3" json:"IsCustom,omitempty"` } func (x *CreateRequest) Reset() { *x = CreateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[24] + mi := &file_api_approval_approval_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1681,7 +1778,7 @@ func (x *CreateRequest) String() string { func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[24] + mi := &file_api_approval_approval_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1694,7 +1791,7 @@ func (x *CreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{24} + return file_api_approval_approval_proto_rawDescGZIP(), []int{25} } func (x *CreateRequest) GetID() uint64 { @@ -1858,6 +1955,20 @@ func (x *CreateRequest) GetCreatedAt() string { return "" } +func (x *CreateRequest) GetCustomizeInfo() []*KeyInfo { + if x != nil { + return x.CustomizeInfo + } + return nil +} + +func (x *CreateRequest) GetIsCustom() uint64 { + if x != nil { + return x.IsCustom + } + return 0 +} + type WorkFlow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1875,7 +1986,7 @@ type WorkFlow struct { func (x *WorkFlow) Reset() { *x = WorkFlow{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[25] + mi := &file_api_approval_approval_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1888,7 +1999,7 @@ func (x *WorkFlow) String() string { func (*WorkFlow) ProtoMessage() {} func (x *WorkFlow) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[25] + mi := &file_api_approval_approval_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1901,7 +2012,7 @@ func (x *WorkFlow) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkFlow.ProtoReflect.Descriptor instead. func (*WorkFlow) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{25} + return file_api_approval_approval_proto_rawDescGZIP(), []int{26} } func (x *WorkFlow) GetID() uint64 { @@ -1966,7 +2077,7 @@ type DetailRequest struct { func (x *DetailRequest) Reset() { *x = DetailRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[26] + mi := &file_api_approval_approval_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1979,7 +2090,7 @@ func (x *DetailRequest) String() string { func (*DetailRequest) ProtoMessage() {} func (x *DetailRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[26] + mi := &file_api_approval_approval_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1992,7 +2103,7 @@ func (x *DetailRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DetailRequest.ProtoReflect.Descriptor instead. func (*DetailRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{26} + return file_api_approval_approval_proto_rawDescGZIP(), []int{27} } func (x *DetailRequest) GetID() uint64 { @@ -2028,7 +2139,7 @@ type RemoveRequest struct { func (x *RemoveRequest) Reset() { *x = RemoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[27] + mi := &file_api_approval_approval_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2041,7 +2152,7 @@ func (x *RemoveRequest) String() string { func (*RemoveRequest) ProtoMessage() {} func (x *RemoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[27] + mi := &file_api_approval_approval_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2054,7 +2165,7 @@ func (x *RemoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRequest.ProtoReflect.Descriptor instead. func (*RemoveRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{27} + return file_api_approval_approval_proto_rawDescGZIP(), []int{28} } func (x *RemoveRequest) GetIDs() []uint64 { @@ -2083,7 +2194,7 @@ type ApprovalResponse struct { func (x *ApprovalResponse) Reset() { *x = ApprovalResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[28] + mi := &file_api_approval_approval_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2096,7 +2207,7 @@ func (x *ApprovalResponse) String() string { func (*ApprovalResponse) ProtoMessage() {} func (x *ApprovalResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[28] + mi := &file_api_approval_approval_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2109,7 +2220,7 @@ func (x *ApprovalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalResponse.ProtoReflect.Descriptor instead. func (*ApprovalResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{28} + return file_api_approval_approval_proto_rawDescGZIP(), []int{29} } func (x *ApprovalResponse) GetID() uint64 { @@ -2137,7 +2248,7 @@ type RemoveResponse struct { func (x *RemoveResponse) Reset() { *x = RemoveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[29] + mi := &file_api_approval_approval_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2150,7 +2261,7 @@ func (x *RemoveResponse) String() string { func (*RemoveResponse) ProtoMessage() {} func (x *RemoveResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[29] + mi := &file_api_approval_approval_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2163,7 +2274,7 @@ func (x *RemoveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveResponse.ProtoReflect.Descriptor instead. func (*RemoveResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{29} + return file_api_approval_approval_proto_rawDescGZIP(), []int{30} } func (x *RemoveResponse) GetSuccess() bool { @@ -2184,7 +2295,7 @@ type ApprovalExhibitionRemove struct { func (x *ApprovalExhibitionRemove) Reset() { *x = ApprovalExhibitionRemove{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[30] + mi := &file_api_approval_approval_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2197,7 +2308,7 @@ func (x *ApprovalExhibitionRemove) String() string { func (*ApprovalExhibitionRemove) ProtoMessage() {} func (x *ApprovalExhibitionRemove) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[30] + mi := &file_api_approval_approval_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2210,7 +2321,7 @@ func (x *ApprovalExhibitionRemove) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalExhibitionRemove.ProtoReflect.Descriptor instead. func (*ApprovalExhibitionRemove) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{30} + return file_api_approval_approval_proto_rawDescGZIP(), []int{31} } func (x *ApprovalExhibitionRemove) GetSuccess() bool { @@ -2240,7 +2351,7 @@ type ApprovalExhibitionRequest struct { func (x *ApprovalExhibitionRequest) Reset() { *x = ApprovalExhibitionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[31] + mi := &file_api_approval_approval_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2253,7 +2364,7 @@ func (x *ApprovalExhibitionRequest) String() string { func (*ApprovalExhibitionRequest) ProtoMessage() {} func (x *ApprovalExhibitionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[31] + mi := &file_api_approval_approval_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2266,7 +2377,7 @@ func (x *ApprovalExhibitionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalExhibitionRequest.ProtoReflect.Descriptor instead. func (*ApprovalExhibitionRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{31} + return file_api_approval_approval_proto_rawDescGZIP(), []int{32} } func (x *ApprovalExhibitionRequest) GetID() uint64 { @@ -2351,7 +2462,7 @@ type ApprovalExhibitionDetail struct { func (x *ApprovalExhibitionDetail) Reset() { *x = ApprovalExhibitionDetail{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[32] + mi := &file_api_approval_approval_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2364,7 +2475,7 @@ func (x *ApprovalExhibitionDetail) String() string { func (*ApprovalExhibitionDetail) ProtoMessage() {} func (x *ApprovalExhibitionDetail) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[32] + mi := &file_api_approval_approval_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2377,7 +2488,7 @@ func (x *ApprovalExhibitionDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalExhibitionDetail.ProtoReflect.Descriptor instead. func (*ApprovalExhibitionDetail) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{32} + return file_api_approval_approval_proto_rawDescGZIP(), []int{33} } func (x *ApprovalExhibitionDetail) GetID() uint64 { @@ -2407,7 +2518,7 @@ type CopyUser struct { func (x *CopyUser) Reset() { *x = CopyUser{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[33] + mi := &file_api_approval_approval_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2420,7 +2531,7 @@ func (x *CopyUser) String() string { func (*CopyUser) ProtoMessage() {} func (x *CopyUser) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[33] + mi := &file_api_approval_approval_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2433,7 +2544,7 @@ func (x *CopyUser) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyUser.ProtoReflect.Descriptor instead. func (*CopyUser) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{33} + return file_api_approval_approval_proto_rawDescGZIP(), []int{34} } func (x *CopyUser) GetID() uint64 { @@ -2470,7 +2581,7 @@ type ApprovalUser struct { func (x *ApprovalUser) Reset() { *x = ApprovalUser{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[34] + mi := &file_api_approval_approval_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2483,7 +2594,7 @@ func (x *ApprovalUser) String() string { func (*ApprovalUser) ProtoMessage() {} func (x *ApprovalUser) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[34] + mi := &file_api_approval_approval_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2496,7 +2607,7 @@ func (x *ApprovalUser) ProtoReflect() protoreflect.Message { // Deprecated: Use ApprovalUser.ProtoReflect.Descriptor instead. func (*ApprovalUser) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{34} + return file_api_approval_approval_proto_rawDescGZIP(), []int{35} } func (x *ApprovalUser) GetID() uint64 { @@ -2533,12 +2644,14 @@ type SettingRequest struct { CopyUsers []*CopyUser `protobuf:"bytes,6,rep,name=CopyUsers,json=copyUsers,proto3" json:"CopyUsers,omitempty"` ApprovalUsers []*ApprovalUser `protobuf:"bytes,9,rep,name=ApprovalUsers,json=approvalUsers,proto3" json:"ApprovalUsers,omitempty"` Domain string `protobuf:"bytes,10,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` + CustomizeInfo []*KeyInfo `protobuf:"bytes,11,rep,name=CustomizeInfo,json=customizeInfo,proto3" json:"CustomizeInfo,omitempty"` + IsCustom uint64 `protobuf:"varint,12,opt,name=IsCustom,json=isCustom,proto3" json:"IsCustom,omitempty"` } func (x *SettingRequest) Reset() { *x = SettingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[35] + mi := &file_api_approval_approval_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2551,7 +2664,7 @@ func (x *SettingRequest) String() string { func (*SettingRequest) ProtoMessage() {} func (x *SettingRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[35] + mi := &file_api_approval_approval_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2564,7 +2677,7 @@ func (x *SettingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingRequest.ProtoReflect.Descriptor instead. func (*SettingRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{35} + return file_api_approval_approval_proto_rawDescGZIP(), []int{36} } func (x *SettingRequest) GetID() uint64 { @@ -2623,6 +2736,20 @@ func (x *SettingRequest) GetDomain() string { return "" } +func (x *SettingRequest) GetCustomizeInfo() []*KeyInfo { + if x != nil { + return x.CustomizeInfo + } + return nil +} + +func (x *SettingRequest) GetIsCustom() uint64 { + if x != nil { + return x.IsCustom + } + return 0 +} + type DetailSettingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2635,7 +2762,7 @@ type DetailSettingRequest struct { func (x *DetailSettingRequest) Reset() { *x = DetailSettingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[36] + mi := &file_api_approval_approval_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2648,7 +2775,7 @@ func (x *DetailSettingRequest) String() string { func (*DetailSettingRequest) ProtoMessage() {} func (x *DetailSettingRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[36] + mi := &file_api_approval_approval_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2661,7 +2788,7 @@ func (x *DetailSettingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DetailSettingRequest.ProtoReflect.Descriptor instead. func (*DetailSettingRequest) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{36} + return file_api_approval_approval_proto_rawDescGZIP(), []int{37} } func (x *DetailSettingRequest) GetKeyWord() string { @@ -2690,7 +2817,7 @@ type SettingResponse struct { func (x *SettingResponse) Reset() { *x = SettingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_approval_approval_proto_msgTypes[37] + mi := &file_api_approval_approval_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2703,7 +2830,7 @@ func (x *SettingResponse) String() string { func (*SettingResponse) ProtoMessage() {} func (x *SettingResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_approval_approval_proto_msgTypes[37] + mi := &file_api_approval_approval_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2716,7 +2843,7 @@ func (x *SettingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SettingResponse.ProtoReflect.Descriptor instead. func (*SettingResponse) Descriptor() ([]byte, []int) { - return file_api_approval_approval_proto_rawDescGZIP(), []int{37} + return file_api_approval_approval_proto_rawDescGZIP(), []int{38} } func (x *SettingResponse) GetID() uint64 { @@ -2742,416 +2869,443 @@ var file_api_approval_approval_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x6a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, - 0x44, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x55, + 0x99, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, + 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x64, 0x4e, 0x75, - 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x64, - 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x4f, 0x0a, 0x15, 0x4e, 0x6f, 0x77, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x42, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x22, 0x68, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, - 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x22, 0x57, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x50, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x11, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x57, 0x6f, - 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, - 0x64, 0x22, 0x36, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x0f, 0x41, 0x6c, 0x6c, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, - 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, - 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x0f, 0xe2, 0xdf, 0x1f, 0x0b, 0x10, 0x00, 0x18, 0x04, 0x2a, 0x05, 0x37, - 0x30, 0x30, 0x30, 0x38, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, - 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x50, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, - 0x51, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x4f, 0x0a, 0x0d, 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, - 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x6f, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x61, 0x69, 0x6c, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xc2, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, - 0x0c, 0x4d, 0x79, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x79, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x4d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x0a, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7e, 0x0a, 0x06, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x75, 0x6d, 0x22, 0x4c, 0x0a, 0x04, 0x53, 0x68, - 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x0c, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x6f, 0x72, - 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x49, - 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, - 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, - 0x20, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x76, 0x65, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x61, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x90, 0x01, 0x0a, 0x04, - 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x8a, - 0x02, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x78, 0x68, - 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xf8, 0x01, 0x0a, 0x0a, - 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x69, 0x64, 0x41, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x69, 0x64, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x4e, 0x0a, 0x13, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, - 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, - 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x22, 0xac, 0x06, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, - 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, - 0x30, 0x39, 0x58, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6f, 0x70, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, - 0x04, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x04, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x22, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, - 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x34, 0x0a, 0x0a, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, - 0x77, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x77, 0x6f, - 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x6c, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x6f, 0x77, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x6f, 0x77, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x77, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x77, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, - 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, - 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xaa, 0x01, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, - 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x18, 0x0a, + 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x50, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, + 0x65, 0x72, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, + 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0x4f, 0x0a, 0x15, 0x4e, 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x49, 0x44, 0x22, 0x68, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x57, + 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, + 0x08, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x69, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x36, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x22, 0x58, 0x0a, 0x0f, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x6f, + 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0f, 0xe2, 0xdf, 0x1f, 0x0b, + 0x10, 0x00, 0x18, 0x04, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x38, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, + 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x50, 0x61, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x51, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4f, 0x0a, 0x0d, 0x56, 0x69, 0x65, + 0x77, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x4f, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x03, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3c, - 0x0a, 0x10, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x2a, 0x0a, 0x0e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x34, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xe3, - 0x02, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x78, - 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, - 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, - 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x78, 0x68, 0x69, - 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x6f, + 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1c, + 0x0a, 0x09, 0x46, 0x61, 0x69, 0x6c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xc2, 0x01, 0x0a, + 0x13, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x4d, 0x79, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0c, 0x6d, 0x79, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x39, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x0a, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x7e, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x75, + 0x6d, 0x22, 0x4c, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x41, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x74, 0x22, + 0x80, 0x02, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, - 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x4a, 0x0a, 0x08, 0x43, 0x6f, 0x70, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x65, 0x64, 0x22, 0x48, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x9c, - 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, - 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4b, - 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, - 0x79, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, - 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x12, 0x16, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0d, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x22, 0x90, 0x01, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x48, 0x0a, - 0x14, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3b, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, + 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xa6, 0x02, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, + 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0c, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, + 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x44, + 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x65, 0x22, 0xf8, + 0x01, 0x0a, 0x0a, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1e, 0x0a, + 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x69, 0x64, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, + 0x70, 0x69, 0x64, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x4e, 0x0a, + 0x13, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, + 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, + 0x18, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x22, 0x81, 0x07, 0x0a, 0x0d, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x06, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, + 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, + 0x37, 0x30, 0x30, 0x30, 0x39, 0x58, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6f, + 0x70, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x56, 0x69, 0x65, + 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, + 0x12, 0x22, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x04, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x34, 0x0a, 0x0a, 0x45, 0x78, 0x68, 0x69, + 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, + 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, + 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x6c, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, + 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x6f, 0x77, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x6f, 0x77, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x77, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x77, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x6e, 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x69, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0xaa, 0x01, + 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4f, 0x0a, 0x0d, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x0d, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x49, 0x44, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3c, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x32, 0xc1, 0x0a, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, - 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, - 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, - 0x44, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x06, 0x4d, 0x79, 0x57, 0x6f, 0x72, 0x6b, - 0x12, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x3b, 0x0a, 0x08, 0x4d, 0x79, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x2e, + 0x63, 0x65, 0x73, 0x73, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x22, 0x34, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, + 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x22, + 0x0a, 0x0c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x68, 0x69, + 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, 0x68, 0x69, + 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x68, 0x69, + 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x18, + 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x45, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x22, 0x4a, 0x0a, 0x08, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x22, 0x48, 0x0a, 0x0c, + 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xf1, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, + 0x09, 0x43, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x70, 0x79, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x3c, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0d, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x37, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, + 0x0a, 0x08, 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x69, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x48, 0x0a, 0x14, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3b, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x32, 0xc1, 0x0a, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x3f, + 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x52, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x64, + 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x64, + 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x68, + 0x69, 0x62, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x12, 0x20, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x45, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x17, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x06, 0x4d, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, - 0x0a, 0x0e, 0x4e, 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x79, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4e, 0x6f, 0x77, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x42, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4c, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, - 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x06, 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, - 0x0a, 0x09, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, 0x46, 0x0a, - 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, + 0x0a, 0x08, 0x4d, 0x79, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x4e, + 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x4e, 0x6f, 0x77, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x42, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, + 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x56, 0x69, + 0x65, 0x77, 0x65, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, + 0x56, 0x69, 0x65, 0x77, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, + 0x0d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, + 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, - 0x43, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x2e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x2e, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x2e, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x2e, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x2e, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3166,107 +3320,111 @@ func file_api_approval_approval_proto_rawDescGZIP() []byte { return file_api_approval_approval_proto_rawDescData } -var file_api_approval_approval_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_api_approval_approval_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_api_approval_approval_proto_goTypes = []interface{}{ - (*UpdateEhApplyIDRequest)(nil), // 0: approval.UpdateEhApplyIDRequest - (*UpdateEhApplyIDResponse)(nil), // 1: approval.UpdateEhApplyIDResponse - (*UsedNumByUserRequest)(nil), // 2: approval.UsedNumByUserRequest - (*UsedNumByUserResponse)(nil), // 3: approval.UsedNumByUserResponse - (*NowLevelByInfoRequest)(nil), // 4: approval.NowLevelByInfoRequest - (*WorkFlowResponse)(nil), // 5: approval.WorkFlowResponse - (*CommonRequest)(nil), // 6: approval.CommonRequest - (*CreateTypeRequest)(nil), // 7: approval.CreateTypeRequest - (*TypeResponse)(nil), // 8: approval.TypeResponse - (*AllTypeResponse)(nil), // 9: approval.AllTypeResponse - (*StatusRequest)(nil), // 10: approval.StatusRequest - (*StatusResponse)(nil), // 11: approval.StatusResponse - (*ListRequest)(nil), // 12: approval.ListRequest - (*ListResponse)(nil), // 13: approval.ListResponse - (*ViewedRequest)(nil), // 14: approval.ViewedRequest - (*InformationRequest)(nil), // 15: approval.InformationRequest - (*Information)(nil), // 16: approval.Information - (*InformationResponse)(nil), // 17: approval.InformationResponse - (*Bundle)(nil), // 18: approval.Bundle - (*Show)(nil), // 19: approval.Show - (*ApprovalWork)(nil), // 20: approval.ApprovalWork - (*Work)(nil), // 21: approval.Work - (*ApprovalExhibition)(nil), // 22: approval.ApprovalExhibition - (*Exhibition)(nil), // 23: approval.Exhibition - (*CreateRequest)(nil), // 24: approval.CreateRequest - (*WorkFlow)(nil), // 25: approval.WorkFlow - (*DetailRequest)(nil), // 26: approval.DetailRequest - (*RemoveRequest)(nil), // 27: approval.RemoveRequest - (*ApprovalResponse)(nil), // 28: approval.ApprovalResponse - (*RemoveResponse)(nil), // 29: approval.RemoveResponse - (*ApprovalExhibitionRemove)(nil), // 30: approval.ApprovalExhibitionRemove - (*ApprovalExhibitionRequest)(nil), // 31: approval.ApprovalExhibitionRequest - (*ApprovalExhibitionDetail)(nil), // 32: approval.ApprovalExhibitionDetail - (*CopyUser)(nil), // 33: approval.CopyUser - (*ApprovalUser)(nil), // 34: approval.ApprovalUser - (*SettingRequest)(nil), // 35: approval.SettingRequest - (*DetailSettingRequest)(nil), // 36: approval.DetailSettingRequest - (*SettingResponse)(nil), // 37: approval.SettingResponse + (*KeyInfo)(nil), // 0: approval.KeyInfo + (*UpdateEhApplyIDRequest)(nil), // 1: approval.UpdateEhApplyIDRequest + (*UpdateEhApplyIDResponse)(nil), // 2: approval.UpdateEhApplyIDResponse + (*UsedNumByUserRequest)(nil), // 3: approval.UsedNumByUserRequest + (*UsedNumByUserResponse)(nil), // 4: approval.UsedNumByUserResponse + (*NowLevelByInfoRequest)(nil), // 5: approval.NowLevelByInfoRequest + (*WorkFlowResponse)(nil), // 6: approval.WorkFlowResponse + (*CommonRequest)(nil), // 7: approval.CommonRequest + (*CreateTypeRequest)(nil), // 8: approval.CreateTypeRequest + (*TypeResponse)(nil), // 9: approval.TypeResponse + (*AllTypeResponse)(nil), // 10: approval.AllTypeResponse + (*StatusRequest)(nil), // 11: approval.StatusRequest + (*StatusResponse)(nil), // 12: approval.StatusResponse + (*ListRequest)(nil), // 13: approval.ListRequest + (*ListResponse)(nil), // 14: approval.ListResponse + (*ViewedRequest)(nil), // 15: approval.ViewedRequest + (*InformationRequest)(nil), // 16: approval.InformationRequest + (*Information)(nil), // 17: approval.Information + (*InformationResponse)(nil), // 18: approval.InformationResponse + (*Bundle)(nil), // 19: approval.Bundle + (*Show)(nil), // 20: approval.Show + (*ApprovalWork)(nil), // 21: approval.ApprovalWork + (*Work)(nil), // 22: approval.Work + (*ApprovalExhibition)(nil), // 23: approval.ApprovalExhibition + (*Exhibition)(nil), // 24: approval.Exhibition + (*CreateRequest)(nil), // 25: approval.CreateRequest + (*WorkFlow)(nil), // 26: approval.WorkFlow + (*DetailRequest)(nil), // 27: approval.DetailRequest + (*RemoveRequest)(nil), // 28: approval.RemoveRequest + (*ApprovalResponse)(nil), // 29: approval.ApprovalResponse + (*RemoveResponse)(nil), // 30: approval.RemoveResponse + (*ApprovalExhibitionRemove)(nil), // 31: approval.ApprovalExhibitionRemove + (*ApprovalExhibitionRequest)(nil), // 32: approval.ApprovalExhibitionRequest + (*ApprovalExhibitionDetail)(nil), // 33: approval.ApprovalExhibitionDetail + (*CopyUser)(nil), // 34: approval.CopyUser + (*ApprovalUser)(nil), // 35: approval.ApprovalUser + (*SettingRequest)(nil), // 36: approval.SettingRequest + (*DetailSettingRequest)(nil), // 37: approval.DetailSettingRequest + (*SettingResponse)(nil), // 38: approval.SettingResponse } var file_api_approval_approval_proto_depIdxs = []int32{ - 7, // 0: approval.AllTypeResponse.Data:type_name -> approval.CreateTypeRequest - 24, // 1: approval.ListResponse.data:type_name -> approval.CreateRequest - 16, // 2: approval.InformationResponse.MySubmitInfo:type_name -> approval.Information - 16, // 3: approval.InformationResponse.SubmitMeInfo:type_name -> approval.Information - 16, // 4: approval.InformationResponse.DomainInfo:type_name -> approval.Information - 20, // 5: approval.Work.ApprovalWorks:type_name -> approval.ApprovalWork - 22, // 6: approval.Exhibition.ApprovalExhibitions:type_name -> approval.ApprovalExhibition - 33, // 7: approval.CreateRequest.CopyUsers:type_name -> approval.CopyUser - 21, // 8: approval.CreateRequest.Work:type_name -> approval.Work - 19, // 9: approval.CreateRequest.Show:type_name -> approval.Show - 23, // 10: approval.CreateRequest.Exhibition:type_name -> approval.Exhibition - 18, // 11: approval.CreateRequest.Bundle:type_name -> approval.Bundle - 34, // 12: approval.CreateRequest.ApprovalUsers:type_name -> approval.ApprovalUser - 25, // 13: approval.CreateRequest.WorkFlows:type_name -> approval.WorkFlow - 33, // 14: approval.SettingRequest.CopyUsers:type_name -> approval.CopyUser - 34, // 15: approval.SettingRequest.ApprovalUsers:type_name -> approval.ApprovalUser - 24, // 16: approval.Approval.Create:input_type -> approval.CreateRequest - 2, // 17: approval.Approval.UsedNumByUser:input_type -> approval.UsedNumByUserRequest - 0, // 18: approval.Approval.UpdateExhibitionApplyID:input_type -> approval.UpdateEhApplyIDRequest - 26, // 19: approval.Approval.Detail:input_type -> approval.DetailRequest - 24, // 20: approval.Approval.Update:input_type -> approval.CreateRequest - 27, // 21: approval.Approval.Remove:input_type -> approval.RemoveRequest - 12, // 22: approval.Approval.MyWork:input_type -> approval.ListRequest - 12, // 23: approval.Approval.MySubmit:input_type -> approval.ListRequest - 4, // 24: approval.Approval.NowLevelByInfo:input_type -> approval.NowLevelByInfoRequest - 15, // 25: approval.Approval.Information:input_type -> approval.InformationRequest - 14, // 26: approval.Approval.Viewed:input_type -> approval.ViewedRequest - 10, // 27: approval.Approval.SetStatus:input_type -> approval.StatusRequest - 36, // 28: approval.Approval.DetailSetting:input_type -> approval.DetailSettingRequest - 35, // 29: approval.Approval.UpdateSetting:input_type -> approval.SettingRequest - 7, // 30: approval.Approval.CreateType:input_type -> approval.CreateTypeRequest - 8, // 31: approval.Approval.DetailType:input_type -> approval.TypeResponse - 7, // 32: approval.Approval.UpdateType:input_type -> approval.CreateTypeRequest - 6, // 33: approval.Approval.AllType:input_type -> approval.CommonRequest - 27, // 34: approval.Approval.RemoveType:input_type -> approval.RemoveRequest - 28, // 35: approval.Approval.Create:output_type -> approval.ApprovalResponse - 3, // 36: approval.Approval.UsedNumByUser:output_type -> approval.UsedNumByUserResponse - 1, // 37: approval.Approval.UpdateExhibitionApplyID:output_type -> approval.UpdateEhApplyIDResponse - 24, // 38: approval.Approval.Detail:output_type -> approval.CreateRequest - 28, // 39: approval.Approval.Update:output_type -> approval.ApprovalResponse - 29, // 40: approval.Approval.Remove:output_type -> approval.RemoveResponse - 13, // 41: approval.Approval.MyWork:output_type -> approval.ListResponse - 13, // 42: approval.Approval.MySubmit:output_type -> approval.ListResponse - 5, // 43: approval.Approval.NowLevelByInfo:output_type -> approval.WorkFlowResponse - 17, // 44: approval.Approval.Information:output_type -> approval.InformationResponse - 28, // 45: approval.Approval.Viewed:output_type -> approval.ApprovalResponse - 11, // 46: approval.Approval.SetStatus:output_type -> approval.StatusResponse - 35, // 47: approval.Approval.DetailSetting:output_type -> approval.SettingRequest - 37, // 48: approval.Approval.UpdateSetting:output_type -> approval.SettingResponse - 8, // 49: approval.Approval.CreateType:output_type -> approval.TypeResponse - 7, // 50: approval.Approval.DetailType:output_type -> approval.CreateTypeRequest - 8, // 51: approval.Approval.UpdateType:output_type -> approval.TypeResponse - 9, // 52: approval.Approval.AllType:output_type -> approval.AllTypeResponse - 11, // 53: approval.Approval.RemoveType:output_type -> approval.StatusResponse - 35, // [35:54] is the sub-list for method output_type - 16, // [16:35] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 0, // 0: approval.CreateTypeRequest.KeyInfos:type_name -> approval.KeyInfo + 8, // 1: approval.AllTypeResponse.Data:type_name -> approval.CreateTypeRequest + 25, // 2: approval.ListResponse.data:type_name -> approval.CreateRequest + 17, // 3: approval.InformationResponse.MySubmitInfo:type_name -> approval.Information + 17, // 4: approval.InformationResponse.SubmitMeInfo:type_name -> approval.Information + 17, // 5: approval.InformationResponse.DomainInfo:type_name -> approval.Information + 21, // 6: approval.Work.ApprovalWorks:type_name -> approval.ApprovalWork + 23, // 7: approval.Exhibition.ApprovalExhibitions:type_name -> approval.ApprovalExhibition + 34, // 8: approval.CreateRequest.CopyUsers:type_name -> approval.CopyUser + 22, // 9: approval.CreateRequest.Work:type_name -> approval.Work + 20, // 10: approval.CreateRequest.Show:type_name -> approval.Show + 24, // 11: approval.CreateRequest.Exhibition:type_name -> approval.Exhibition + 19, // 12: approval.CreateRequest.Bundle:type_name -> approval.Bundle + 35, // 13: approval.CreateRequest.ApprovalUsers:type_name -> approval.ApprovalUser + 26, // 14: approval.CreateRequest.WorkFlows:type_name -> approval.WorkFlow + 0, // 15: approval.CreateRequest.CustomizeInfo:type_name -> approval.KeyInfo + 34, // 16: approval.SettingRequest.CopyUsers:type_name -> approval.CopyUser + 35, // 17: approval.SettingRequest.ApprovalUsers:type_name -> approval.ApprovalUser + 0, // 18: approval.SettingRequest.CustomizeInfo:type_name -> approval.KeyInfo + 25, // 19: approval.Approval.Create:input_type -> approval.CreateRequest + 3, // 20: approval.Approval.UsedNumByUser:input_type -> approval.UsedNumByUserRequest + 1, // 21: approval.Approval.UpdateExhibitionApplyID:input_type -> approval.UpdateEhApplyIDRequest + 27, // 22: approval.Approval.Detail:input_type -> approval.DetailRequest + 25, // 23: approval.Approval.Update:input_type -> approval.CreateRequest + 28, // 24: approval.Approval.Remove:input_type -> approval.RemoveRequest + 13, // 25: approval.Approval.MyWork:input_type -> approval.ListRequest + 13, // 26: approval.Approval.MySubmit:input_type -> approval.ListRequest + 5, // 27: approval.Approval.NowLevelByInfo:input_type -> approval.NowLevelByInfoRequest + 16, // 28: approval.Approval.Information:input_type -> approval.InformationRequest + 15, // 29: approval.Approval.Viewed:input_type -> approval.ViewedRequest + 11, // 30: approval.Approval.SetStatus:input_type -> approval.StatusRequest + 37, // 31: approval.Approval.DetailSetting:input_type -> approval.DetailSettingRequest + 36, // 32: approval.Approval.UpdateSetting:input_type -> approval.SettingRequest + 8, // 33: approval.Approval.CreateType:input_type -> approval.CreateTypeRequest + 9, // 34: approval.Approval.DetailType:input_type -> approval.TypeResponse + 8, // 35: approval.Approval.UpdateType:input_type -> approval.CreateTypeRequest + 7, // 36: approval.Approval.AllType:input_type -> approval.CommonRequest + 28, // 37: approval.Approval.RemoveType:input_type -> approval.RemoveRequest + 29, // 38: approval.Approval.Create:output_type -> approval.ApprovalResponse + 4, // 39: approval.Approval.UsedNumByUser:output_type -> approval.UsedNumByUserResponse + 2, // 40: approval.Approval.UpdateExhibitionApplyID:output_type -> approval.UpdateEhApplyIDResponse + 25, // 41: approval.Approval.Detail:output_type -> approval.CreateRequest + 29, // 42: approval.Approval.Update:output_type -> approval.ApprovalResponse + 30, // 43: approval.Approval.Remove:output_type -> approval.RemoveResponse + 14, // 44: approval.Approval.MyWork:output_type -> approval.ListResponse + 14, // 45: approval.Approval.MySubmit:output_type -> approval.ListResponse + 6, // 46: approval.Approval.NowLevelByInfo:output_type -> approval.WorkFlowResponse + 18, // 47: approval.Approval.Information:output_type -> approval.InformationResponse + 29, // 48: approval.Approval.Viewed:output_type -> approval.ApprovalResponse + 12, // 49: approval.Approval.SetStatus:output_type -> approval.StatusResponse + 36, // 50: approval.Approval.DetailSetting:output_type -> approval.SettingRequest + 38, // 51: approval.Approval.UpdateSetting:output_type -> approval.SettingResponse + 9, // 52: approval.Approval.CreateType:output_type -> approval.TypeResponse + 8, // 53: approval.Approval.DetailType:output_type -> approval.CreateTypeRequest + 9, // 54: approval.Approval.UpdateType:output_type -> approval.TypeResponse + 10, // 55: approval.Approval.AllType:output_type -> approval.AllTypeResponse + 12, // 56: approval.Approval.RemoveType:output_type -> approval.StatusResponse + 38, // [38:57] is the sub-list for method output_type + 19, // [19:38] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_api_approval_approval_proto_init() } @@ -3276,7 +3434,7 @@ func file_api_approval_approval_proto_init() { } if !protoimpl.UnsafeEnabled { file_api_approval_approval_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateEhApplyIDRequest); i { + switch v := v.(*KeyInfo); i { case 0: return &v.state case 1: @@ -3288,7 +3446,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateEhApplyIDResponse); i { + switch v := v.(*UpdateEhApplyIDRequest); i { case 0: return &v.state case 1: @@ -3300,7 +3458,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsedNumByUserRequest); i { + switch v := v.(*UpdateEhApplyIDResponse); i { case 0: return &v.state case 1: @@ -3312,7 +3470,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsedNumByUserResponse); i { + switch v := v.(*UsedNumByUserRequest); i { case 0: return &v.state case 1: @@ -3324,7 +3482,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NowLevelByInfoRequest); i { + switch v := v.(*UsedNumByUserResponse); i { case 0: return &v.state case 1: @@ -3336,7 +3494,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkFlowResponse); i { + switch v := v.(*NowLevelByInfoRequest); i { case 0: return &v.state case 1: @@ -3348,7 +3506,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommonRequest); i { + switch v := v.(*WorkFlowResponse); i { case 0: return &v.state case 1: @@ -3360,7 +3518,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTypeRequest); i { + switch v := v.(*CommonRequest); i { case 0: return &v.state case 1: @@ -3372,7 +3530,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TypeResponse); i { + switch v := v.(*CreateTypeRequest); i { case 0: return &v.state case 1: @@ -3384,7 +3542,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllTypeResponse); i { + switch v := v.(*TypeResponse); i { case 0: return &v.state case 1: @@ -3396,7 +3554,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusRequest); i { + switch v := v.(*AllTypeResponse); i { case 0: return &v.state case 1: @@ -3408,7 +3566,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusResponse); i { + switch v := v.(*StatusRequest); i { case 0: return &v.state case 1: @@ -3420,7 +3578,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRequest); i { + switch v := v.(*StatusResponse); i { case 0: return &v.state case 1: @@ -3432,7 +3590,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListResponse); i { + switch v := v.(*ListRequest); i { case 0: return &v.state case 1: @@ -3444,7 +3602,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ViewedRequest); i { + switch v := v.(*ListResponse); i { case 0: return &v.state case 1: @@ -3456,7 +3614,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InformationRequest); i { + switch v := v.(*ViewedRequest); i { case 0: return &v.state case 1: @@ -3468,7 +3626,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Information); i { + switch v := v.(*InformationRequest); i { case 0: return &v.state case 1: @@ -3480,7 +3638,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InformationResponse); i { + switch v := v.(*Information); i { case 0: return &v.state case 1: @@ -3492,7 +3650,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bundle); i { + switch v := v.(*InformationResponse); i { case 0: return &v.state case 1: @@ -3504,7 +3662,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Show); i { + switch v := v.(*Bundle); i { case 0: return &v.state case 1: @@ -3516,7 +3674,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalWork); i { + switch v := v.(*Show); i { case 0: return &v.state case 1: @@ -3528,7 +3686,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Work); i { + switch v := v.(*ApprovalWork); i { case 0: return &v.state case 1: @@ -3540,7 +3698,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalExhibition); i { + switch v := v.(*Work); i { case 0: return &v.state case 1: @@ -3552,7 +3710,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Exhibition); i { + switch v := v.(*ApprovalExhibition); i { case 0: return &v.state case 1: @@ -3564,7 +3722,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateRequest); i { + switch v := v.(*Exhibition); i { case 0: return &v.state case 1: @@ -3576,7 +3734,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkFlow); i { + switch v := v.(*CreateRequest); i { case 0: return &v.state case 1: @@ -3588,7 +3746,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DetailRequest); i { + switch v := v.(*WorkFlow); i { case 0: return &v.state case 1: @@ -3600,7 +3758,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveRequest); i { + switch v := v.(*DetailRequest); i { case 0: return &v.state case 1: @@ -3612,7 +3770,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalResponse); i { + switch v := v.(*RemoveRequest); i { case 0: return &v.state case 1: @@ -3624,7 +3782,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveResponse); i { + switch v := v.(*ApprovalResponse); i { case 0: return &v.state case 1: @@ -3636,7 +3794,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalExhibitionRemove); i { + switch v := v.(*RemoveResponse); i { case 0: return &v.state case 1: @@ -3648,7 +3806,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalExhibitionRequest); i { + switch v := v.(*ApprovalExhibitionRemove); i { case 0: return &v.state case 1: @@ -3660,7 +3818,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalExhibitionDetail); i { + switch v := v.(*ApprovalExhibitionRequest); i { case 0: return &v.state case 1: @@ -3672,7 +3830,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyUser); i { + switch v := v.(*ApprovalExhibitionDetail); i { case 0: return &v.state case 1: @@ -3684,7 +3842,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApprovalUser); i { + switch v := v.(*CopyUser); i { case 0: return &v.state case 1: @@ -3696,7 +3854,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SettingRequest); i { + switch v := v.(*ApprovalUser); i { case 0: return &v.state case 1: @@ -3708,7 +3866,7 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DetailSettingRequest); i { + switch v := v.(*SettingRequest); i { case 0: return &v.state case 1: @@ -3720,6 +3878,18 @@ func file_api_approval_approval_proto_init() { } } file_api_approval_approval_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetailSettingRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_approval_approval_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SettingResponse); i { case 0: return &v.state @@ -3738,7 +3908,7 @@ func file_api_approval_approval_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_approval_approval_proto_rawDesc, NumEnums: 0, - NumMessages: 38, + NumMessages: 39, NumExtensions: 0, NumServices: 1, }, diff --git a/api/approval/approval.proto b/api/approval/approval.proto index 08f006b..e86e7e5 100644 --- a/api/approval/approval.proto +++ b/api/approval/approval.proto @@ -28,13 +28,19 @@ service Approval { rpc UpdateType(CreateTypeRequest) returns (TypeResponse) {}; rpc AllType(CommonRequest) returns (AllTypeResponse) {}; rpc RemoveType(RemoveRequest) returns (StatusResponse) {}; +} +message KeyInfo { + string ApprovalKey = 1 [json_name = "approvalKey"]; + string ApprovalName = 2 [json_name = "approvalName"]; + string ApprovalType = 3 [json_name = "approvalType"]; + string ApprovalValue = 4 [json_name = "approvalValue"]; } message UpdateEhApplyIDRequest { string Domain = 1 [json_name = "domain"]; uint64 ApprovalID = 2 [json_name = "approvalID"]; - uint64 ApplyId = 3 [json_name = "applyId"]; + string ApplyId = 3 [json_name = "applyId"]; } message UpdateEhApplyIDResponse { @@ -73,6 +79,8 @@ message CreateTypeRequest { string Title = 3 [json_name = "title"]; string Remark = 5 [json_name = "remark"]; string KeyWord = 6 [json_name = "keyWord"]; + repeated KeyInfo KeyInfos = 7 [json_name = "keyInfos"]; + uint64 IsCustom = 8 [json_name = "isCustom"]; } message TypeResponse { @@ -175,10 +183,11 @@ message ApprovalExhibition { uint64 ExhibitionID =2 [json_name = "exhibitionID"]; uint64 ApprovalID =3 [json_name = "approvalID"]; string PackageName =4 [json_name = "packageName"]; - uint64 PackageID =5 [json_name = "packageID"]; + string PackageID =5 [json_name = "packageID"]; uint64 PackageSize =6 [json_name = "packageSize"]; string PackageNumber =7 [json_name = "packageNumber"]; string Address =8 [json_name = "address"]; + string ShowDate =9 [json_name = "showDate"]; } message Exhibition { @@ -188,7 +197,7 @@ message Exhibition { uint64 PidApprovalID =4 [json_name = "pidApprovalID"]; repeated ApprovalExhibition ApprovalExhibitions = 5 [json_name = "approvalExhibitions"]; uint64 Num = 6 [json_name = "num"]; - uint64 ApplyID = 7 [json_name = "applyID"]; + string ApplyID = 7 [json_name = "applyID"]; } message CreateRequest { @@ -215,6 +224,8 @@ message CreateRequest { uint64 Level = 23 [json_name = "level"]; uint64 NowLevel = 24 [json_name = "nowLevel"]; string CreatedAt = 25 [json_name = "createdAt"]; + repeated KeyInfo CustomizeInfo = 26 [json_name = "customizeInfo"]; + uint64 IsCustom = 27 [json_name = "isCustom"]; } message WorkFlow { @@ -292,6 +303,8 @@ message SettingRequest { repeated CopyUser CopyUsers = 6 [json_name = "copyUsers"]; repeated ApprovalUser ApprovalUsers = 9 [json_name = "approvalUsers"]; string Domain = 10 [json_name = "domain"]; + repeated KeyInfo CustomizeInfo = 11 [json_name = "customizeInfo"]; + uint64 IsCustom = 12 [json_name = "isCustom"]; } message DetailSettingRequest { diff --git a/api/approval/approval.validator.pb.go b/api/approval/approval.validator.pb.go index a27cf71..85293fc 100644 --- a/api/approval/approval.validator.pb.go +++ b/api/approval/approval.validator.pb.go @@ -16,6 +16,9 @@ var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +func (this *KeyInfo) Validate() error { + return nil +} func (this *UpdateEhApplyIDRequest) Validate() error { return nil } @@ -38,6 +41,13 @@ func (this *CommonRequest) Validate() error { return nil } func (this *CreateTypeRequest) Validate() error { + for _, item := range this.KeyInfos { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("KeyInfos", err) + } + } + } return nil } func (this *TypeResponse) Validate() error { @@ -188,6 +198,13 @@ func (this *CreateRequest) Validate() error { } } } + for _, item := range this.CustomizeInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("CustomizeInfo", err) + } + } + } return nil } func (this *WorkFlow) Validate() error { @@ -235,6 +252,13 @@ func (this *SettingRequest) Validate() error { } } } + for _, item := range this.CustomizeInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("CustomizeInfo", err) + } + } + } return nil } func (this *DetailSettingRequest) Validate() error { diff --git a/docs/env/dev/conf.ini b/docs/env/dev/conf.ini index 2632b7b..5610682 100644 --- a/docs/env/dev/conf.ini +++ b/docs/env/dev/conf.ini @@ -1,13 +1,16 @@ +[system] +mode = dev #正式prod #测试dev + [mysql] Db = mysql -DbHost = 106.13.166.247 +DbHost = mysql DbPort = 3306 -DbUser = admin -DbPassWord = EgdNF8 +DbUser = root +DbPassWord = 123456 DbName = fontree-approval [redis] RedisDB = RedisAddr = redis:6379 RedisPW = -RedisDBNAme = \ No newline at end of file +RedisDBNAme = diff --git a/docs/env/dev/dubbogo.yaml b/docs/env/dev/dubbogo.yaml index f29e765..7d2385d 100644 --- a/docs/env/dev/dubbogo.yaml +++ b/docs/env/dev/dubbogo.yaml @@ -2,7 +2,7 @@ dubbo: registries: demoZK: protocol: zookeeper - address: ${Nacos_host}:2181 + address: zookeeper:2181 protocols: triple: name: tri diff --git a/docs/env/local/conf.ini b/docs/env/local/conf.ini index 0d3df58..48b4caa 100644 --- a/docs/env/local/conf.ini +++ b/docs/env/local/conf.ini @@ -1,3 +1,6 @@ +[system] +mode = dev #正式prod #测试dev + [mysql] Db = mysql DbHost = 127.0.0.1 @@ -10,4 +13,4 @@ DbName = fontree-approval RedisDB = RedisAddr = 127.0.0.1:6379 RedisPW = -RedisDBNAme = \ No newline at end of file +RedisDBNAme = diff --git a/docs/env/prod/conf.ini b/docs/env/prod/conf.ini index 544cacf..5c75bb8 100644 --- a/docs/env/prod/conf.ini +++ b/docs/env/prod/conf.ini @@ -3,8 +3,8 @@ mode = prod #正式prod #测试dev [mysql] Db = mysql -DbHost = 172.16.100.22 -DbPort = 9005 +DbHost = mysql +DbPort = 3306 DbUser = fonchain DbPassWord = C250PflXIWv2SQm DbName = fontree-approval diff --git a/docs/env/prod/dubbogo.yaml b/docs/env/prod/dubbogo.yaml index 5c10103..a922994 100644 --- a/docs/env/prod/dubbogo.yaml +++ b/docs/env/prod/dubbogo.yaml @@ -2,7 +2,7 @@ dubbo: registries: demoZK: protocol: zookeeper - address: 172.16.100.22:2181 + address: zookeeper:2181 protocols: triple: name: tri diff --git a/docs/env/test/conf.ini b/docs/env/test/conf.ini index 7213d08..a2157ed 100644 --- a/docs/env/test/conf.ini +++ b/docs/env/test/conf.ini @@ -1,3 +1,6 @@ +[system] +mode = prod #正式prod #测试dev + [mysql] Db = mysql DbHost = mysql @@ -10,4 +13,4 @@ DbName = fontree-approval RedisDB = RedisAddr = redis:6379 RedisPW = -RedisDBNAme = \ No newline at end of file +RedisDBNAme = diff --git a/docs/env/test/dubbogo.yaml b/docs/env/test/dubbogo.yaml index 7d2385d..580b7cb 100644 --- a/docs/env/test/dubbogo.yaml +++ b/docs/env/test/dubbogo.yaml @@ -2,7 +2,7 @@ dubbo: registries: demoZK: protocol: zookeeper - address: zookeeper:2181 + address: 121.229.45.214:9004 protocols: triple: name: tri diff --git a/pkg/common/collection/slicefuc.go b/pkg/common/collection/slicefuc.go index f0ae561..1de4b79 100644 --- a/pkg/common/collection/slicefuc.go +++ b/pkg/common/collection/slicefuc.go @@ -48,6 +48,24 @@ func IntersectArrayInt(a []int, b []int) []int { return inter } +func IntersectArrayString(a []string, b []string) []string { + var inter []string + mp := make(map[string]bool) + + for _, s := range a { + if _, ok := mp[s]; !ok { + mp[s] = true + } + } + for _, s := range b { + if _, ok := mp[s]; ok { + inter = append(inter, s) + } + } + + return inter +} + func IntersectArrayUint64(a []uint64, b []uint64) []uint64 { var inter []uint64 mp := make(map[uint64]bool) @@ -124,6 +142,26 @@ func DiffArrayUint(a []uint, b []uint) []uint { return diffArray } +//a中删除在b中的 +func DiffArrayString(a []string, b []string) []string { + var diffArray []string + temp := map[string]struct{}{} + + for _, val := range b { + if _, ok := temp[val]; !ok { + temp[val] = struct{}{} + } + } + + for _, val := range a { + if _, ok := temp[val]; !ok { + diffArray = append(diffArray, val) + } + } + + return diffArray +} + func DiffArrayUint64(a []uint64, b []uint64) []uint64 { var diffArray []uint64 temp := map[uint64]struct{}{} diff --git a/pkg/common/collection/slicefuc_test.go b/pkg/common/collection/slicefuc_test.go new file mode 100644 index 0000000..388907a --- /dev/null +++ b/pkg/common/collection/slicefuc_test.go @@ -0,0 +1,43 @@ +package collection + +import ( + "fmt" + "testing" +) + +func TestCodetInfo(t *testing.T) { + var first = []string{"a", "b", "c"} + var second = []string{"a", "b", "c"} + + result := DiffArrayString(first, second) + result2 := IntersectArrayString(first, second) + fmt.Println(result, result2) + if len(result) != 0 { + t.Errorf("验证错误 ") + } + + second = []string{} + result = DiffArrayString(first, second) + result2 = IntersectArrayString(first, second) + fmt.Println(result, result2) + if len(result) != 3 { + t.Errorf("验证错误 ") + } + + second = []string{"a"} + result = DiffArrayString(first, second) + result2 = IntersectArrayString(first, second) + fmt.Println(result, result2) + if len(result) != 2 { + t.Errorf("验证错误 ") + } + + first = []string{} + result = DiffArrayString(first, second) + result2 = IntersectArrayString(first, second) + fmt.Println(result, result2) + if len(result) != 0 { + t.Errorf("验证错误 ") + } + +} diff --git a/pkg/e/code.go b/pkg/e/code.go index 7a8d23a..9d7332a 100644 --- a/pkg/e/code.go +++ b/pkg/e/code.go @@ -4,6 +4,11 @@ var ( JWTSecret = []byte("asdfqwer1234") ) +const ( + Is_IsCustom_Yes = 1 + Is_IsCustom_No = 2 +) + const ( Success = 200 Error = 500 diff --git a/pkg/model/approval.go b/pkg/model/approval.go index 0818dcb..1eb50c5 100644 --- a/pkg/model/approval.go +++ b/pkg/model/approval.go @@ -1,6 +1,8 @@ package model import ( + "database/sql/driver" + "encoding/json" "errors" "fmt" "github.com/fonchain_enterprise/fonchain-approval/api/approval" @@ -11,6 +13,14 @@ import ( "time" ) +type KeyInfo struct { + ApprovalKey string + ApprovalName string + ApprovalType string + ApprovalValue string +} +type KeyInfos []KeyInfo + // Approval 审批 type Approval struct { ID uint64 `gorm:"primaryKey;column:id" json:"id"` @@ -28,6 +38,7 @@ type Approval struct { NowUserId uint64 `gorm:"column:now_user_id" json:"nowUserId"` NowUserName string `gorm:"column:now_user_name" json:"nowUserName"` Content string `gorm:"column:content" json:"content"` + ValueJson KeyInfos `gorm:"type:json;column:value_json;default:null;comment:自定义信息" json:"valueJson"` Reply string `gorm:"column:reply" json:"reply"` Domain *string `gorm:"column:domain" json:"domain"` Show *Show `gorm:"foreignKey:ApprovalID" json:"Show"` @@ -37,6 +48,17 @@ type Approval struct { ApprovalWorkFlows []*ApprovalWorkFlow `gorm:"foreignKey:ApprovalID" json:"ApprovalWorkFlows"` } +func (j *KeyInfos) Scan(src interface{}) error { + return json.Unmarshal(src.([]byte), j) +} + +func (j KeyInfos) Value() (driver.Value, error) { + + v, err := json.Marshal(j) + + return string(v), err +} + const ( TypeContent = "content" TypeWork = "work" @@ -142,10 +164,13 @@ func StoreApproval(in *approval.CreateRequest) (*Approval, error) { err := DB.Transaction(func(tx *gorm.DB) error { + fmt.Println(0) setting, terr := GetApprovalSettingFromKeyWord(in.Domain, in.Type) + if terr != nil { return errors.New("抄送人没有配置") } + fmt.Println(1) // 保存基本信息 entity = &Approval{ @@ -156,6 +181,7 @@ func StoreApproval(in *approval.CreateRequest) (*Approval, error) { ApprovalUsers: setting.ApprovalUsers, Type: in.Type, Content: in.Content, + ValueJson: ToKeyInfos(in.CustomizeInfo), Status: StatusDoing, Level: uint8(len(setting.ApprovalUsers)), NowLevel: 1, @@ -163,19 +189,27 @@ func StoreApproval(in *approval.CreateRequest) (*Approval, error) { NowUserName: setting.ApprovalUsers[0].Name, } + fmt.Println(3) if err := DB.Create(&entity).Error; err != nil { return err } // 不同类型保存不同的结构体 + + fmt.Println(41, entity) err := entity.SaveContent(in) + fmt.Println(4) + if err != nil { return err } + fmt.Println(5) return BatchSave(setting.ApprovalUsers, entity.ID) }) + fmt.Println("nil", entity) + fmt.Println("nil", entity.ID) return entity, err @@ -239,6 +273,10 @@ func UpdateApproval(in *approval.CreateRequest) (*Approval, error) { Content: in.Content, } + if entity.Status == StatusFail { + upEntity.Status = StatusDoing + } + if err := DB.Where(&Approval{ID: in.ID}).Updates(&upEntity).Error; err != nil { return err } diff --git a/pkg/model/approval_exhibition.go b/pkg/model/approval_exhibition.go index c7eb108..c4945be 100644 --- a/pkg/model/approval_exhibition.go +++ b/pkg/model/approval_exhibition.go @@ -7,45 +7,21 @@ import ( // ApprovalExhibition 绑定的画展包 type ApprovalExhibition struct { - ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID - DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间 - CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间 - UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间 - ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 申请的id - ExhibitionID uint64 `gorm:"column:exhibition_id" json:"exhibitionId"` // 画展包的id - PackageName string `gorm:"column:package_name" json:"PackageName"` // 作品名称 - PackageID uint64 `gorm:"column:package_id" json:"packageID"` // 作品类型id - PackageSize uint64 `gorm:"column:package_size" json:"PackageSize"` // 平尺数 - PackageNumber string `gorm:"column:package_number" json:"packageNumber"` // 序号 - Address string `gorm:"column:address" json:"Address"` // 地点 + ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID + DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间 + CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间 + ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 申请的id + ExhibitionID uint64 `gorm:"column:exhibition_id" json:"exhibitionId"` // 画展包的id + PackageName string `gorm:"column:package_name" json:"PackageName"` // 作品名称 + PackageID string `gorm:"size:64;column:package_id;default:''" json:"packageID"` // 作品类型id + PackageSize uint64 `gorm:"column:package_size" json:"PackageSize"` // 平尺数 + PackageNumber string `gorm:"column:package_number" json:"packageNumber"` // 序号 + Address string `gorm:"column:address" json:"Address"` // 地点 + ShowDate string `gorm:"type:varchar(10);default:'';column:show_date" json:"ShowDate"` // 位置 } // TableName get sql table name.获取数据库表名 func (m *ApprovalExhibition) TableName() string { return "approval_exhibition" } - -// ApprovalExhibitionColumns get sql column name.获取数据库列名 -var ApprovalExhibitionColumns = struct { - ID string - DeletedAt string - CreatedAt string - UpdatedAt string - ApprovalID string - ExhibitionID string - ExhibitionName string - ArtworkID string - ExhibitionSize string - ExhibitionNumber string -}{ - ID: "id", - DeletedAt: "deleted_at", - CreatedAt: "created_at", - UpdatedAt: "updated_at", - ApprovalID: "approval_id", - ExhibitionID: "exhibition_id", - ExhibitionName: "exhibition_name", - ArtworkID: "artwork_id", - ExhibitionSize: "exhibition_size", - ExhibitionNumber: "exhibition_number", -} diff --git a/pkg/model/approval_setting.go b/pkg/model/approval_setting.go index d370709..ae0535d 100644 --- a/pkg/model/approval_setting.go +++ b/pkg/model/approval_setting.go @@ -32,7 +32,9 @@ type ApprovalSetting struct { KeyWord string `gorm:"column:key_word" json:"keyWord"` ApprovalUsers ApprovalUsers `gorm:"column:approval_users" json:"approvalUsers"` CopyUsers CopyUsers `gorm:"column:copy_users" json:"copyUsers"` - Domain string `gorm:"column:domain" json:"domain"` + ApprovalType *ApprovalType `gorm:"foreignKey:key_word;references:key_word" json:"approvalType"` + + Domain string `gorm:"column:domain" json:"domain"` } // TableName get sql table name.获取数据库表名 @@ -66,7 +68,7 @@ func GetApprovalSettingFromKeyWord(Domain, keyWord string) (setting *ApprovalSet err = DB.Model(&ApprovalSetting{}).Where(&ApprovalSetting{KeyWord: keyWord, Domain: Domain}).First(&setting).Error - return setting, nil + return setting, err } func FormatCopyUsers(copyUsers []*approval.CopyUser) CopyUsers { diff --git a/pkg/model/approval_type.go b/pkg/model/approval_type.go index f13a018..f002324 100644 --- a/pkg/model/approval_type.go +++ b/pkg/model/approval_type.go @@ -1,6 +1,8 @@ package model import ( + "fmt" + "github.com/fonchain_enterprise/fonchain-approval/api/approval" md52 "github.com/fonchain_enterprise/fonchain-approval/pkg/common/md5" "gorm.io/plugin/soft_delete" "math/rand" @@ -10,14 +12,16 @@ import ( // ApprovalType 审批类型 type ApprovalType struct { - ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID - DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间 - CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间 - UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间 - KeyWord string `gorm:"column:key_word" json:"keyWord"` // 回复内容 - Domain string `gorm:"column:domain" json:"domain"` // 回复内容 - Title string `gorm:"column:title" json:"title"` // 回复内容 - Remark string `gorm:"column:remark" json:"remark"` // 回复内容 + ID uint64 `gorm:"primaryKey;column:id" json:"id"` // ID + DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间 + CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"` // 更新时间 + KeyWord string `gorm:"column:key_word" json:"keyWord"` // 回复内容 + IsNormal uint64 `gorm:"type:tinyint;column:is_normal;default:1;comment:是否是自定义" json:"isNormal"` // 回复内容 + KeyJson KeyInfos `gorm:"type:json;column:key_json;default:null;comment:自定义字段" json:"keyJson"` + Domain string `gorm:"column:domain" json:"domain"` // 回复内容 + Title string `gorm:"column:title" json:"title"` // 回复内容 + Remark string `gorm:"column:remark" json:"remark"` // 回复内容 } // TableName get sql table name.获取数据库表名 @@ -25,6 +29,14 @@ func (m *ApprovalType) TableName() string { return "approval_type" } +var TypeMap = map[string]string{ + "content": "", + "work": "", + "exhibition": "", + "bundle": "", + "show": "", +} + var keyWordMap = map[string]string{ "普通审批": "content", "画作申请审批": "work", @@ -50,6 +62,28 @@ func DataExist(domain, keyWork, title string) bool { } +func ToKeyInfos(infos []*approval.KeyInfo) KeyInfos { + var info KeyInfos + + for index, t := range infos { + + temp := KeyInfo{ + ApprovalKey: t.ApprovalKey, + ApprovalName: t.ApprovalName, + ApprovalType: t.ApprovalType, + ApprovalValue: t.ApprovalValue, + } + + if temp.ApprovalKey == "" { + temp.ApprovalKey = "key_" + fmt.Sprintf("%d", index) + } + + info = append(info, temp) + } + + return info +} + func KeyWordFromTitle(title string) string { keyWord := md52.Md5Part(title+strconv.Itoa(rand.Intn(100)), 8, 16) @@ -65,3 +99,8 @@ func IsSystemKeyWork(title string) bool { _, isOk := keyWordMap[title] return isOk } + +func IsSystemType(title string) bool { + _, isOk := TypeMap[title] + return isOk +} diff --git a/pkg/model/exhibition.go b/pkg/model/exhibition.go index 3227802..8753987 100644 --- a/pkg/model/exhibition.go +++ b/pkg/model/exhibition.go @@ -19,7 +19,7 @@ type Exhibition struct { ReceivedAt string `gorm:"column:received_at" json:"receivedAt"` // 领取时间 Address string `gorm:"column:address" json:"Address"` // 地点 ApprovalID uint64 `gorm:"column:approval_id" json:"approvalId"` // 关联申请的ID - ApplyID uint64 `gorm:"column:apply_id" json:"applyID"` // 画展包的id + ApplyID string `gorm:"size:64;column:apply_id;default:''" json:"applyID"` // 画展包的id Num uint64 `gorm:"column:num" json:"num"` // 关联申请的ID ApprovalExhibitions []*ApprovalExhibition `gorm:"foreignKey:ExhibitionID" json:"ApprovalExhibitions"` //关联包 } @@ -53,7 +53,8 @@ func (m *Exhibition) SaveApprovalContent(in *approval.CreateRequest, a *Approval PackageID: approvalExhibition.PackageID, //PackageSize: approvalExhibition.PackageSize, //PackageNumber: approvalExhibition.PackageNumber, - Address: approvalExhibition.Address, + Address: approvalExhibition.Address, + ShowDate: approvalExhibition.ShowDate, } approvalExhibitions = append(approvalExhibitions, temp) @@ -92,10 +93,10 @@ func (m *Exhibition) UpdateApprovalContent(in *approval.CreateRequest, a *Approv func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) error { approvalExhibitions := in.Exhibition.ApprovalExhibitions var oldApprovalExhibitions []ApprovalExhibition - var oldPackageID []uint64 - var inPackageID []uint64 + var oldPackageID []string + var inPackageID []string var err error - inApprovalExhibitionMap := make(map[uint64]*approval.ApprovalExhibition, len(approvalExhibitions)) + inApprovalExhibitionMap := make(map[string]*approval.ApprovalExhibition, len(approvalExhibitions)) DB.Where(&ApprovalExhibition{ExhibitionID: m.ID}).Find(&oldApprovalExhibitions) @@ -108,7 +109,7 @@ func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) erro inApprovalExhibitionMap[approvalWork.PackageID] = approvalWork } - needDel := collection.DiffArrayUint64(oldPackageID, inPackageID) + needDel := collection.DiffArrayString(oldPackageID, inPackageID) fmt.Println(needDel) if len(needDel) > 0 { @@ -116,7 +117,7 @@ func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) erro Delete(&ApprovalExhibition{}) } - needAdd := collection.DiffArrayUint64(inPackageID, oldPackageID) + needAdd := collection.DiffArrayString(inPackageID, oldPackageID) fmt.Println(needAdd) //传递的id去除表 新增 @@ -130,7 +131,8 @@ func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) erro PackageID: inApprovalExhibitionMap[tempId].PackageID, //PackageSize: inApprovalExhibitionMap[tempId].PackageSize, //PackageNumber: inApprovalExhibitionMap[tempId].PackageNumber, - Address: inApprovalExhibitionMap[tempId].Address, + Address: inApprovalExhibitionMap[tempId].Address, + ShowDate: inApprovalExhibitionMap[tempId].ShowDate, } approvalWorks = append(approvalWorks, temp) @@ -144,7 +146,7 @@ func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) erro } //更新 主要修改绑定的数据权限id - changeIds := collection.IntersectArrayUint64(inPackageID, oldPackageID) + changeIds := collection.IntersectArrayString(inPackageID, oldPackageID) if len(changeIds) > 0 { for _, tempId := range changeIds { @@ -159,7 +161,8 @@ func (m *Exhibition) UpdateContent(in *approval.CreateRequest, a *Approval) erro PackageID: inApprovalExhibitionMap[tempId].PackageID, // PackageSize: inApprovalExhibitionMap[tempId].PackageSize, // PackageNumber: inApprovalExhibitionMap[tempId].PackageNumber, - Address: inApprovalExhibitionMap[tempId].Address, + Address: inApprovalExhibitionMap[tempId].Address, + ShowDate: inApprovalExhibitionMap[tempId].ShowDate, } DB.Model(&ApprovalExhibition{}). @@ -188,7 +191,8 @@ func (m *Exhibition) BuildResContent(a *Approval, request *approval.CreateReques PackageName: one.PackageName, //PackageSize: one.PackageSize, //PackageNumber: one.PackageNumber, - Address: one.Address, + Address: one.Address, + ShowDate: one.ShowDate, } approvalExhibitions = append(approvalExhibitions, temp) diff --git a/pkg/model/init.go b/pkg/model/init.go index 9295148..ff8bbfd 100644 --- a/pkg/model/init.go +++ b/pkg/model/init.go @@ -77,4 +77,5 @@ func Database(conn string) { sqlDB.SetMaxOpenConns(100) //打开 sqlDB.SetConnMaxLifetime(time.Second * 30) DB = db + migration() } diff --git a/pkg/model/migration.go b/pkg/model/migration.go new file mode 100644 index 0000000..af0cba4 --- /dev/null +++ b/pkg/model/migration.go @@ -0,0 +1,32 @@ +package model + +import ( + "fmt" +) + +//类型迁移 +func migration() { + //自动迁移模式 + //增加字段 + addColumn(&ApprovalType{}, "is_normal") + addColumn(&ApprovalType{}, "key_json") + + addColumn(&Exhibition{}, "apply_id") + addColumn(&ApprovalExhibition{}, "package_id") + addColumn(&ApprovalExhibition{}, "show_date") + + addColumn(&Approval{}, "value_json") +} + +//数据迁移 +func addColumn(dst interface{}, column string) { + exist := DB.Migrator().HasColumn(dst, column) + if !exist { + err := DB.Migrator().AddColumn(dst, column) + if err != nil { + fmt.Println(err.Error()) + } + } + + return +} diff --git a/pkg/model/show.go b/pkg/model/show.go index 985aff7..eb4ec49 100644 --- a/pkg/model/show.go +++ b/pkg/model/show.go @@ -25,6 +25,9 @@ func (m *Show) TableName() string { } func (m *Show) SaveApprovalContent(in *approval.CreateRequest, a *Approval) error { + if in.Show == nil { + return nil + } m.ArtistNum = in.Show.ArtistNum m.ApprovalID = a.ID m.ShowAt = in.Show.ShowAt diff --git a/pkg/serializer/approval.go b/pkg/serializer/approval.go index 86c80ed..f02f3f5 100644 --- a/pkg/serializer/approval.go +++ b/pkg/serializer/approval.go @@ -2,6 +2,7 @@ package serializer import ( "github.com/fonchain_enterprise/fonchain-approval/api/approval" + "github.com/fonchain_enterprise/fonchain-approval/pkg/e" "github.com/fonchain_enterprise/fonchain-approval/pkg/model" ) @@ -62,6 +63,7 @@ func BuildApproval(entity *model.Approval, userId uint64) *approval.CreateReques SubmitterName: entity.SubmitterName, Content: entity.Content, CanView: canViewed, + IsCustom: e.Is_IsCustom_Yes, CanApproval: canApproval, WorkFlows: workFlows, Reply: entity.Reply, @@ -69,12 +71,17 @@ func BuildApproval(entity *model.Approval, userId uint64) *approval.CreateReques Show: show, Exhibition: exhibition, Bundle: bundle, + CustomizeInfo: BuildKeyInfo(entity.ValueJson), CreatedAt: entity.CreatedAt.Format("2006-01-02 15:04:05"), - AllStatus: allStatus, //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 - NowUserId: entity.NowUserId, //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 - NowUserName: entity.NowUserName, //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 - Level: uint64(entity.Level), //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 - NowLevel: uint64(entity.NowLevel), //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 + AllStatus: allStatus, //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读 + NowUserId: entity.NowUserId, + NowUserName: entity.NowUserName, + Level: uint64(entity.Level), + NowLevel: uint64(entity.NowLevel), + } + + if model.IsSystemType(entity.Type) == true { + response.IsCustom = e.Is_IsCustom_No } _ = entity.SetResContent(response) diff --git a/pkg/serializer/approval_type.go b/pkg/serializer/approval_type.go index 14a6f44..9ea6d23 100644 --- a/pkg/serializer/approval_type.go +++ b/pkg/serializer/approval_type.go @@ -2,6 +2,7 @@ package serializer import ( "github.com/fonchain_enterprise/fonchain-approval/api/approval" + "github.com/fonchain_enterprise/fonchain-approval/pkg/e" "github.com/fonchain_enterprise/fonchain-approval/pkg/model" ) @@ -9,16 +10,38 @@ import ( func BuildType(entity *model.ApprovalType) *approval.CreateTypeRequest { response := &approval.CreateTypeRequest{ - ID: entity.ID, - Domain: entity.Domain, - Remark: entity.Remark, - Title: entity.Title, - KeyWord: entity.KeyWord, + ID: entity.ID, + Domain: entity.Domain, + Remark: entity.Remark, + Title: entity.Title, + KeyWord: entity.KeyWord, + IsCustom: e.Is_IsCustom_Yes, + KeyInfos: BuildKeyInfo(entity.KeyJson), + } + + if model.IsSystemType(entity.KeyWord) == true { + response.IsCustom = e.Is_IsCustom_No } return response } +func BuildKeyInfo(infos model.KeyInfos) []*approval.KeyInfo { + var keyInfos []*approval.KeyInfo + + for _, t := range infos { + temp := &approval.KeyInfo{ + ApprovalKey: t.ApprovalKey, + ApprovalName: t.ApprovalName, + ApprovalType: t.ApprovalType, + ApprovalValue: t.ApprovalValue, + } + keyInfos = append(keyInfos, temp) + } + + return keyInfos +} + func BuildTypes(entity []*model.ApprovalType) (details []*approval.CreateTypeRequest) { for _, temp := range entity { diff --git a/pkg/serializer/department_approval_setting.go b/pkg/serializer/department_approval_setting.go index 841eb4b..f50537b 100644 --- a/pkg/serializer/department_approval_setting.go +++ b/pkg/serializer/department_approval_setting.go @@ -2,6 +2,7 @@ package serializer import ( "github.com/fonchain_enterprise/fonchain-approval/api/approval" + "github.com/fonchain_enterprise/fonchain-approval/pkg/e" "github.com/fonchain_enterprise/fonchain-approval/pkg/model" ) @@ -35,6 +36,13 @@ func BuildSetting(entity *model.ApprovalSetting) *approval.SettingRequest { CopyUsers: copyUsers, ApprovalUsers: approvalUser, } + if entity.ApprovalType != nil { + response.IsCustom = e.Is_IsCustom_Yes + response.CustomizeInfo = BuildKeyInfo(entity.ApprovalType.KeyJson) + if model.IsSystemType(entity.ApprovalType.KeyWord) == true { + response.IsCustom = e.Is_IsCustom_No + } + } return response } diff --git a/pkg/service/approval.go b/pkg/service/approval.go index 67002b7..940820e 100644 --- a/pkg/service/approval.go +++ b/pkg/service/approval.go @@ -3,6 +3,7 @@ package service import ( "context" "errors" + "fmt" "github.com/fonchain_enterprise/fonchain-approval/api/approval" "github.com/fonchain_enterprise/fonchain-approval/pkg/common/page" "github.com/fonchain_enterprise/fonchain-approval/pkg/m" @@ -23,7 +24,9 @@ func (a *ApprovalProvider) Create(ctx context.Context, in *approval.CreateReques return response, err } - response.ID = entity.ID + if entity != nil { + response.ID = entity.ID + } response.Success = true return response, err @@ -286,7 +289,7 @@ func (a *ApprovalProvider) DetailSetting(ctx context.Context, in *approval.Detai return response, nil } - if err := model.DB.Model(&model.ApprovalSetting{}). + if err := model.DB.Model(&model.ApprovalSetting{}).Preload("ApprovalType"). Where(&model.ApprovalSetting{Domain: in.Domain, KeyWord: in.KeyWord}). First(&setting).Error; err != nil { response.Domain = in.Domain @@ -300,6 +303,7 @@ func (a *ApprovalProvider) DetailSetting(ctx context.Context, in *approval.Detai func (a *ApprovalProvider) CreateType(ctx context.Context, in *approval.CreateTypeRequest) (*approval.TypeResponse, error) { response := &approval.TypeResponse{} + fmt.Println("创建类型:", in.String()) keyWord := model.KeyWordFromTitle(in.Title) if model.DataExist(in.Domain, keyWord, in.Title) == true { @@ -311,6 +315,7 @@ func (a *ApprovalProvider) CreateType(ctx context.Context, in *approval.CreateTy Title: in.Title, Domain: in.Domain, Remark: in.Remark, + KeyJson: model.ToKeyInfos(in.KeyInfos), } if err := model.DB.Create(&typeObj).Error; err != nil {