// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 // protoc v5.29.1 // source: w_campaign.proto package w_campaignpb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type ListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` //当前页 PerPage int32 `protobuf:"varint,2,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` //每页条数 ProjectId int64 `protobuf:"varint,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id ProjectHashId string `protobuf:"bytes,4,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //活动标题筛选 Link string `protobuf:"bytes,6,opt,name=link,proto3" json:"link,omitempty"` //活动链接筛选 Status []int32 `protobuf:"varint,7,rep,packed,name=status,proto3" json:"status,omitempty"` //活动状态(1-待发布,2-已发布,3-已下线,4-预发布) FissionId []int64 `protobuf:"varint,8,rep,packed,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //活动类型标识 Start int64 `protobuf:"varint,9,opt,name=start,proto3" json:"start,omitempty"` //活动时间开始时间戳 End int64 `protobuf:"varint,10,opt,name=end,proto3" json:"end,omitempty"` //活动时间结束时间戳 OrderById bool `protobuf:"varint,11,opt,name=order_by_id,json=orderById,proto3" json:"order_by_id,omitempty"` //是否id升序 Targets []int32 `protobuf:"varint,12,rep,packed,name=targets,proto3" json:"targets,omitempty"` //活动目标集合 UpdatedStart int64 `protobuf:"varint,13,opt,name=updated_start,json=updatedStart,proto3" json:"updated_start,omitempty"` //最后更新时间开始时间戳 UpdatedEnd int64 `protobuf:"varint,14,opt,name=updated_end,json=updatedEnd,proto3" json:"updated_end,omitempty"` //最后更新时间结束时间戳 } func (x *ListReq) Reset() { *x = ListReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListReq) ProtoMessage() {} func (x *ListReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_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 ListReq.ProtoReflect.Descriptor instead. func (*ListReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{0} } func (x *ListReq) GetPage() int32 { if x != nil { return x.Page } return 0 } func (x *ListReq) GetPerPage() int32 { if x != nil { return x.PerPage } return 0 } func (x *ListReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *ListReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *ListReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ListReq) GetLink() string { if x != nil { return x.Link } return "" } func (x *ListReq) GetStatus() []int32 { if x != nil { return x.Status } return nil } func (x *ListReq) GetFissionId() []int64 { if x != nil { return x.FissionId } return nil } func (x *ListReq) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *ListReq) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *ListReq) GetOrderById() bool { if x != nil { return x.OrderById } return false } func (x *ListReq) GetTargets() []int32 { if x != nil { return x.Targets } return nil } func (x *ListReq) GetUpdatedStart() int64 { if x != nil { return x.UpdatedStart } return 0 } func (x *ListReq) GetUpdatedEnd() int64 { if x != nil { return x.UpdatedEnd } return 0 } type ListRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*ListRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //列表数据 Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` //列表总数 } func (x *ListRes) Reset() { *x = ListRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRes) ProtoMessage() {} func (x *ListRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[1] 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 ListRes.ProtoReflect.Descriptor instead. func (*ListRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{1} } func (x *ListRes) GetList() []*ListRes_One { if x != nil { return x.List } return nil } func (x *ListRes) GetTotal() int64 { if x != nil { return x.Total } return 0 } type ShareReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ShareReq) Reset() { *x = ShareReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShareReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShareReq) ProtoMessage() {} func (x *ShareReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[2] 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 ShareReq.ProtoReflect.Descriptor instead. func (*ShareReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{2} } type ShareRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Loc []*ShareRes_One `protobuf:"bytes,1,rep,name=loc,proto3" json:"loc,omitempty"` //国内 OverSea []*ShareRes_One `protobuf:"bytes,2,rep,name=over_sea,json=overSea,proto3" json:"over_sea,omitempty"` //国外 } func (x *ShareRes) Reset() { *x = ShareRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShareRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShareRes) ProtoMessage() {} func (x *ShareRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[3] 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 ShareRes.ProtoReflect.Descriptor instead. func (*ShareRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{3} } func (x *ShareRes) GetLoc() []*ShareRes_One { if x != nil { return x.Loc } return nil } func (x *ShareRes) GetOverSea() []*ShareRes_One { if x != nil { return x.OverSea } return nil } type StatusReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` //发布状态(2-已发布,3-已下线,4-预发布) PreRunTime int64 `protobuf:"varint,4,opt,name=pre_run_time,json=preRunTime,proto3" json:"pre_run_time,omitempty"` //预发布转正式发布时间戳 } func (x *StatusReq) Reset() { *x = StatusReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatusReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatusReq) ProtoMessage() {} func (x *StatusReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[4] 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 StatusReq.ProtoReflect.Descriptor instead. func (*StatusReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{4} } func (x *StatusReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *StatusReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *StatusReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *StatusReq) GetPreRunTime() int64 { if x != nil { return x.PreRunTime } return 0 } type StatusRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *StatusRes) Reset() { *x = StatusRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatusRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatusRes) ProtoMessage() {} func (x *StatusRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[5] 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 StatusRes.ProtoReflect.Descriptor instead. func (*StatusRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{5} } type DestroyReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` //发布状态(2-已发布,3-已下线) } func (x *DestroyReq) Reset() { *x = DestroyReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyReq) ProtoMessage() {} func (x *DestroyReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[6] 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 DestroyReq.ProtoReflect.Descriptor instead. func (*DestroyReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{6} } func (x *DestroyReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *DestroyReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *DestroyReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } type DestroyRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DestroyRes) Reset() { *x = DestroyRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyRes) ProtoMessage() {} func (x *DestroyRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[7] 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 DestroyRes.ProtoReflect.Descriptor instead. func (*DestroyRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{7} } type StoreReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id TemplateId string `protobuf:"bytes,2,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` //模版id UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //员工id Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` //活动标题 StartTime int64 `protobuf:"varint,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 CoverUrl string `protobuf:"bytes,7,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` //活动封面图 Config *StoreReq_Config `protobuf:"bytes,8,opt,name=config,proto3" json:"config,omitempty"` //活动基础配置 CampaignData []*StoreReq_KV `protobuf:"bytes,9,rep,name=campaign_data,json=campaignData,proto3" json:"campaign_data,omitempty"` //前端组件位置偏移数据 PrizeWheel *StoreReq_LotteryConfig `protobuf:"bytes,10,opt,name=prize_wheel,json=prizeWheel,proto3" json:"prize_wheel,omitempty"` //大转盘配置(大转盘玩法必传) Slot *StoreReq_LotteryConfig `protobuf:"bytes,11,opt,name=slot,proto3" json:"slot,omitempty"` //老虎机配置(老虎机玩法必传) Blind *StoreReq_LotteryConfig `protobuf:"bytes,12,opt,name=blind,proto3" json:"blind,omitempty"` //盲盒配置(盲盒玩法必传) Grid *StoreReq_LotteryConfig `protobuf:"bytes,13,opt,name=grid,proto3" json:"grid,omitempty"` //九宫格配置(九宫格玩法必传) Referral *StoreReq_InviteConfig `protobuf:"bytes,14,opt,name=referral,proto3" json:"referral,omitempty"` //老带新配置(老带新玩法必传) QuestionAnswer *StoreReq_QuestionAnswer `protobuf:"bytes,15,opt,name=question_answer,json=questionAnswer,proto3" json:"question_answer,omitempty"` //趣味问答配置(趣味问答玩法必传) Quiz *StoreReq_Quiz `protobuf:"bytes,16,opt,name=quiz,proto3" json:"quiz,omitempty"` //有奖竞猜配置(有奖竞猜玩法必传) Win *StoreReq_InviteConfig `protobuf:"bytes,17,opt,name=win,proto3" json:"win,omitempty"` //一起赢配置(一起赢玩法必传) TOffset int32 `protobuf:"varint,18,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 Target *StoreReq_Target `protobuf:"bytes,19,opt,name=target,proto3" json:"target,omitempty"` //活动目标 Sign *StoreReq_Sign `protobuf:"bytes,20,opt,name=sign,proto3" json:"sign,omitempty"` //签到配置(签到玩法必传) Dice *StoreReq_Dice `protobuf:"bytes,21,opt,name=dice,proto3" json:"dice,omitempty"` //大富翁配置(大富翁玩法必传) Grow *StoreReq_Grow `protobuf:"bytes,22,opt,name=grow,proto3" json:"grow,omitempty"` //农场配置(农场玩法必传) Ballot *StoreReq_Ballot `protobuf:"bytes,23,opt,name=ballot,proto3" json:"ballot,omitempty"` //抽签配置(抽签玩法必传) Chop *StoreReq_Chop `protobuf:"bytes,24,opt,name=chop,proto3" json:"chop,omitempty"` //砍一刀配置(砍一刀玩法必传) DelayLinkData []*StoreReq_KV `protobuf:"bytes,25,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义键值数据 Rewards *StoreReq_Rewards `protobuf:"bytes,26,opt,name=rewards,proto3" json:"rewards,omitempty"` //站内奖品 RewardsWeb []*StoreReq_Reward `protobuf:"bytes,27,rep,name=rewards_web,json=rewardsWeb,proto3" json:"rewards_web,omitempty"` //站外奖品 RewardsExtra []*StoreReq_Reward `protobuf:"bytes,28,rep,name=rewards_extra,json=rewardsExtra,proto3" json:"rewards_extra,omitempty"` //额外奖品 RewardsNewcomer []*StoreReq_Reward `protobuf:"bytes,29,rep,name=rewards_newcomer,json=rewardsNewcomer,proto3" json:"rewards_newcomer,omitempty"` //新人奖 TargetOption *StoreReq_TargetOption `protobuf:"bytes,30,opt,name=target_option,json=targetOption,proto3" json:"target_option,omitempty"` //目标配置选项 Cash *StoreReq_Cash `protobuf:"bytes,31,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置(现金抽奖玩法必传) LongImgs []*StoreReq_LongImg `protobuf:"bytes,32,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Flip *StoreReq_Flip `protobuf:"bytes,33,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) CopyCampaignId string `protobuf:"bytes,34,opt,name=copy_campaign_id,json=copyCampaignId,proto3" json:"copy_campaign_id,omitempty"` //复制的活动id KeepDog *StoreReq_Keep `protobuf:"bytes,35,opt,name=keep_dog,json=keepDog,proto3" json:"keep_dog,omitempty"` //养狗(养狗配置必传) Ip string `protobuf:"bytes,36,opt,name=ip,proto3" json:"ip,omitempty"` //操作ip Push *StoreReq_Push `protobuf:"bytes,37,opt,name=push,proto3" json:"push,omitempty"` //推送配置 Child []*StoreReq_Child `protobuf:"bytes,38,rep,name=child,proto3" json:"child,omitempty"` //关联的子活动 WheelStyle *StoreReq_WheelStyle `protobuf:"bytes,39,opt,name=wheel_style,json=wheelStyle,proto3" json:"wheel_style,omitempty"` //转盘自定义样式 Gold *StoreReq_Gold `protobuf:"bytes,40,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置(金币任务玩法必传) Coin *StoreReq_Coin `protobuf:"bytes,41,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置(金币池玩法必传) GridStyle *StoreReq_GridStyle `protobuf:"bytes,42,opt,name=grid_style,json=gridStyle,proto3" json:"grid_style,omitempty"` //九宫格自定义样式 FlipStyle *StoreReq_FlipStyle `protobuf:"bytes,43,opt,name=flip_style,json=flipStyle,proto3" json:"flip_style,omitempty"` //翻牌自定义样式 PointsUse *StoreReq_PointsUse `protobuf:"bytes,44,opt,name=points_use,json=pointsUse,proto3" json:"points_use,omitempty"` //积分消耗 Chat *StoreReq_Chat `protobuf:"bytes,45,opt,name=chat,proto3" json:"chat,omitempty"` //ai陪伴 Vs *StoreReq_Vs `protobuf:"bytes,46,opt,name=vs,proto3" json:"vs,omitempty"` //赛事竞猜配置(赛事竞猜玩法必传) Uno *StoreReq_Uno `protobuf:"bytes,47,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置(uno卡牌玩法必传) Event *StoreReq_Event `protobuf:"bytes,48,opt,name=event,proto3" json:"event,omitempty"` //事件配置(活动事件) Gashapon *StoreReq_LotteryConfig `protobuf:"bytes,49,opt,name=gashapon,proto3" json:"gashapon,omitempty"` //扭蛋机配置(扭蛋机玩法必传) GashaponStyle *StoreReq_GashaponStyle `protobuf:"bytes,50,opt,name=gashapon_style,json=gashaponStyle,proto3" json:"gashapon_style,omitempty"` //扭蛋机自定义样式 } func (x *StoreReq) Reset() { *x = StoreReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq) ProtoMessage() {} func (x *StoreReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[8] 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 StoreReq.ProtoReflect.Descriptor instead. func (*StoreReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8} } func (x *StoreReq) GetProjectId() string { if x != nil { return x.ProjectId } return "" } func (x *StoreReq) GetTemplateId() string { if x != nil { return x.TemplateId } return "" } func (x *StoreReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *StoreReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *StoreReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *StoreReq) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *StoreReq) GetConfig() *StoreReq_Config { if x != nil { return x.Config } return nil } func (x *StoreReq) GetCampaignData() []*StoreReq_KV { if x != nil { return x.CampaignData } return nil } func (x *StoreReq) GetPrizeWheel() *StoreReq_LotteryConfig { if x != nil { return x.PrizeWheel } return nil } func (x *StoreReq) GetSlot() *StoreReq_LotteryConfig { if x != nil { return x.Slot } return nil } func (x *StoreReq) GetBlind() *StoreReq_LotteryConfig { if x != nil { return x.Blind } return nil } func (x *StoreReq) GetGrid() *StoreReq_LotteryConfig { if x != nil { return x.Grid } return nil } func (x *StoreReq) GetReferral() *StoreReq_InviteConfig { if x != nil { return x.Referral } return nil } func (x *StoreReq) GetQuestionAnswer() *StoreReq_QuestionAnswer { if x != nil { return x.QuestionAnswer } return nil } func (x *StoreReq) GetQuiz() *StoreReq_Quiz { if x != nil { return x.Quiz } return nil } func (x *StoreReq) GetWin() *StoreReq_InviteConfig { if x != nil { return x.Win } return nil } func (x *StoreReq) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *StoreReq) GetTarget() *StoreReq_Target { if x != nil { return x.Target } return nil } func (x *StoreReq) GetSign() *StoreReq_Sign { if x != nil { return x.Sign } return nil } func (x *StoreReq) GetDice() *StoreReq_Dice { if x != nil { return x.Dice } return nil } func (x *StoreReq) GetGrow() *StoreReq_Grow { if x != nil { return x.Grow } return nil } func (x *StoreReq) GetBallot() *StoreReq_Ballot { if x != nil { return x.Ballot } return nil } func (x *StoreReq) GetChop() *StoreReq_Chop { if x != nil { return x.Chop } return nil } func (x *StoreReq) GetDelayLinkData() []*StoreReq_KV { if x != nil { return x.DelayLinkData } return nil } func (x *StoreReq) GetRewards() *StoreReq_Rewards { if x != nil { return x.Rewards } return nil } func (x *StoreReq) GetRewardsWeb() []*StoreReq_Reward { if x != nil { return x.RewardsWeb } return nil } func (x *StoreReq) GetRewardsExtra() []*StoreReq_Reward { if x != nil { return x.RewardsExtra } return nil } func (x *StoreReq) GetRewardsNewcomer() []*StoreReq_Reward { if x != nil { return x.RewardsNewcomer } return nil } func (x *StoreReq) GetTargetOption() *StoreReq_TargetOption { if x != nil { return x.TargetOption } return nil } func (x *StoreReq) GetCash() *StoreReq_Cash { if x != nil { return x.Cash } return nil } func (x *StoreReq) GetLongImgs() []*StoreReq_LongImg { if x != nil { return x.LongImgs } return nil } func (x *StoreReq) GetFlip() *StoreReq_Flip { if x != nil { return x.Flip } return nil } func (x *StoreReq) GetCopyCampaignId() string { if x != nil { return x.CopyCampaignId } return "" } func (x *StoreReq) GetKeepDog() *StoreReq_Keep { if x != nil { return x.KeepDog } return nil } func (x *StoreReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *StoreReq) GetPush() *StoreReq_Push { if x != nil { return x.Push } return nil } func (x *StoreReq) GetChild() []*StoreReq_Child { if x != nil { return x.Child } return nil } func (x *StoreReq) GetWheelStyle() *StoreReq_WheelStyle { if x != nil { return x.WheelStyle } return nil } func (x *StoreReq) GetGold() *StoreReq_Gold { if x != nil { return x.Gold } return nil } func (x *StoreReq) GetCoin() *StoreReq_Coin { if x != nil { return x.Coin } return nil } func (x *StoreReq) GetGridStyle() *StoreReq_GridStyle { if x != nil { return x.GridStyle } return nil } func (x *StoreReq) GetFlipStyle() *StoreReq_FlipStyle { if x != nil { return x.FlipStyle } return nil } func (x *StoreReq) GetPointsUse() *StoreReq_PointsUse { if x != nil { return x.PointsUse } return nil } func (x *StoreReq) GetChat() *StoreReq_Chat { if x != nil { return x.Chat } return nil } func (x *StoreReq) GetVs() *StoreReq_Vs { if x != nil { return x.Vs } return nil } func (x *StoreReq) GetUno() *StoreReq_Uno { if x != nil { return x.Uno } return nil } func (x *StoreReq) GetEvent() *StoreReq_Event { if x != nil { return x.Event } return nil } func (x *StoreReq) GetGashapon() *StoreReq_LotteryConfig { if x != nil { return x.Gashapon } return nil } func (x *StoreReq) GetGashaponStyle() *StoreReq_GashaponStyle { if x != nil { return x.GashaponStyle } return nil } type StoreRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id } func (x *StoreRes) Reset() { *x = StoreRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreRes) ProtoMessage() {} func (x *StoreRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[9] 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 StoreRes.ProtoReflect.Descriptor instead. func (*StoreRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{9} } func (x *StoreRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *StoreRes) GetHashId() string { if x != nil { return x.HashId } return "" } type UpdateReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 StartTime int64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 CoverUrl string `protobuf:"bytes,6,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` //活动封面图 Config *UpdateReq_Config `protobuf:"bytes,7,opt,name=config,proto3" json:"config,omitempty"` //活动基础配置 CampaignData []*UpdateReq_KV `protobuf:"bytes,8,rep,name=campaign_data,json=campaignData,proto3" json:"campaign_data,omitempty"` //前端组件位置偏移数据 PrizeWheel *UpdateReq_LotteryConfig `protobuf:"bytes,9,opt,name=prize_wheel,json=prizeWheel,proto3" json:"prize_wheel,omitempty"` //大转盘配置(大转盘玩法必传) Slot *UpdateReq_LotteryConfig `protobuf:"bytes,10,opt,name=slot,proto3" json:"slot,omitempty"` //老虎机配置(老虎机玩法必传) Blind *UpdateReq_LotteryConfig `protobuf:"bytes,11,opt,name=blind,proto3" json:"blind,omitempty"` //盲盒配置(盲盒玩法必传) Grid *UpdateReq_LotteryConfig `protobuf:"bytes,12,opt,name=grid,proto3" json:"grid,omitempty"` //九宫格配置(九宫格玩法必传) Referral *UpdateReq_InviteConfig `protobuf:"bytes,13,opt,name=referral,proto3" json:"referral,omitempty"` //老带新配置(老带新玩法必传) QuestionAnswer *UpdateReq_QuestionAnswer `protobuf:"bytes,14,opt,name=question_answer,json=questionAnswer,proto3" json:"question_answer,omitempty"` //趣味问答配置(趣味问答玩法必传) Quiz *UpdateReq_Quiz `protobuf:"bytes,15,opt,name=quiz,proto3" json:"quiz,omitempty"` //有奖竞猜配置(有奖竞猜玩法必传) Win *UpdateReq_InviteConfig `protobuf:"bytes,16,opt,name=win,proto3" json:"win,omitempty"` //一起赢配置(一起赢玩法必传) TOffset int32 `protobuf:"varint,17,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 Target *UpdateReq_Target `protobuf:"bytes,18,opt,name=target,proto3" json:"target,omitempty"` //活动目标 Sign *UpdateReq_Sign `protobuf:"bytes,19,opt,name=sign,proto3" json:"sign,omitempty"` //签到配置(签到玩法必传) Dice *UpdateReq_Dice `protobuf:"bytes,20,opt,name=dice,proto3" json:"dice,omitempty"` //大富翁配置(大富翁玩法必传) Grow *UpdateReq_Grow `protobuf:"bytes,21,opt,name=grow,proto3" json:"grow,omitempty"` //农场配置(农场玩法必传) Ballot *UpdateReq_Ballot `protobuf:"bytes,22,opt,name=ballot,proto3" json:"ballot,omitempty"` //抽签配置(抽签玩法必传) Chop *UpdateReq_Chop `protobuf:"bytes,23,opt,name=chop,proto3" json:"chop,omitempty"` //砍一刀配置(砍一刀玩法必传) DelayLinkData []*UpdateReq_KV `protobuf:"bytes,24,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义键值数据 Rewards *UpdateReq_Rewards `protobuf:"bytes,25,opt,name=rewards,proto3" json:"rewards,omitempty"` //站内奖品 RewardsWeb []*UpdateReq_Reward `protobuf:"bytes,26,rep,name=rewards_web,json=rewardsWeb,proto3" json:"rewards_web,omitempty"` //站外奖品 RewardsExtra []*UpdateReq_Reward `protobuf:"bytes,27,rep,name=rewards_extra,json=rewardsExtra,proto3" json:"rewards_extra,omitempty"` //额外奖品 RewardsNewcomer []*UpdateReq_Reward `protobuf:"bytes,28,rep,name=rewards_newcomer,json=rewardsNewcomer,proto3" json:"rewards_newcomer,omitempty"` //新人奖 UserId int64 `protobuf:"varint,29,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //id Ip string `protobuf:"bytes,30,opt,name=ip,proto3" json:"ip,omitempty"` //操作ip TargetOption *UpdateReq_TargetOption `protobuf:"bytes,31,opt,name=target_option,json=targetOption,proto3" json:"target_option,omitempty"` //目标配置选项 Cash *UpdateReq_Cash `protobuf:"bytes,32,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置(现金抽奖玩法必传) LongImgs []*UpdateReq_LongImg `protobuf:"bytes,33,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Flip *UpdateReq_Flip `protobuf:"bytes,34,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) KeepDog *UpdateReq_Keep `protobuf:"bytes,35,opt,name=keep_dog,json=keepDog,proto3" json:"keep_dog,omitempty"` //养狗(养狗配置必传) Push *UpdateReq_Push `protobuf:"bytes,36,opt,name=push,proto3" json:"push,omitempty"` //推送配置 Child []*UpdateReq_Child `protobuf:"bytes,37,rep,name=child,proto3" json:"child,omitempty"` //关联的子活动 WheelStyle *UpdateReq_WheelStyle `protobuf:"bytes,38,opt,name=wheel_style,json=wheelStyle,proto3" json:"wheel_style,omitempty"` //转盘自定义样式 Gold *UpdateReq_Gold `protobuf:"bytes,39,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置(金币任务玩法必传) Coin *UpdateReq_Coin `protobuf:"bytes,40,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置(金币池玩法必传) GridStyle *UpdateReq_GridStyle `protobuf:"bytes,41,opt,name=grid_style,json=gridStyle,proto3" json:"grid_style,omitempty"` //九宫格自定义样式 FlipStyle *UpdateReq_FlipStyle `protobuf:"bytes,42,opt,name=flip_style,json=flipStyle,proto3" json:"flip_style,omitempty"` //翻牌自定义样式 PointsUse *UpdateReq_PointsUse `protobuf:"bytes,43,opt,name=points_use,json=pointsUse,proto3" json:"points_use,omitempty"` //积分消耗 Chat *UpdateReq_Chat `protobuf:"bytes,44,opt,name=chat,proto3" json:"chat,omitempty"` //ai陪伴 Vs *UpdateReq_Vs `protobuf:"bytes,45,opt,name=vs,proto3" json:"vs,omitempty"` //赛事竞猜配置(赛事竞猜玩法必传) Uno *UpdateReq_Uno `protobuf:"bytes,46,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置(uno卡牌玩法必传) Event *UpdateReq_Event `protobuf:"bytes,47,opt,name=event,proto3" json:"event,omitempty"` //事件配置(活动事件) Gashapon *UpdateReq_LotteryConfig `protobuf:"bytes,48,opt,name=gashapon,proto3" json:"gashapon,omitempty"` //扭蛋机配置(扭蛋机玩法必传) GashaponStyle *UpdateReq_GashaponStyle `protobuf:"bytes,49,opt,name=gashapon_style,json=gashaponStyle,proto3" json:"gashapon_style,omitempty"` //扭蛋机自定义样式 } func (x *UpdateReq) Reset() { *x = UpdateReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq) ProtoMessage() {} func (x *UpdateReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[10] 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 UpdateReq.ProtoReflect.Descriptor instead. func (*UpdateReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10} } func (x *UpdateReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *UpdateReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *UpdateReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *UpdateReq) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *UpdateReq) GetConfig() *UpdateReq_Config { if x != nil { return x.Config } return nil } func (x *UpdateReq) GetCampaignData() []*UpdateReq_KV { if x != nil { return x.CampaignData } return nil } func (x *UpdateReq) GetPrizeWheel() *UpdateReq_LotteryConfig { if x != nil { return x.PrizeWheel } return nil } func (x *UpdateReq) GetSlot() *UpdateReq_LotteryConfig { if x != nil { return x.Slot } return nil } func (x *UpdateReq) GetBlind() *UpdateReq_LotteryConfig { if x != nil { return x.Blind } return nil } func (x *UpdateReq) GetGrid() *UpdateReq_LotteryConfig { if x != nil { return x.Grid } return nil } func (x *UpdateReq) GetReferral() *UpdateReq_InviteConfig { if x != nil { return x.Referral } return nil } func (x *UpdateReq) GetQuestionAnswer() *UpdateReq_QuestionAnswer { if x != nil { return x.QuestionAnswer } return nil } func (x *UpdateReq) GetQuiz() *UpdateReq_Quiz { if x != nil { return x.Quiz } return nil } func (x *UpdateReq) GetWin() *UpdateReq_InviteConfig { if x != nil { return x.Win } return nil } func (x *UpdateReq) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *UpdateReq) GetTarget() *UpdateReq_Target { if x != nil { return x.Target } return nil } func (x *UpdateReq) GetSign() *UpdateReq_Sign { if x != nil { return x.Sign } return nil } func (x *UpdateReq) GetDice() *UpdateReq_Dice { if x != nil { return x.Dice } return nil } func (x *UpdateReq) GetGrow() *UpdateReq_Grow { if x != nil { return x.Grow } return nil } func (x *UpdateReq) GetBallot() *UpdateReq_Ballot { if x != nil { return x.Ballot } return nil } func (x *UpdateReq) GetChop() *UpdateReq_Chop { if x != nil { return x.Chop } return nil } func (x *UpdateReq) GetDelayLinkData() []*UpdateReq_KV { if x != nil { return x.DelayLinkData } return nil } func (x *UpdateReq) GetRewards() *UpdateReq_Rewards { if x != nil { return x.Rewards } return nil } func (x *UpdateReq) GetRewardsWeb() []*UpdateReq_Reward { if x != nil { return x.RewardsWeb } return nil } func (x *UpdateReq) GetRewardsExtra() []*UpdateReq_Reward { if x != nil { return x.RewardsExtra } return nil } func (x *UpdateReq) GetRewardsNewcomer() []*UpdateReq_Reward { if x != nil { return x.RewardsNewcomer } return nil } func (x *UpdateReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *UpdateReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *UpdateReq) GetTargetOption() *UpdateReq_TargetOption { if x != nil { return x.TargetOption } return nil } func (x *UpdateReq) GetCash() *UpdateReq_Cash { if x != nil { return x.Cash } return nil } func (x *UpdateReq) GetLongImgs() []*UpdateReq_LongImg { if x != nil { return x.LongImgs } return nil } func (x *UpdateReq) GetFlip() *UpdateReq_Flip { if x != nil { return x.Flip } return nil } func (x *UpdateReq) GetKeepDog() *UpdateReq_Keep { if x != nil { return x.KeepDog } return nil } func (x *UpdateReq) GetPush() *UpdateReq_Push { if x != nil { return x.Push } return nil } func (x *UpdateReq) GetChild() []*UpdateReq_Child { if x != nil { return x.Child } return nil } func (x *UpdateReq) GetWheelStyle() *UpdateReq_WheelStyle { if x != nil { return x.WheelStyle } return nil } func (x *UpdateReq) GetGold() *UpdateReq_Gold { if x != nil { return x.Gold } return nil } func (x *UpdateReq) GetCoin() *UpdateReq_Coin { if x != nil { return x.Coin } return nil } func (x *UpdateReq) GetGridStyle() *UpdateReq_GridStyle { if x != nil { return x.GridStyle } return nil } func (x *UpdateReq) GetFlipStyle() *UpdateReq_FlipStyle { if x != nil { return x.FlipStyle } return nil } func (x *UpdateReq) GetPointsUse() *UpdateReq_PointsUse { if x != nil { return x.PointsUse } return nil } func (x *UpdateReq) GetChat() *UpdateReq_Chat { if x != nil { return x.Chat } return nil } func (x *UpdateReq) GetVs() *UpdateReq_Vs { if x != nil { return x.Vs } return nil } func (x *UpdateReq) GetUno() *UpdateReq_Uno { if x != nil { return x.Uno } return nil } func (x *UpdateReq) GetEvent() *UpdateReq_Event { if x != nil { return x.Event } return nil } func (x *UpdateReq) GetGashapon() *UpdateReq_LotteryConfig { if x != nil { return x.Gashapon } return nil } func (x *UpdateReq) GetGashaponStyle() *UpdateReq_GashaponStyle { if x != nil { return x.GashaponStyle } return nil } type UpdateRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id AddTask bool `protobuf:"varint,3,opt,name=add_task,json=addTask,proto3" json:"add_task,omitempty"` //新加了任务 } func (x *UpdateRes) Reset() { *x = UpdateRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateRes) ProtoMessage() {} func (x *UpdateRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[11] 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 UpdateRes.ProtoReflect.Descriptor instead. func (*UpdateRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{11} } func (x *UpdateRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *UpdateRes) GetAddTask() bool { if x != nil { return x.AddTask } return false } type ShowReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动gid HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id NotReward bool `protobuf:"varint,3,opt,name=not_reward,json=notReward,proto3" json:"not_reward,omitempty"` //不需要奖品 } func (x *ShowReq) Reset() { *x = ShowReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowReq) ProtoMessage() {} func (x *ShowReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[12] 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 ShowReq.ProtoReflect.Descriptor instead. func (*ShowReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{12} } func (x *ShowReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ShowReq) GetNotReward() bool { if x != nil { return x.NotReward } return false } type ShowRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动gid HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 StartTime int64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线) FissionMark string `protobuf:"bytes,7,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //活动类型玩法标识 TempId int64 `protobuf:"varint,8,opt,name=temp_id,json=tempId,proto3" json:"temp_id,omitempty"` //模版id ProjectId int64 `protobuf:"varint,9,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //模版id CoverUrl string `protobuf:"bytes,10,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` //活动封面图 Config *ShowRes_Config `protobuf:"bytes,11,opt,name=config,proto3" json:"config,omitempty"` //活动基础配置 Share []*ShowRes_Share `protobuf:"bytes,12,rep,name=share,proto3" json:"share,omitempty"` //选择的社媒 CampaignData []*ShowRes_KV `protobuf:"bytes,13,rep,name=campaign_data,json=campaignData,proto3" json:"campaign_data,omitempty"` //前端组件位置偏移数据 PrizeWheel *ShowRes_LotteryConfig `protobuf:"bytes,14,opt,name=prize_wheel,json=prizeWheel,proto3" json:"prize_wheel,omitempty"` //大转盘配置(大转盘玩法必传) Slot *ShowRes_LotteryConfig `protobuf:"bytes,15,opt,name=slot,proto3" json:"slot,omitempty"` //老虎机配置(老虎机玩法必传) Blind *ShowRes_LotteryConfig `protobuf:"bytes,16,opt,name=blind,proto3" json:"blind,omitempty"` //盲盒配置(盲盒玩法必传) Grid *ShowRes_LotteryConfig `protobuf:"bytes,17,opt,name=grid,proto3" json:"grid,omitempty"` //九宫格配置(九宫格玩法必传) Referral *ShowRes_InviteConfig `protobuf:"bytes,18,opt,name=referral,proto3" json:"referral,omitempty"` //老带新配置(老带新玩法必传) QuestionAnswer *ShowRes_QuestionAnswer `protobuf:"bytes,19,opt,name=question_answer,json=questionAnswer,proto3" json:"question_answer,omitempty"` //趣味问答配置(趣味问答玩法必传) Quiz *ShowRes_Quiz `protobuf:"bytes,20,opt,name=quiz,proto3" json:"quiz,omitempty"` //有奖竞猜配置(有奖竞猜玩法必传) Win *ShowRes_InviteConfig `protobuf:"bytes,21,opt,name=win,proto3" json:"win,omitempty"` //一起赢配置(一起赢玩法必传) TOffset int32 `protobuf:"varint,22,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 TStart int64 `protobuf:"varint,23,opt,name=t_start,json=tStart,proto3" json:"t_start,omitempty"` //展示的开始时间时间戳 TEnd int64 `protobuf:"varint,24,opt,name=t_end,json=tEnd,proto3" json:"t_end,omitempty"` //展示的结束时间时间戳 Target *ShowRes_Target `protobuf:"bytes,25,opt,name=target,proto3" json:"target,omitempty"` //活动目标 Sign *ShowRes_Sign `protobuf:"bytes,26,opt,name=sign,proto3" json:"sign,omitempty"` //签到配置(签到玩法必传) Dice *ShowRes_Dice `protobuf:"bytes,27,opt,name=dice,proto3" json:"dice,omitempty"` //大富翁配置(大富翁玩法必传) Grow *ShowRes_Grow `protobuf:"bytes,28,opt,name=grow,proto3" json:"grow,omitempty"` //农场配置(农场玩法必传) Ballot *ShowRes_Ballot `protobuf:"bytes,29,opt,name=ballot,proto3" json:"ballot,omitempty"` //抽签配置(抽签玩法必传) Chop *ShowRes_Chop `protobuf:"bytes,30,opt,name=chop,proto3" json:"chop,omitempty"` //砍一刀配置(砍一刀玩法必传) DelayLinkData []*ShowRes_KV `protobuf:"bytes,31,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义键值数据 Rewards *ShowRes_Rewards `protobuf:"bytes,32,opt,name=rewards,proto3" json:"rewards,omitempty"` //站内奖品 RewardsWeb []*ShowRes_Reward `protobuf:"bytes,33,rep,name=rewards_web,json=rewardsWeb,proto3" json:"rewards_web,omitempty"` //站外奖品 RewardsExtra []*ShowRes_Reward `protobuf:"bytes,34,rep,name=rewards_extra,json=rewardsExtra,proto3" json:"rewards_extra,omitempty"` //额外奖品 RewardsNewcomer []*ShowRes_Reward `protobuf:"bytes,35,rep,name=rewards_newcomer,json=rewardsNewcomer,proto3" json:"rewards_newcomer,omitempty"` //新人奖 LangMarks []string `protobuf:"bytes,36,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //支持的语种 TargetOption *ShowRes_TargetOption `protobuf:"bytes,37,opt,name=target_option,json=targetOption,proto3" json:"target_option,omitempty"` //目标配置选项 Cash *ShowRes_Cash `protobuf:"bytes,38,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置(现金抽奖玩法必传) LongImgs []*ShowRes_LongImg `protobuf:"bytes,39,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Flip *ShowRes_Flip `protobuf:"bytes,40,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) KeepDog *ShowRes_Keep `protobuf:"bytes,41,opt,name=keep_dog,json=keepDog,proto3" json:"keep_dog,omitempty"` //养狗(养狗配置必传) Push *ShowRes_Push `protobuf:"bytes,42,opt,name=push,proto3" json:"push,omitempty"` //推送配置 Child []*ShowRes_Child `protobuf:"bytes,43,rep,name=child,proto3" json:"child,omitempty"` //关联的子活动 WheelStyle *ShowRes_WheelStyle `protobuf:"bytes,44,opt,name=wheel_style,json=wheelStyle,proto3" json:"wheel_style,omitempty"` //转盘自定义样式 Gold *ShowRes_Gold `protobuf:"bytes,45,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置(金币任务玩法必传) FissionId int64 `protobuf:"varint,46,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法id Coin *ShowRes_Coin `protobuf:"bytes,47,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置(金币池玩法必传) GridStyle *ShowRes_GridStyle `protobuf:"bytes,48,opt,name=grid_style,json=gridStyle,proto3" json:"grid_style,omitempty"` //九宫格自定义样式 FlipStyle *ShowRes_FlipStyle `protobuf:"bytes,49,opt,name=flip_style,json=flipStyle,proto3" json:"flip_style,omitempty"` //翻牌自定义样式 PointsUse *ShowRes_PointsUse `protobuf:"bytes,50,opt,name=points_use,json=pointsUse,proto3" json:"points_use,omitempty"` //积分消耗 Chat *ShowRes_Chat `protobuf:"bytes,51,opt,name=chat,proto3" json:"chat,omitempty"` //ai陪伴 Vs *ShowRes_Vs `protobuf:"bytes,52,opt,name=vs,proto3" json:"vs,omitempty"` //赛事竞猜配置(赛事竞猜玩法必传) Uno *ShowRes_Uno `protobuf:"bytes,53,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置(uno卡牌玩法必传) Event *ShowRes_Event `protobuf:"bytes,54,opt,name=event,proto3" json:"event,omitempty"` //事件配置(活动事件) Gashapon *ShowRes_LotteryConfig `protobuf:"bytes,55,opt,name=gashapon,proto3" json:"gashapon,omitempty"` //扭蛋机配置(扭蛋机玩法必传) GashaponStyle *ShowRes_GashaponStyle `protobuf:"bytes,56,opt,name=gashapon_style,json=gashaponStyle,proto3" json:"gashapon_style,omitempty"` //扭蛋机自定义样式 } func (x *ShowRes) Reset() { *x = ShowRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes) ProtoMessage() {} func (x *ShowRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[13] 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 ShowRes.ProtoReflect.Descriptor instead. func (*ShowRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13} } func (x *ShowRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ShowRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *ShowRes) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *ShowRes) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ShowRes) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *ShowRes) GetTempId() int64 { if x != nil { return x.TempId } return 0 } func (x *ShowRes) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *ShowRes) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *ShowRes) GetConfig() *ShowRes_Config { if x != nil { return x.Config } return nil } func (x *ShowRes) GetShare() []*ShowRes_Share { if x != nil { return x.Share } return nil } func (x *ShowRes) GetCampaignData() []*ShowRes_KV { if x != nil { return x.CampaignData } return nil } func (x *ShowRes) GetPrizeWheel() *ShowRes_LotteryConfig { if x != nil { return x.PrizeWheel } return nil } func (x *ShowRes) GetSlot() *ShowRes_LotteryConfig { if x != nil { return x.Slot } return nil } func (x *ShowRes) GetBlind() *ShowRes_LotteryConfig { if x != nil { return x.Blind } return nil } func (x *ShowRes) GetGrid() *ShowRes_LotteryConfig { if x != nil { return x.Grid } return nil } func (x *ShowRes) GetReferral() *ShowRes_InviteConfig { if x != nil { return x.Referral } return nil } func (x *ShowRes) GetQuestionAnswer() *ShowRes_QuestionAnswer { if x != nil { return x.QuestionAnswer } return nil } func (x *ShowRes) GetQuiz() *ShowRes_Quiz { if x != nil { return x.Quiz } return nil } func (x *ShowRes) GetWin() *ShowRes_InviteConfig { if x != nil { return x.Win } return nil } func (x *ShowRes) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *ShowRes) GetTStart() int64 { if x != nil { return x.TStart } return 0 } func (x *ShowRes) GetTEnd() int64 { if x != nil { return x.TEnd } return 0 } func (x *ShowRes) GetTarget() *ShowRes_Target { if x != nil { return x.Target } return nil } func (x *ShowRes) GetSign() *ShowRes_Sign { if x != nil { return x.Sign } return nil } func (x *ShowRes) GetDice() *ShowRes_Dice { if x != nil { return x.Dice } return nil } func (x *ShowRes) GetGrow() *ShowRes_Grow { if x != nil { return x.Grow } return nil } func (x *ShowRes) GetBallot() *ShowRes_Ballot { if x != nil { return x.Ballot } return nil } func (x *ShowRes) GetChop() *ShowRes_Chop { if x != nil { return x.Chop } return nil } func (x *ShowRes) GetDelayLinkData() []*ShowRes_KV { if x != nil { return x.DelayLinkData } return nil } func (x *ShowRes) GetRewards() *ShowRes_Rewards { if x != nil { return x.Rewards } return nil } func (x *ShowRes) GetRewardsWeb() []*ShowRes_Reward { if x != nil { return x.RewardsWeb } return nil } func (x *ShowRes) GetRewardsExtra() []*ShowRes_Reward { if x != nil { return x.RewardsExtra } return nil } func (x *ShowRes) GetRewardsNewcomer() []*ShowRes_Reward { if x != nil { return x.RewardsNewcomer } return nil } func (x *ShowRes) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ShowRes) GetTargetOption() *ShowRes_TargetOption { if x != nil { return x.TargetOption } return nil } func (x *ShowRes) GetCash() *ShowRes_Cash { if x != nil { return x.Cash } return nil } func (x *ShowRes) GetLongImgs() []*ShowRes_LongImg { if x != nil { return x.LongImgs } return nil } func (x *ShowRes) GetFlip() *ShowRes_Flip { if x != nil { return x.Flip } return nil } func (x *ShowRes) GetKeepDog() *ShowRes_Keep { if x != nil { return x.KeepDog } return nil } func (x *ShowRes) GetPush() *ShowRes_Push { if x != nil { return x.Push } return nil } func (x *ShowRes) GetChild() []*ShowRes_Child { if x != nil { return x.Child } return nil } func (x *ShowRes) GetWheelStyle() *ShowRes_WheelStyle { if x != nil { return x.WheelStyle } return nil } func (x *ShowRes) GetGold() *ShowRes_Gold { if x != nil { return x.Gold } return nil } func (x *ShowRes) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ShowRes) GetCoin() *ShowRes_Coin { if x != nil { return x.Coin } return nil } func (x *ShowRes) GetGridStyle() *ShowRes_GridStyle { if x != nil { return x.GridStyle } return nil } func (x *ShowRes) GetFlipStyle() *ShowRes_FlipStyle { if x != nil { return x.FlipStyle } return nil } func (x *ShowRes) GetPointsUse() *ShowRes_PointsUse { if x != nil { return x.PointsUse } return nil } func (x *ShowRes) GetChat() *ShowRes_Chat { if x != nil { return x.Chat } return nil } func (x *ShowRes) GetVs() *ShowRes_Vs { if x != nil { return x.Vs } return nil } func (x *ShowRes) GetUno() *ShowRes_Uno { if x != nil { return x.Uno } return nil } func (x *ShowRes) GetEvent() *ShowRes_Event { if x != nil { return x.Event } return nil } func (x *ShowRes) GetGashapon() *ShowRes_LotteryConfig { if x != nil { return x.Gashapon } return nil } func (x *ShowRes) GetGashaponStyle() *ShowRes_GashaponStyle { if x != nil { return x.GashaponStyle } return nil } type ChannelListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id CampaignHashId string `protobuf:"bytes,2,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动对外id } func (x *ChannelListReq) Reset() { *x = ChannelListReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelListReq) ProtoMessage() {} func (x *ChannelListReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[14] 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 ChannelListReq.ProtoReflect.Descriptor instead. func (*ChannelListReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{14} } func (x *ChannelListReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } func (x *ChannelListReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } type ChannelListRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*ChannelListRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //站内渠道列表数据 WebList []*ChannelListRes_One `protobuf:"bytes,2,rep,name=web_list,json=webList,proto3" json:"web_list,omitempty"` //站外渠道列表数据 } func (x *ChannelListRes) Reset() { *x = ChannelListRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelListRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelListRes) ProtoMessage() {} func (x *ChannelListRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[15] 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 ChannelListRes.ProtoReflect.Descriptor instead. func (*ChannelListRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{15} } func (x *ChannelListRes) GetList() []*ChannelListRes_One { if x != nil { return x.List } return nil } func (x *ChannelListRes) GetWebList() []*ChannelListRes_One { if x != nil { return x.WebList } return nil } type ChannelCreateReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id CampaignHashId string `protobuf:"bytes,2,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //渠道名称 CType int32 `protobuf:"varint,4,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` //渠道类型(1-站内渠道,2-站外渠道) } func (x *ChannelCreateReq) Reset() { *x = ChannelCreateReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelCreateReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelCreateReq) ProtoMessage() {} func (x *ChannelCreateReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[16] 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 ChannelCreateReq.ProtoReflect.Descriptor instead. func (*ChannelCreateReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{16} } func (x *ChannelCreateReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } func (x *ChannelCreateReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } func (x *ChannelCreateReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChannelCreateReq) GetCType() int32 { if x != nil { return x.CType } return 0 } type ChannelCreateRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //渠道id Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` //渠道链接 } func (x *ChannelCreateRes) Reset() { *x = ChannelCreateRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelCreateRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelCreateRes) ProtoMessage() {} func (x *ChannelCreateRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[17] 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 ChannelCreateRes.ProtoReflect.Descriptor instead. func (*ChannelCreateRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{17} } func (x *ChannelCreateRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChannelCreateRes) GetUrl() string { if x != nil { return x.Url } return "" } type ChannelUpdateReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //渠道id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //渠道名称 } func (x *ChannelUpdateReq) Reset() { *x = ChannelUpdateReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelUpdateReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelUpdateReq) ProtoMessage() {} func (x *ChannelUpdateReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[18] 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 ChannelUpdateReq.ProtoReflect.Descriptor instead. func (*ChannelUpdateReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{18} } func (x *ChannelUpdateReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChannelUpdateReq) GetTitle() string { if x != nil { return x.Title } return "" } type ChannelUpdateRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChannelUpdateRes) Reset() { *x = ChannelUpdateRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelUpdateRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelUpdateRes) ProtoMessage() {} func (x *ChannelUpdateRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[19] 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 ChannelUpdateRes.ProtoReflect.Descriptor instead. func (*ChannelUpdateRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{19} } type ChannelDestroyReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //渠道id } func (x *ChannelDestroyReq) Reset() { *x = ChannelDestroyReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelDestroyReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelDestroyReq) ProtoMessage() {} func (x *ChannelDestroyReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[20] 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 ChannelDestroyReq.ProtoReflect.Descriptor instead. func (*ChannelDestroyReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{20} } func (x *ChannelDestroyReq) GetId() int64 { if x != nil { return x.Id } return 0 } type ChannelDestroyRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChannelDestroyRes) Reset() { *x = ChannelDestroyRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelDestroyRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelDestroyRes) ProtoMessage() {} func (x *ChannelDestroyRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[21] 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 ChannelDestroyRes.ProtoReflect.Descriptor instead. func (*ChannelDestroyRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{21} } type KvDataReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id } func (x *KvDataReq) Reset() { *x = KvDataReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KvDataReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*KvDataReq) ProtoMessage() {} func (x *KvDataReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[22] 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 KvDataReq.ProtoReflect.Descriptor instead. func (*KvDataReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{22} } func (x *KvDataReq) GetId() int64 { if x != nil { return x.Id } return 0 } type KvDataRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Kv []*KvDataRes_KV `protobuf:"bytes,1,rep,name=kv,proto3" json:"kv,omitempty"` //活动键值对 } func (x *KvDataRes) Reset() { *x = KvDataRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KvDataRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*KvDataRes) ProtoMessage() {} func (x *KvDataRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[23] 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 KvDataRes.ProtoReflect.Descriptor instead. func (*KvDataRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{23} } func (x *KvDataRes) GetKv() []*KvDataRes_KV { if x != nil { return x.Kv } return nil } type CertReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动 ProjectId int64 `protobuf:"varint,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id ProjectHashId string `protobuf:"bytes,4,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id } func (x *CertReq) Reset() { *x = CertReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CertReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CertReq) ProtoMessage() {} func (x *CertReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[24] 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 CertReq.ProtoReflect.Descriptor instead. func (*CertReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{24} } func (x *CertReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CertReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *CertReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *CertReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } type CertRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Cert bool `protobuf:"varint,1,opt,name=cert,proto3" json:"cert,omitempty"` //认证失败 Id int64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,3,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动 ProjectId int64 `protobuf:"varint,4,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id ProjectHashId string `protobuf:"bytes,5,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` //活动标题 } func (x *CertRes) Reset() { *x = CertRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CertRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CertRes) ProtoMessage() {} func (x *CertRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[25] 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 CertRes.ProtoReflect.Descriptor instead. func (*CertRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{25} } func (x *CertRes) GetCert() bool { if x != nil { return x.Cert } return false } func (x *CertRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CertRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *CertRes) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *CertRes) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *CertRes) GetTitle() string { if x != nil { return x.Title } return "" } type BarrageReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动 LangMark string `protobuf:"bytes,3,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语种标识 Lv string `protobuf:"bytes,4,opt,name=lv,proto3" json:"lv,omitempty"` //用户等级标识 ShowLang string `protobuf:"bytes,5,opt,name=show_lang,json=showLang,proto3" json:"show_lang,omitempty"` //展示的语种 CountryMark string `protobuf:"bytes,6,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 UserId int64 `protobuf:"varint,7,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //用户id } func (x *BarrageReq) Reset() { *x = BarrageReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BarrageReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BarrageReq) ProtoMessage() {} func (x *BarrageReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[26] 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 BarrageReq.ProtoReflect.Descriptor instead. func (*BarrageReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{26} } func (x *BarrageReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *BarrageReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *BarrageReq) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *BarrageReq) GetLv() string { if x != nil { return x.Lv } return "" } func (x *BarrageReq) GetShowLang() string { if x != nil { return x.ShowLang } return "" } func (x *BarrageReq) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *BarrageReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } type BarrageRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Content []string `protobuf:"bytes,1,rep,name=content,proto3" json:"content,omitempty"` //内容 TranContent []*BarrageRes_TranContent `protobuf:"bytes,2,rep,name=tran_content,json=tranContent,proto3" json:"tran_content,omitempty"` //内容 } func (x *BarrageRes) Reset() { *x = BarrageRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BarrageRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*BarrageRes) ProtoMessage() {} func (x *BarrageRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[27] 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 BarrageRes.ProtoReflect.Descriptor instead. func (*BarrageRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{27} } func (x *BarrageRes) GetContent() []string { if x != nil { return x.Content } return nil } func (x *BarrageRes) GetTranContent() []*BarrageRes_TranContent { if x != nil { return x.TranContent } return nil } type OptionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动 } func (x *OptionReq) Reset() { *x = OptionReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OptionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*OptionReq) ProtoMessage() {} func (x *OptionReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[28] 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 OptionReq.ProtoReflect.Descriptor instead. func (*OptionReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{28} } func (x *OptionReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *OptionReq) GetHashId() string { if x != nil { return x.HashId } return "" } type OptionRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Options []*OptionRes_Option `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` //内容 RightId int64 `protobuf:"varint,2,opt,name=right_id,json=rightId,proto3" json:"right_id,omitempty"` //开奖后正确选项,只有开奖后才有数据 } func (x *OptionRes) Reset() { *x = OptionRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OptionRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*OptionRes) ProtoMessage() {} func (x *OptionRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[29] 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 OptionRes.ProtoReflect.Descriptor instead. func (*OptionRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{29} } func (x *OptionRes) GetOptions() []*OptionRes_Option { if x != nil { return x.Options } return nil } func (x *OptionRes) GetRightId() int64 { if x != nil { return x.RightId } return 0 } type RelateDdlReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id ProjectHashId string `protobuf:"bytes,2,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id Close bool `protobuf:"varint,3,opt,name=close,proto3" json:"close,omitempty"` //是否关闭 } func (x *RelateDdlReq) Reset() { *x = RelateDdlReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RelateDdlReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RelateDdlReq) ProtoMessage() {} func (x *RelateDdlReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[30] 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 RelateDdlReq.ProtoReflect.Descriptor instead. func (*RelateDdlReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{30} } func (x *RelateDdlReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *RelateDdlReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *RelateDdlReq) GetClose() bool { if x != nil { return x.Close } return false } type RelateDdlRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RelateDdlRes) Reset() { *x = RelateDdlRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RelateDdlRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*RelateDdlRes) ProtoMessage() {} func (x *RelateDdlRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[31] 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 RelateDdlRes.ProtoReflect.Descriptor instead. func (*RelateDdlRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{31} } type DdlCampaignReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectHashId string `protobuf:"bytes,1,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id } func (x *DdlCampaignReq) Reset() { *x = DdlCampaignReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DdlCampaignReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DdlCampaignReq) ProtoMessage() {} func (x *DdlCampaignReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[32] 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 DdlCampaignReq.ProtoReflect.Descriptor instead. func (*DdlCampaignReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{32} } func (x *DdlCampaignReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } type DdlCampaignRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //活动标题 Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线) } func (x *DdlCampaignRes) Reset() { *x = DdlCampaignRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DdlCampaignRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*DdlCampaignRes) ProtoMessage() {} func (x *DdlCampaignRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[33] 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 DdlCampaignRes.ProtoReflect.Descriptor instead. func (*DdlCampaignRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{33} } func (x *DdlCampaignRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *DdlCampaignRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *DdlCampaignRes) GetStatus() int32 { if x != nil { return x.Status } return 0 } type LangsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignHashId string `protobuf:"bytes,1,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id } func (x *LangsReq) Reset() { *x = LangsReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsReq) ProtoMessage() {} func (x *LangsReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[34] 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 LangsReq.ProtoReflect.Descriptor instead. func (*LangsReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{34} } func (x *LangsReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } type LangsRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HasWeb bool `protobuf:"varint,1,opt,name=has_web,json=hasWeb,proto3" json:"has_web,omitempty"` //是否开启站外 HasWarn bool `protobuf:"varint,2,opt,name=has_warn,json=hasWarn,proto3" json:"has_warn,omitempty"` //是否开启预热 DlType int32 `protobuf:"varint,3,opt,name=dl_type,json=dlType,proto3" json:"dl_type,omitempty"` //下载引导页类型(1-通用,2-自定义多媒体) DlBannerType int32 `protobuf:"varint,4,opt,name=dl_banner_type,json=dlBannerType,proto3" json:"dl_banner_type,omitempty"` //下载页横幅类型(1-默认,2-自定义) WindowCover int32 `protobuf:"varint,5,opt,name=window_cover,json=windowCover,proto3" json:"window_cover,omitempty"` //是否开启全屏封面(0-关闭,1-开启) RewardGroup int32 `protobuf:"varint,6,opt,name=reward_group,json=rewardGroup,proto3" json:"reward_group,omitempty"` //奖品分组类型(1-常规奖品,2-用户类型奖品,3-语言奖品,4-语言+用户类型奖品) Langs []*LangsRes_Lang `protobuf:"bytes,7,rep,name=langs,proto3" json:"langs,omitempty"` //语言列表 NotSupport []*LangsRes_Lang `protobuf:"bytes,8,rep,name=not_support,json=notSupport,proto3" json:"not_support,omitempty"` //不支持的语言列表 FissionMark string `protobuf:"bytes,9,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //玩法标识 TempGroupMark string `protobuf:"bytes,10,opt,name=temp_group_mark,json=tempGroupMark,proto3" json:"temp_group_mark,omitempty"` //模版组标识 HasLongImg bool `protobuf:"varint,11,opt,name=has_long_img,json=hasLongImg,proto3" json:"has_long_img,omitempty"` //是否开启长图 RuleType int32 `protobuf:"varint,12,opt,name=rule_type,json=ruleType,proto3" json:"rule_type,omitempty"` //规则展示类型(0-文本,1-图片) Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title,omitempty"` //活动标题 FissionMarkTitle string `protobuf:"bytes,14,opt,name=fission_mark_title,json=fissionMarkTitle,proto3" json:"fission_mark_title,omitempty"` //玩法标识说明 } func (x *LangsRes) Reset() { *x = LangsRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes) ProtoMessage() {} func (x *LangsRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[35] 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 LangsRes.ProtoReflect.Descriptor instead. func (*LangsRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35} } func (x *LangsRes) GetHasWeb() bool { if x != nil { return x.HasWeb } return false } func (x *LangsRes) GetHasWarn() bool { if x != nil { return x.HasWarn } return false } func (x *LangsRes) GetDlType() int32 { if x != nil { return x.DlType } return 0 } func (x *LangsRes) GetDlBannerType() int32 { if x != nil { return x.DlBannerType } return 0 } func (x *LangsRes) GetWindowCover() int32 { if x != nil { return x.WindowCover } return 0 } func (x *LangsRes) GetRewardGroup() int32 { if x != nil { return x.RewardGroup } return 0 } func (x *LangsRes) GetLangs() []*LangsRes_Lang { if x != nil { return x.Langs } return nil } func (x *LangsRes) GetNotSupport() []*LangsRes_Lang { if x != nil { return x.NotSupport } return nil } func (x *LangsRes) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *LangsRes) GetTempGroupMark() string { if x != nil { return x.TempGroupMark } return "" } func (x *LangsRes) GetHasLongImg() bool { if x != nil { return x.HasLongImg } return false } func (x *LangsRes) GetRuleType() int32 { if x != nil { return x.RuleType } return 0 } func (x *LangsRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes) GetFissionMarkTitle() string { if x != nil { return x.FissionMarkTitle } return "" } type LangReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id LangMark string `protobuf:"bytes,2,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言对应的唯一标识 } func (x *LangReq) Reset() { *x = LangReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangReq) ProtoMessage() {} func (x *LangReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[36] 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 LangReq.ProtoReflect.Descriptor instead. func (*LangReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{36} } func (x *LangReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } func (x *LangReq) GetLangMark() string { if x != nil { return x.LangMark } return "" } type LangRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //语言配置信息ID PageTitle string `protobuf:"bytes,2,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 ImageMain string `protobuf:"bytes,3,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 DownloadPageImage string `protobuf:"bytes,4,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 WechatPageImage string `protobuf:"bytes,5,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 ContentImg string `protobuf:"bytes,6,opt,name=content_img,json=contentImg,proto3" json:"content_img,omitempty"` //内容背景图 WebBgImg string `protobuf:"bytes,7,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外背景图地址 WarmUpImg string `protobuf:"bytes,8,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 DlBgImg string `protobuf:"bytes,9,opt,name=dl_bg_img,json=dlBgImg,proto3" json:"dl_bg_img,omitempty"` //引导页背景图 DlBannerImg string `protobuf:"bytes,10,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,11,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,12,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,13,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 ShareText string `protobuf:"bytes,14,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,15,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 Rule string `protobuf:"bytes,16,opt,name=rule,proto3" json:"rule,omitempty"` //活动规则 Conds []*LangRes_Cond `protobuf:"bytes,17,rep,name=conds,proto3" json:"conds,omitempty"` //事件驱动的条件描述 Quit *LangRes_Quit `protobuf:"bytes,18,opt,name=quit,proto3" json:"quit,omitempty"` //赛事竞猜选项翻译 Questions []*LangRes_Question `protobuf:"bytes,19,rep,name=questions,proto3" json:"questions,omitempty"` //问题翻译 LongImgs []*LangRes_LongImg `protobuf:"bytes,20,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Cash *LangRes_Cash `protobuf:"bytes,21,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置 TOffset int32 `protobuf:"varint,22,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时区偏移值 QaGroup *LangRes_QaGroup `protobuf:"bytes,23,opt,name=qa_group,json=qaGroup,proto3" json:"qa_group,omitempty"` //题库数据 TalkText []*LangRes_Talk `protobuf:"bytes,24,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Gold *LangRes_Gold `protobuf:"bytes,25,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置 Coin *LangRes_Coin `protobuf:"bytes,26,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置 TopicColor string `protobuf:"bytes,27,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 PcBg string `protobuf:"bytes,28,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc背景 RuleImg string `protobuf:"bytes,29,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 Schedules []*LangRes_Schedule `protobuf:"bytes,30,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 Uno *LangRes_Uno `protobuf:"bytes,31,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置 } func (x *LangRes) Reset() { *x = LangRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes) ProtoMessage() {} func (x *LangRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[37] 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 LangRes.ProtoReflect.Descriptor instead. func (*LangRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37} } func (x *LangRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *LangRes) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *LangRes) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *LangRes) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *LangRes) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *LangRes) GetContentImg() string { if x != nil { return x.ContentImg } return "" } func (x *LangRes) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *LangRes) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *LangRes) GetDlBgImg() string { if x != nil { return x.DlBgImg } return "" } func (x *LangRes) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *LangRes) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *LangRes) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *LangRes) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *LangRes) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *LangRes) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *LangRes) GetRule() string { if x != nil { return x.Rule } return "" } func (x *LangRes) GetConds() []*LangRes_Cond { if x != nil { return x.Conds } return nil } func (x *LangRes) GetQuit() *LangRes_Quit { if x != nil { return x.Quit } return nil } func (x *LangRes) GetQuestions() []*LangRes_Question { if x != nil { return x.Questions } return nil } func (x *LangRes) GetLongImgs() []*LangRes_LongImg { if x != nil { return x.LongImgs } return nil } func (x *LangRes) GetCash() *LangRes_Cash { if x != nil { return x.Cash } return nil } func (x *LangRes) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *LangRes) GetQaGroup() *LangRes_QaGroup { if x != nil { return x.QaGroup } return nil } func (x *LangRes) GetTalkText() []*LangRes_Talk { if x != nil { return x.TalkText } return nil } func (x *LangRes) GetGold() *LangRes_Gold { if x != nil { return x.Gold } return nil } func (x *LangRes) GetCoin() *LangRes_Coin { if x != nil { return x.Coin } return nil } func (x *LangRes) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *LangRes) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *LangRes) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *LangRes) GetSchedules() []*LangRes_Schedule { if x != nil { return x.Schedules } return nil } func (x *LangRes) GetUno() *LangRes_Uno { if x != nil { return x.Uno } return nil } type SaveLangReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ToView bool `protobuf:"varint,1,opt,name=to_view,json=toView,proto3" json:"to_view,omitempty"` //是否需要去预览页 CampaignHashId string `protobuf:"bytes,2,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id LangMark string `protobuf:"bytes,3,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言对应的唯一标识 PageTitle string `protobuf:"bytes,4,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 ImageMain string `protobuf:"bytes,5,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 DownloadPageImage string `protobuf:"bytes,6,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 WechatPageImage string `protobuf:"bytes,7,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 ContentImg string `protobuf:"bytes,8,opt,name=content_img,json=contentImg,proto3" json:"content_img,omitempty"` //内容背景图 WebBgImg string `protobuf:"bytes,9,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外背景图地址 WarmUpImg string `protobuf:"bytes,10,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 DlBgImg string `protobuf:"bytes,11,opt,name=dl_bg_img,json=dlBgImg,proto3" json:"dl_bg_img,omitempty"` //引导页背景图 DlBannerImg string `protobuf:"bytes,12,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,13,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,14,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,15,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 ShareText string `protobuf:"bytes,16,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,17,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 Rule string `protobuf:"bytes,18,opt,name=rule,proto3" json:"rule,omitempty"` //活动规则 Conds []*SaveLangReq_Cond `protobuf:"bytes,19,rep,name=conds,proto3" json:"conds,omitempty"` //事件驱动的条件描述 Quit *SaveLangReq_Quit `protobuf:"bytes,20,opt,name=quit,proto3" json:"quit,omitempty"` //赛事竞猜选项翻译 Questions []*SaveLangReq_Question `protobuf:"bytes,21,rep,name=questions,proto3" json:"questions,omitempty"` //问题翻译 LongImgs []*SaveLangReq_LongImg `protobuf:"bytes,22,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Cash *SaveLangReq_Cash `protobuf:"bytes,23,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置 TOffset int32 `protobuf:"varint,24,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时区偏移值 QaGroup *SaveLangReq_QaGroup `protobuf:"bytes,25,opt,name=qa_group,json=qaGroup,proto3" json:"qa_group,omitempty"` //题库数据 TalkText []*SaveLangReq_Talk `protobuf:"bytes,26,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Gold *SaveLangReq_Gold `protobuf:"bytes,27,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置 Coin *SaveLangReq_Coin `protobuf:"bytes,28,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置 TopicColor string `protobuf:"bytes,29,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 PcBg string `protobuf:"bytes,30,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc背景 RuleImg string `protobuf:"bytes,31,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 Schedules []*SaveLangReq_Schedule `protobuf:"bytes,32,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 Uno *SaveLangReq_Uno `protobuf:"bytes,33,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置 } func (x *SaveLangReq) Reset() { *x = SaveLangReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq) ProtoMessage() {} func (x *SaveLangReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[38] 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 SaveLangReq.ProtoReflect.Descriptor instead. func (*SaveLangReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38} } func (x *SaveLangReq) GetToView() bool { if x != nil { return x.ToView } return false } func (x *SaveLangReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } func (x *SaveLangReq) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *SaveLangReq) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *SaveLangReq) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *SaveLangReq) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *SaveLangReq) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *SaveLangReq) GetContentImg() string { if x != nil { return x.ContentImg } return "" } func (x *SaveLangReq) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *SaveLangReq) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *SaveLangReq) GetDlBgImg() string { if x != nil { return x.DlBgImg } return "" } func (x *SaveLangReq) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *SaveLangReq) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *SaveLangReq) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *SaveLangReq) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *SaveLangReq) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *SaveLangReq) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *SaveLangReq) GetRule() string { if x != nil { return x.Rule } return "" } func (x *SaveLangReq) GetConds() []*SaveLangReq_Cond { if x != nil { return x.Conds } return nil } func (x *SaveLangReq) GetQuit() *SaveLangReq_Quit { if x != nil { return x.Quit } return nil } func (x *SaveLangReq) GetQuestions() []*SaveLangReq_Question { if x != nil { return x.Questions } return nil } func (x *SaveLangReq) GetLongImgs() []*SaveLangReq_LongImg { if x != nil { return x.LongImgs } return nil } func (x *SaveLangReq) GetCash() *SaveLangReq_Cash { if x != nil { return x.Cash } return nil } func (x *SaveLangReq) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *SaveLangReq) GetQaGroup() *SaveLangReq_QaGroup { if x != nil { return x.QaGroup } return nil } func (x *SaveLangReq) GetTalkText() []*SaveLangReq_Talk { if x != nil { return x.TalkText } return nil } func (x *SaveLangReq) GetGold() *SaveLangReq_Gold { if x != nil { return x.Gold } return nil } func (x *SaveLangReq) GetCoin() *SaveLangReq_Coin { if x != nil { return x.Coin } return nil } func (x *SaveLangReq) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *SaveLangReq) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *SaveLangReq) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *SaveLangReq) GetSchedules() []*SaveLangReq_Schedule { if x != nil { return x.Schedules } return nil } func (x *SaveLangReq) GetUno() *SaveLangReq_Uno { if x != nil { return x.Uno } return nil } type SaveLangRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ViewLink string `protobuf:"bytes,1,opt,name=view_link,json=viewLink,proto3" json:"view_link,omitempty"` //预览地址 } func (x *SaveLangRes) Reset() { *x = SaveLangRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangRes) ProtoMessage() {} func (x *SaveLangRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[39] 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 SaveLangRes.ProtoReflect.Descriptor instead. func (*SaveLangRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{39} } func (x *SaveLangRes) GetViewLink() string { if x != nil { return x.ViewLink } return "" } type DestroyLangReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //语言配置信息ID } func (x *DestroyLangReq) Reset() { *x = DestroyLangReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyLangReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyLangReq) ProtoMessage() {} func (x *DestroyLangReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[40] 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 DestroyLangReq.ProtoReflect.Descriptor instead. func (*DestroyLangReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{40} } func (x *DestroyLangReq) GetHashId() string { if x != nil { return x.HashId } return "" } type DestroyLangRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DestroyLangRes) Reset() { *x = DestroyLangRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DestroyLangRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*DestroyLangRes) ProtoMessage() {} func (x *DestroyLangRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[41] 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 DestroyLangRes.ProtoReflect.Descriptor instead. func (*DestroyLangRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{41} } type LangSelectReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignHashId string `protobuf:"bytes,1,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id } func (x *LangSelectReq) Reset() { *x = LangSelectReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangSelectReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangSelectReq) ProtoMessage() {} func (x *LangSelectReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[42] 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 LangSelectReq.ProtoReflect.Descriptor instead. func (*LangSelectReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{42} } func (x *LangSelectReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } type LangSelectRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*LangSelectRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //选择 } func (x *LangSelectRes) Reset() { *x = LangSelectRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangSelectRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangSelectRes) ProtoMessage() {} func (x *LangSelectRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[43] 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 LangSelectRes.ProtoReflect.Descriptor instead. func (*LangSelectRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{43} } func (x *LangSelectRes) GetList() []*LangSelectRes_One { if x != nil { return x.List } return nil } type CampaignInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectId int64 `protobuf:"varint,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id CampaignHashId string `protobuf:"bytes,2,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id CampaignId int64 `protobuf:"varint,3,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id Lang string `protobuf:"bytes,4,opt,name=lang,proto3" json:"lang,omitempty"` //语言标识 } func (x *CampaignInfoReq) Reset() { *x = CampaignInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignInfoReq) ProtoMessage() {} func (x *CampaignInfoReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[44] 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 CampaignInfoReq.ProtoReflect.Descriptor instead. func (*CampaignInfoReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{44} } func (x *CampaignInfoReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *CampaignInfoReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } func (x *CampaignInfoReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } func (x *CampaignInfoReq) GetLang() string { if x != nil { return x.Lang } return "" } type CampaignInfoRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 PageTitle string `protobuf:"bytes,4,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 FissionMark string `protobuf:"bytes,5,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //玩法标识 FissionTitle string `protobuf:"bytes,6,opt,name=fission_title,json=fissionTitle,proto3" json:"fission_title,omitempty"` //活动类型说明 StartTime int64 `protobuf:"varint,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //提交的开始时间(+8时区算出来的时间戳) EndTime int64 `protobuf:"varint,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //提交的结束时间(+8时区算出来的时间戳) Status int32 `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线) TOffset int32 `protobuf:"varint,10,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 LangTypes []string `protobuf:"bytes,11,rep,name=lang_types,json=langTypes,proto3" json:"lang_types,omitempty"` //支持的语种 ShareImg string `protobuf:"bytes,12,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 Link string `protobuf:"bytes,13,opt,name=link,proto3" json:"link,omitempty"` //活动地址 ImgHost string `protobuf:"bytes,14,opt,name=img_host,json=imgHost,proto3" json:"img_host,omitempty"` //图片全球地址 PcBg string `protobuf:"bytes,15,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc适配背景 Target int32 `protobuf:"varint,16,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存;4-w2a互动广告) StartAt int64 `protobuf:"varint,17,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"` //开始时间戳 EndAt int64 `protobuf:"varint,18,opt,name=end_at,json=endAt,proto3" json:"end_at,omitempty"` //结束时间戳 ProjectId int64 `protobuf:"varint,19,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id } func (x *CampaignInfoRes) Reset() { *x = CampaignInfoRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignInfoRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignInfoRes) ProtoMessage() {} func (x *CampaignInfoRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[45] 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 CampaignInfoRes.ProtoReflect.Descriptor instead. func (*CampaignInfoRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{45} } func (x *CampaignInfoRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CampaignInfoRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *CampaignInfoRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *CampaignInfoRes) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *CampaignInfoRes) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *CampaignInfoRes) GetFissionTitle() string { if x != nil { return x.FissionTitle } return "" } func (x *CampaignInfoRes) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *CampaignInfoRes) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *CampaignInfoRes) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *CampaignInfoRes) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *CampaignInfoRes) GetLangTypes() []string { if x != nil { return x.LangTypes } return nil } func (x *CampaignInfoRes) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *CampaignInfoRes) GetLink() string { if x != nil { return x.Link } return "" } func (x *CampaignInfoRes) GetImgHost() string { if x != nil { return x.ImgHost } return "" } func (x *CampaignInfoRes) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *CampaignInfoRes) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *CampaignInfoRes) GetStartAt() int64 { if x != nil { return x.StartAt } return 0 } func (x *CampaignInfoRes) GetEndAt() int64 { if x != nil { return x.EndAt } return 0 } func (x *CampaignInfoRes) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } type ShowRewardReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id LangMark string `protobuf:"bytes,2,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 LevelMark string `protobuf:"bytes,3,opt,name=level_mark,json=levelMark,proto3" json:"level_mark,omitempty"` //用户标识 ShowLang string `protobuf:"bytes,4,opt,name=show_lang,json=showLang,proto3" json:"show_lang,omitempty"` //奖品展示的语言标识 CountryMark string `protobuf:"bytes,5,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 } func (x *ShowRewardReq) Reset() { *x = ShowRewardReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRewardReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRewardReq) ProtoMessage() {} func (x *ShowRewardReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[46] 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 ShowRewardReq.ProtoReflect.Descriptor instead. func (*ShowRewardReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{46} } func (x *ShowRewardReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } func (x *ShowRewardReq) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ShowRewardReq) GetLevelMark() string { if x != nil { return x.LevelMark } return "" } func (x *ShowRewardReq) GetShowLang() string { if x != nil { return x.ShowLang } return "" } func (x *ShowRewardReq) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } type ShowRewardRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Rewards []*ShowRewardRes_Reward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` //站内奖品 RewardsWeb []*ShowRewardRes_Reward `protobuf:"bytes,2,rep,name=rewards_web,json=rewardsWeb,proto3" json:"rewards_web,omitempty"` //站外奖品 RewardsExtra []*ShowRewardRes_Reward `protobuf:"bytes,3,rep,name=rewards_extra,json=rewardsExtra,proto3" json:"rewards_extra,omitempty"` //额外奖品 RewardsNewcomer []*ShowRewardRes_Reward `protobuf:"bytes,4,rep,name=rewards_newcomer,json=rewardsNewcomer,proto3" json:"rewards_newcomer,omitempty"` //新人奖 } func (x *ShowRewardRes) Reset() { *x = ShowRewardRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRewardRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRewardRes) ProtoMessage() {} func (x *ShowRewardRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[47] 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 ShowRewardRes.ProtoReflect.Descriptor instead. func (*ShowRewardRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{47} } func (x *ShowRewardRes) GetRewards() []*ShowRewardRes_Reward { if x != nil { return x.Rewards } return nil } func (x *ShowRewardRes) GetRewardsWeb() []*ShowRewardRes_Reward { if x != nil { return x.RewardsWeb } return nil } func (x *ShowRewardRes) GetRewardsExtra() []*ShowRewardRes_Reward { if x != nil { return x.RewardsExtra } return nil } func (x *ShowRewardRes) GetRewardsNewcomer() []*ShowRewardRes_Reward { if x != nil { return x.RewardsNewcomer } return nil } type AdsStoreReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TemplateId string `protobuf:"bytes,1,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` //玩法模板ID ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目ID Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 PageTitle string `protobuf:"bytes,4,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 BgImg string `protobuf:"bytes,5,opt,name=bg_img,json=bgImg,proto3" json:"bg_img,omitempty"` //活动背景图 DelayLinkData []*AdsStoreReq_KV `protobuf:"bytes,6,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义参数 Rewards []*AdsStoreReq_Reward `protobuf:"bytes,7,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 UserId int64 `protobuf:"varint,8,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //创建人id Countdown int32 `protobuf:"varint,9,opt,name=countdown,proto3" json:"countdown,omitempty"` //倒计时 Flip *AdsStoreReq_Flip `protobuf:"bytes,10,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) } func (x *AdsStoreReq) Reset() { *x = AdsStoreReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsStoreReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsStoreReq) ProtoMessage() {} func (x *AdsStoreReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[48] 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 AdsStoreReq.ProtoReflect.Descriptor instead. func (*AdsStoreReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{48} } func (x *AdsStoreReq) GetTemplateId() string { if x != nil { return x.TemplateId } return "" } func (x *AdsStoreReq) GetProjectId() string { if x != nil { return x.ProjectId } return "" } func (x *AdsStoreReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *AdsStoreReq) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *AdsStoreReq) GetBgImg() string { if x != nil { return x.BgImg } return "" } func (x *AdsStoreReq) GetDelayLinkData() []*AdsStoreReq_KV { if x != nil { return x.DelayLinkData } return nil } func (x *AdsStoreReq) GetRewards() []*AdsStoreReq_Reward { if x != nil { return x.Rewards } return nil } func (x *AdsStoreReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *AdsStoreReq) GetCountdown() int32 { if x != nil { return x.Countdown } return 0 } func (x *AdsStoreReq) GetFlip() *AdsStoreReq_Flip { if x != nil { return x.Flip } return nil } type AdsStoreRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id } func (x *AdsStoreRes) Reset() { *x = AdsStoreRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsStoreRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsStoreRes) ProtoMessage() {} func (x *AdsStoreRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[49] 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 AdsStoreRes.ProtoReflect.Descriptor instead. func (*AdsStoreRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{49} } func (x *AdsStoreRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *AdsStoreRes) GetHashId() string { if x != nil { return x.HashId } return "" } type AdsUpdateReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //活动标题 PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 BgImg string `protobuf:"bytes,4,opt,name=bg_img,json=bgImg,proto3" json:"bg_img,omitempty"` //活动背景图 DelayLinkData []*AdsUpdateReq_KV `protobuf:"bytes,5,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义参数 Rewards []*AdsUpdateReq_Reward `protobuf:"bytes,6,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 Countdown int32 `protobuf:"varint,7,opt,name=countdown,proto3" json:"countdown,omitempty"` //倒计时 Flip *AdsUpdateReq_Flip `protobuf:"bytes,8,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) } func (x *AdsUpdateReq) Reset() { *x = AdsUpdateReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsUpdateReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsUpdateReq) ProtoMessage() {} func (x *AdsUpdateReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[50] 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 AdsUpdateReq.ProtoReflect.Descriptor instead. func (*AdsUpdateReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{50} } func (x *AdsUpdateReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *AdsUpdateReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *AdsUpdateReq) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *AdsUpdateReq) GetBgImg() string { if x != nil { return x.BgImg } return "" } func (x *AdsUpdateReq) GetDelayLinkData() []*AdsUpdateReq_KV { if x != nil { return x.DelayLinkData } return nil } func (x *AdsUpdateReq) GetRewards() []*AdsUpdateReq_Reward { if x != nil { return x.Rewards } return nil } func (x *AdsUpdateReq) GetCountdown() int32 { if x != nil { return x.Countdown } return 0 } func (x *AdsUpdateReq) GetFlip() *AdsUpdateReq_Flip { if x != nil { return x.Flip } return nil } type AdsUpdateRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id } func (x *AdsUpdateRes) Reset() { *x = AdsUpdateRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsUpdateRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsUpdateRes) ProtoMessage() {} func (x *AdsUpdateRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[51] 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 AdsUpdateRes.ProtoReflect.Descriptor instead. func (*AdsUpdateRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{51} } func (x *AdsUpdateRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *AdsUpdateRes) GetHashId() string { if x != nil { return x.HashId } return "" } type AdsShowReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id } func (x *AdsShowReq) Reset() { *x = AdsShowReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsShowReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsShowReq) ProtoMessage() {} func (x *AdsShowReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[52] 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 AdsShowReq.ProtoReflect.Descriptor instead. func (*AdsShowReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{52} } func (x *AdsShowReq) GetHashId() string { if x != nil { return x.HashId } return "" } type AdsShowRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id ProjectId int64 `protobuf:"varint,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //模版id TempId int64 `protobuf:"varint,4,opt,name=temp_id,json=tempId,proto3" json:"temp_id,omitempty"` //模版id TOffset int32 `protobuf:"varint,5,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 Target int32 `protobuf:"varint,6,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存;4-w2a互动广告) TStart int64 `protobuf:"varint,7,opt,name=t_start,json=tStart,proto3" json:"t_start,omitempty"` //展示的开始时间时间戳 TEnd int64 `protobuf:"varint,8,opt,name=t_end,json=tEnd,proto3" json:"t_end,omitempty"` //展示的结束时间时间戳 FissionMark string `protobuf:"bytes,9,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //活动类型玩法标识 Title string `protobuf:"bytes,10,opt,name=title,proto3" json:"title,omitempty"` //活动标题 CoverUrl string `protobuf:"bytes,11,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` //封面地址 PageTitle string `protobuf:"bytes,12,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 BgImg string `protobuf:"bytes,13,opt,name=bg_img,json=bgImg,proto3" json:"bg_img,omitempty"` //活动背景图 Status int32 `protobuf:"varint,14,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线) DelayLinkData []*AdsShowRes_KV `protobuf:"bytes,15,rep,name=delay_link_data,json=delayLinkData,proto3" json:"delay_link_data,omitempty"` //延迟深度链接自定义参数 Rewards []*AdsShowRes_Reward `protobuf:"bytes,16,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 Countdown int32 `protobuf:"varint,17,opt,name=countdown,proto3" json:"countdown,omitempty"` //倒计时 FissionId int64 `protobuf:"varint,18,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法id Flip *AdsShowRes_Flip `protobuf:"bytes,19,opt,name=flip,proto3" json:"flip,omitempty"` //翻牌配置(翻牌玩法必传) } func (x *AdsShowRes) Reset() { *x = AdsShowRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsShowRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsShowRes) ProtoMessage() {} func (x *AdsShowRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[53] 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 AdsShowRes.ProtoReflect.Descriptor instead. func (*AdsShowRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{53} } func (x *AdsShowRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *AdsShowRes) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *AdsShowRes) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *AdsShowRes) GetTempId() int64 { if x != nil { return x.TempId } return 0 } func (x *AdsShowRes) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *AdsShowRes) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *AdsShowRes) GetTStart() int64 { if x != nil { return x.TStart } return 0 } func (x *AdsShowRes) GetTEnd() int64 { if x != nil { return x.TEnd } return 0 } func (x *AdsShowRes) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *AdsShowRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *AdsShowRes) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *AdsShowRes) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *AdsShowRes) GetBgImg() string { if x != nil { return x.BgImg } return "" } func (x *AdsShowRes) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *AdsShowRes) GetDelayLinkData() []*AdsShowRes_KV { if x != nil { return x.DelayLinkData } return nil } func (x *AdsShowRes) GetRewards() []*AdsShowRes_Reward { if x != nil { return x.Rewards } return nil } func (x *AdsShowRes) GetCountdown() int32 { if x != nil { return x.Countdown } return 0 } func (x *AdsShowRes) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *AdsShowRes) GetFlip() *AdsShowRes_Flip { if x != nil { return x.Flip } return nil } type CampaignSelectReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectId int64 `protobuf:"varint,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id ProjectHashId string `protobuf:"bytes,2,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id Targets []int32 `protobuf:"varint,3,rep,packed,name=targets,proto3" json:"targets,omitempty"` //活动目标集合 Child bool `protobuf:"varint,4,opt,name=child,proto3" json:"child,omitempty"` //子活动 ChildWith string `protobuf:"bytes,5,opt,name=child_with,json=childWith,proto3" json:"child_with,omitempty"` //绑定子活动的活动id ChildType int32 `protobuf:"varint,6,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型(1-邀新竞赛,2-签到,3-抽奖,4-盲盒,5-超级任务) TempHashId string `protobuf:"bytes,7,opt,name=temp_hash_id,json=tempHashId,proto3" json:"temp_hash_id,omitempty"` //模版hash_id Status []int32 `protobuf:"varint,8,rep,packed,name=status,proto3" json:"status,omitempty"` //活动状态(1-待发布,2-已发布,3-已下线,4-预发布) } func (x *CampaignSelectReq) Reset() { *x = CampaignSelectReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignSelectReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignSelectReq) ProtoMessage() {} func (x *CampaignSelectReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[54] 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 CampaignSelectReq.ProtoReflect.Descriptor instead. func (*CampaignSelectReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{54} } func (x *CampaignSelectReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *CampaignSelectReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *CampaignSelectReq) GetTargets() []int32 { if x != nil { return x.Targets } return nil } func (x *CampaignSelectReq) GetChild() bool { if x != nil { return x.Child } return false } func (x *CampaignSelectReq) GetChildWith() string { if x != nil { return x.ChildWith } return "" } func (x *CampaignSelectReq) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } func (x *CampaignSelectReq) GetTempHashId() string { if x != nil { return x.TempHashId } return "" } func (x *CampaignSelectReq) GetStatus() []int32 { if x != nil { return x.Status } return nil } type CampaignSelectRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*CampaignSelectRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //列表数据 } func (x *CampaignSelectRes) Reset() { *x = CampaignSelectRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignSelectRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignSelectRes) ProtoMessage() {} func (x *CampaignSelectRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[55] 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 CampaignSelectRes.ProtoReflect.Descriptor instead. func (*CampaignSelectRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{55} } func (x *CampaignSelectRes) GetList() []*CampaignSelectRes_One { if x != nil { return x.List } return nil } type RewardDetailReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id } func (x *RewardDetailReq) Reset() { *x = RewardDetailReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailReq) ProtoMessage() {} func (x *RewardDetailReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[56] 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 RewardDetailReq.ProtoReflect.Descriptor instead. func (*RewardDetailReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{56} } func (x *RewardDetailReq) GetHashId() string { if x != nil { return x.HashId } return "" } type RewardDetailRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardGroup int32 `protobuf:"varint,1,opt,name=reward_group,json=rewardGroup,proto3" json:"reward_group,omitempty"` //奖品分组类型(1-常规奖品,2-用户类型奖品,3-语言奖品,4-语言+用户类型奖品,5-国家奖品) Normal []*RewardDetailRes_Reward `protobuf:"bytes,2,rep,name=normal,proto3" json:"normal,omitempty"` //常规奖品 UserLevel []*RewardDetailRes_UserLevelOne `protobuf:"bytes,3,rep,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` //用户类型奖品 Langs []*RewardDetailRes_LangOne `protobuf:"bytes,4,rep,name=langs,proto3" json:"langs,omitempty"` //语言奖品 LangUserLevel []*RewardDetailRes_LangUserLevelOne `protobuf:"bytes,5,rep,name=lang_user_level,json=langUserLevel,proto3" json:"lang_user_level,omitempty"` //语言+用户类型奖品 Country []*RewardDetailRes_CountryOne `protobuf:"bytes,6,rep,name=country,proto3" json:"country,omitempty"` //国家奖品 StepReward []*RewardDetailRes_Reward `protobuf:"bytes,7,rep,name=step_reward,json=stepReward,proto3" json:"step_reward,omitempty"` //阶梯奖品 ExtraReward []*RewardDetailRes_Reward `protobuf:"bytes,8,rep,name=extra_reward,json=extraReward,proto3" json:"extra_reward,omitempty"` //额外奖品 NewcomerReward []*RewardDetailRes_Reward `protobuf:"bytes,9,rep,name=newcomer_reward,json=newcomerReward,proto3" json:"newcomer_reward,omitempty"` //新人奖品 All int64 `protobuf:"varint,10,opt,name=all,proto3" json:"all,omitempty"` //活动总预算 AllUse int64 `protobuf:"varint,11,opt,name=all_use,json=allUse,proto3" json:"all_use,omitempty"` //已使用的活动预算 RewardType []string `protobuf:"bytes,12,rep,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"` //奖品tab集合(app-活动主奖品,app_sign-签到活动主奖品,extra-额外奖品,step-阶梯奖,newcomer-新人奖,pool-奖池记录,task-任务奖励) ShowAll int32 `protobuf:"varint,13,opt,name=show_all,json=showAll,proto3" json:"show_all,omitempty"` //是否展示总预算模块(0-否,1-是) ShowSelect int32 `protobuf:"varint,14,opt,name=show_select,json=showSelect,proto3" json:"show_select,omitempty"` //是否显示选择数(0-否,1-是) TaskReward []*RewardDetailRes_Reward `protobuf:"bytes,15,rep,name=task_reward,json=taskReward,proto3" json:"task_reward,omitempty"` //任务奖品 Pools []*RewardDetailRes_Pool `protobuf:"bytes,16,rep,name=pools,proto3" json:"pools,omitempty"` //奖池记录 Schedules []*RewardDetailRes_Schedule `protobuf:"bytes,17,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛程记录 UnoCards []*RewardDetailRes_UnoCard `protobuf:"bytes,18,rep,name=uno_cards,json=unoCards,proto3" json:"uno_cards,omitempty"` //uno卡牌奖励 } func (x *RewardDetailRes) Reset() { *x = RewardDetailRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes) ProtoMessage() {} func (x *RewardDetailRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[57] 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 RewardDetailRes.ProtoReflect.Descriptor instead. func (*RewardDetailRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57} } func (x *RewardDetailRes) GetRewardGroup() int32 { if x != nil { return x.RewardGroup } return 0 } func (x *RewardDetailRes) GetNormal() []*RewardDetailRes_Reward { if x != nil { return x.Normal } return nil } func (x *RewardDetailRes) GetUserLevel() []*RewardDetailRes_UserLevelOne { if x != nil { return x.UserLevel } return nil } func (x *RewardDetailRes) GetLangs() []*RewardDetailRes_LangOne { if x != nil { return x.Langs } return nil } func (x *RewardDetailRes) GetLangUserLevel() []*RewardDetailRes_LangUserLevelOne { if x != nil { return x.LangUserLevel } return nil } func (x *RewardDetailRes) GetCountry() []*RewardDetailRes_CountryOne { if x != nil { return x.Country } return nil } func (x *RewardDetailRes) GetStepReward() []*RewardDetailRes_Reward { if x != nil { return x.StepReward } return nil } func (x *RewardDetailRes) GetExtraReward() []*RewardDetailRes_Reward { if x != nil { return x.ExtraReward } return nil } func (x *RewardDetailRes) GetNewcomerReward() []*RewardDetailRes_Reward { if x != nil { return x.NewcomerReward } return nil } func (x *RewardDetailRes) GetAll() int64 { if x != nil { return x.All } return 0 } func (x *RewardDetailRes) GetAllUse() int64 { if x != nil { return x.AllUse } return 0 } func (x *RewardDetailRes) GetRewardType() []string { if x != nil { return x.RewardType } return nil } func (x *RewardDetailRes) GetShowAll() int32 { if x != nil { return x.ShowAll } return 0 } func (x *RewardDetailRes) GetShowSelect() int32 { if x != nil { return x.ShowSelect } return 0 } func (x *RewardDetailRes) GetTaskReward() []*RewardDetailRes_Reward { if x != nil { return x.TaskReward } return nil } func (x *RewardDetailRes) GetPools() []*RewardDetailRes_Pool { if x != nil { return x.Pools } return nil } func (x *RewardDetailRes) GetSchedules() []*RewardDetailRes_Schedule { if x != nil { return x.Schedules } return nil } func (x *RewardDetailRes) GetUnoCards() []*RewardDetailRes_UnoCard { if x != nil { return x.UnoCards } return nil } type UpdateStockReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Stock int32 `protobuf:"varint,2,opt,name=stock,proto3" json:"stock,omitempty"` //修改的库存值 UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //修改的 Ip string `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip,omitempty"` //ip地址 } func (x *UpdateStockReq) Reset() { *x = UpdateStockReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateStockReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateStockReq) ProtoMessage() {} func (x *UpdateStockReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[58] 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 UpdateStockReq.ProtoReflect.Descriptor instead. func (*UpdateStockReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{58} } func (x *UpdateStockReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateStockReq) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *UpdateStockReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *UpdateStockReq) GetIp() string { if x != nil { return x.Ip } return "" } type UpdateStockRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateStockRes) Reset() { *x = UpdateStockRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateStockRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateStockRes) ProtoMessage() {} func (x *UpdateStockRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[59] 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 UpdateStockRes.ProtoReflect.Descriptor instead. func (*UpdateStockRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{59} } type CampaignTzReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id } func (x *CampaignTzReq) Reset() { *x = CampaignTzReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignTzReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignTzReq) ProtoMessage() {} func (x *CampaignTzReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[60] 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 CampaignTzReq.ProtoReflect.Descriptor instead. func (*CampaignTzReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{60} } func (x *CampaignTzReq) GetId() int64 { if x != nil { return x.Id } return 0 } type CampaignTzRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*CampaignTzRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //语言数据 } func (x *CampaignTzRes) Reset() { *x = CampaignTzRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignTzRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignTzRes) ProtoMessage() {} func (x *CampaignTzRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[61] 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 CampaignTzRes.ProtoReflect.Descriptor instead. func (*CampaignTzRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{61} } func (x *CampaignTzRes) GetList() []*CampaignTzRes_One { if x != nil { return x.List } return nil } type CampaignRewardTypeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id } func (x *CampaignRewardTypeReq) Reset() { *x = CampaignRewardTypeReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignRewardTypeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignRewardTypeReq) ProtoMessage() {} func (x *CampaignRewardTypeReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[62] 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 CampaignRewardTypeReq.ProtoReflect.Descriptor instead. func (*CampaignRewardTypeReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{62} } func (x *CampaignRewardTypeReq) GetId() int64 { if x != nil { return x.Id } return 0 } type CampaignRewardTypeRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*CampaignRewardTypeRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //语言数据 } func (x *CampaignRewardTypeRes) Reset() { *x = CampaignRewardTypeRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignRewardTypeRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignRewardTypeRes) ProtoMessage() {} func (x *CampaignRewardTypeRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[63] 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 CampaignRewardTypeRes.ProtoReflect.Descriptor instead. func (*CampaignRewardTypeRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{63} } func (x *CampaignRewardTypeRes) GetList() []*CampaignRewardTypeRes_One { if x != nil { return x.List } return nil } type ChildListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` //当前页 PerPage int32 `protobuf:"varint,2,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` //每页条数 ProjectId int64 `protobuf:"varint,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id ProjectHashId string `protobuf:"bytes,4,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //活动标题筛选 Status []int32 `protobuf:"varint,6,rep,packed,name=status,proto3" json:"status,omitempty"` //活动状态(1-待发布,2-已发布,3-已下线) ChildType []int32 `protobuf:"varint,7,rep,packed,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 FissionId []int64 `protobuf:"varint,8,rep,packed,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //活动类型标识 CampaignId []int64 `protobuf:"varint,9,rep,packed,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //绑定的活动id Start int64 `protobuf:"varint,10,opt,name=start,proto3" json:"start,omitempty"` //活动时间开始时间戳 End int64 `protobuf:"varint,11,opt,name=end,proto3" json:"end,omitempty"` //活动时间结束时间戳 Pids []int64 `protobuf:"varint,12,rep,packed,name=pids,proto3" json:"pids,omitempty"` //上级活动id } func (x *ChildListReq) Reset() { *x = ChildListReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildListReq) ProtoMessage() {} func (x *ChildListReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[64] 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 ChildListReq.ProtoReflect.Descriptor instead. func (*ChildListReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{64} } func (x *ChildListReq) GetPage() int32 { if x != nil { return x.Page } return 0 } func (x *ChildListReq) GetPerPage() int32 { if x != nil { return x.PerPage } return 0 } func (x *ChildListReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *ChildListReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *ChildListReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildListReq) GetStatus() []int32 { if x != nil { return x.Status } return nil } func (x *ChildListReq) GetChildType() []int32 { if x != nil { return x.ChildType } return nil } func (x *ChildListReq) GetFissionId() []int64 { if x != nil { return x.FissionId } return nil } func (x *ChildListReq) GetCampaignId() []int64 { if x != nil { return x.CampaignId } return nil } func (x *ChildListReq) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *ChildListReq) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *ChildListReq) GetPids() []int64 { if x != nil { return x.Pids } return nil } type ChildListRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*ChildListRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //列表数据 Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` //列表总数 } func (x *ChildListRes) Reset() { *x = ChildListRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildListRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildListRes) ProtoMessage() {} func (x *ChildListRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[65] 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 ChildListRes.ProtoReflect.Descriptor instead. func (*ChildListRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{65} } func (x *ChildListRes) GetList() []*ChildListRes_One { if x != nil { return x.List } return nil } func (x *ChildListRes) GetTotal() int64 { if x != nil { return x.Total } return 0 } type ChildStoreReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //员工id Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` //操作ip Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` //活动标题 FissionId int64 `protobuf:"varint,5,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法id StartTime int64 `protobuf:"varint,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 ChildType int32 `protobuf:"varint,8,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 PlayType int32 `protobuf:"varint,9,opt,name=play_type,json=playType,proto3" json:"play_type,omitempty"` //子活动玩法类型(1-连续签到/随机,2-次数签到/按概率) Rewards []*ChildStoreReq_Reward `protobuf:"bytes,10,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 Win_1 *ChildStoreReq_TaskGroup `protobuf:"bytes,11,opt,name=win_1,json=win1,proto3" json:"win_1,omitempty"` //任务组1 Win_2 *ChildStoreReq_TaskGroup `protobuf:"bytes,12,opt,name=win_2,json=win2,proto3" json:"win_2,omitempty"` //任务组2 Win_3 *ChildStoreReq_TaskGroup `protobuf:"bytes,13,opt,name=win_3,json=win3,proto3" json:"win_3,omitempty"` //任务组3 } func (x *ChildStoreReq) Reset() { *x = ChildStoreReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildStoreReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildStoreReq) ProtoMessage() {} func (x *ChildStoreReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[66] 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 ChildStoreReq.ProtoReflect.Descriptor instead. func (*ChildStoreReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{66} } func (x *ChildStoreReq) GetProjectId() string { if x != nil { return x.ProjectId } return "" } func (x *ChildStoreReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ChildStoreReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *ChildStoreReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildStoreReq) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ChildStoreReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *ChildStoreReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *ChildStoreReq) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } func (x *ChildStoreReq) GetPlayType() int32 { if x != nil { return x.PlayType } return 0 } func (x *ChildStoreReq) GetRewards() []*ChildStoreReq_Reward { if x != nil { return x.Rewards } return nil } func (x *ChildStoreReq) GetWin_1() *ChildStoreReq_TaskGroup { if x != nil { return x.Win_1 } return nil } func (x *ChildStoreReq) GetWin_2() *ChildStoreReq_TaskGroup { if x != nil { return x.Win_2 } return nil } func (x *ChildStoreReq) GetWin_3() *ChildStoreReq_TaskGroup { if x != nil { return x.Win_3 } return nil } type ChildStoreRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id } func (x *ChildStoreRes) Reset() { *x = ChildStoreRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildStoreRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildStoreRes) ProtoMessage() {} func (x *ChildStoreRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[67] 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 ChildStoreRes.ProtoReflect.Descriptor instead. func (*ChildStoreRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{67} } func (x *ChildStoreRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildStoreRes) GetHashId() string { if x != nil { return x.HashId } return "" } type ChildUpdateReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //员工id Ip string `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip,omitempty"` //操作ip Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //活动标题 FissionId int64 `protobuf:"varint,6,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法id StartTime int64 `protobuf:"varint,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 ChildType int32 `protobuf:"varint,9,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 PlayType int32 `protobuf:"varint,10,opt,name=play_type,json=playType,proto3" json:"play_type,omitempty"` //子活动玩法类型(1-连续签到/随机,2-次数签到/按概率) Rewards []*ChildUpdateReq_Reward `protobuf:"bytes,11,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 Win_1 *ChildUpdateReq_TaskGroup `protobuf:"bytes,12,opt,name=win_1,json=win1,proto3" json:"win_1,omitempty"` //任务组1 Win_2 *ChildUpdateReq_TaskGroup `protobuf:"bytes,13,opt,name=win_2,json=win2,proto3" json:"win_2,omitempty"` //任务组2 Win_3 *ChildUpdateReq_TaskGroup `protobuf:"bytes,14,opt,name=win_3,json=win3,proto3" json:"win_3,omitempty"` //任务组3 } func (x *ChildUpdateReq) Reset() { *x = ChildUpdateReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildUpdateReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildUpdateReq) ProtoMessage() {} func (x *ChildUpdateReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChildUpdateReq.ProtoReflect.Descriptor instead. func (*ChildUpdateReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{68} } func (x *ChildUpdateReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildUpdateReq) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ChildUpdateReq) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ChildUpdateReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *ChildUpdateReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildUpdateReq) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ChildUpdateReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *ChildUpdateReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *ChildUpdateReq) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } func (x *ChildUpdateReq) GetPlayType() int32 { if x != nil { return x.PlayType } return 0 } func (x *ChildUpdateReq) GetRewards() []*ChildUpdateReq_Reward { if x != nil { return x.Rewards } return nil } func (x *ChildUpdateReq) GetWin_1() *ChildUpdateReq_TaskGroup { if x != nil { return x.Win_1 } return nil } func (x *ChildUpdateReq) GetWin_2() *ChildUpdateReq_TaskGroup { if x != nil { return x.Win_2 } return nil } func (x *ChildUpdateReq) GetWin_3() *ChildUpdateReq_TaskGroup { if x != nil { return x.Win_3 } return nil } type ChildUpdateRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id } func (x *ChildUpdateRes) Reset() { *x = ChildUpdateRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildUpdateRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildUpdateRes) ProtoMessage() {} func (x *ChildUpdateRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChildUpdateRes.ProtoReflect.Descriptor instead. func (*ChildUpdateRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{69} } func (x *ChildUpdateRes) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildUpdateRes) GetHashId() string { if x != nil { return x.HashId } return "" } type ChildShowReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动id } func (x *ChildShowReq) Reset() { *x = ChildShowReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowReq) ProtoMessage() {} func (x *ChildShowReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChildShowReq.ProtoReflect.Descriptor instead. func (*ChildShowReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{70} } func (x *ChildShowReq) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildShowReq) GetHashId() string { if x != nil { return x.HashId } return "" } type ChildShowRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //活动标题 FissionId int64 `protobuf:"varint,2,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法id TStart int64 `protobuf:"varint,3,opt,name=t_start,json=tStart,proto3" json:"t_start,omitempty"` //开始时间时间戳 TEnd int64 `protobuf:"varint,4,opt,name=t_end,json=tEnd,proto3" json:"t_end,omitempty"` //结束时间时间戳 ChildType int32 `protobuf:"varint,5,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 PlayType int32 `protobuf:"varint,6,opt,name=play_type,json=playType,proto3" json:"play_type,omitempty"` //子活动玩法类型(1-连续签到/随机,2-次数签到/按概率) Rewards []*ChildShowRes_Reward `protobuf:"bytes,7,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 Win_1 *ChildShowRes_TaskGroup `protobuf:"bytes,8,opt,name=win_1,json=win1,proto3" json:"win_1,omitempty"` //任务组1 Win_2 *ChildShowRes_TaskGroup `protobuf:"bytes,9,opt,name=win_2,json=win2,proto3" json:"win_2,omitempty"` //任务组2 Win_3 *ChildShowRes_TaskGroup `protobuf:"bytes,10,opt,name=win_3,json=win3,proto3" json:"win_3,omitempty"` //任务组3 } func (x *ChildShowRes) Reset() { *x = ChildShowRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowRes) ProtoMessage() {} func (x *ChildShowRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChildShowRes.ProtoReflect.Descriptor instead. func (*ChildShowRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{71} } func (x *ChildShowRes) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildShowRes) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ChildShowRes) GetTStart() int64 { if x != nil { return x.TStart } return 0 } func (x *ChildShowRes) GetTEnd() int64 { if x != nil { return x.TEnd } return 0 } func (x *ChildShowRes) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } func (x *ChildShowRes) GetPlayType() int32 { if x != nil { return x.PlayType } return 0 } func (x *ChildShowRes) GetRewards() []*ChildShowRes_Reward { if x != nil { return x.Rewards } return nil } func (x *ChildShowRes) GetWin_1() *ChildShowRes_TaskGroup { if x != nil { return x.Win_1 } return nil } func (x *ChildShowRes) GetWin_2() *ChildShowRes_TaskGroup { if x != nil { return x.Win_2 } return nil } func (x *ChildShowRes) GetWin_3() *ChildShowRes_TaskGroup { if x != nil { return x.Win_3 } return nil } type TaskCenterJumpReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CenterHashId string `protobuf:"bytes,1,opt,name=center_hash_id,json=centerHashId,proto3" json:"center_hash_id,omitempty"` //任务中心hash_id ModuleId int64 `protobuf:"varint,2,opt,name=module_id,json=moduleId,proto3" json:"module_id,omitempty"` //模块id CpnIds []int64 `protobuf:"varint,3,rep,packed,name=cpn_ids,json=cpnIds,proto3" json:"cpn_ids,omitempty"` //活动id } func (x *TaskCenterJumpReq) Reset() { *x = TaskCenterJumpReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TaskCenterJumpReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*TaskCenterJumpReq) ProtoMessage() {} func (x *TaskCenterJumpReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TaskCenterJumpReq.ProtoReflect.Descriptor instead. func (*TaskCenterJumpReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{72} } func (x *TaskCenterJumpReq) GetCenterHashId() string { if x != nil { return x.CenterHashId } return "" } func (x *TaskCenterJumpReq) GetModuleId() int64 { if x != nil { return x.ModuleId } return 0 } func (x *TaskCenterJumpReq) GetCpnIds() []int64 { if x != nil { return x.CpnIds } return nil } type TaskCenterJumpRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*TaskCenterJumpRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //列表数据 } func (x *TaskCenterJumpRes) Reset() { *x = TaskCenterJumpRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TaskCenterJumpRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*TaskCenterJumpRes) ProtoMessage() {} func (x *TaskCenterJumpRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TaskCenterJumpRes.ProtoReflect.Descriptor instead. func (*TaskCenterJumpRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{73} } func (x *TaskCenterJumpRes) GetList() []*TaskCenterJumpRes_One { if x != nil { return x.List } return nil } type CondListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []int64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` //任务id } func (x *CondListReq) Reset() { *x = CondListReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CondListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CondListReq) ProtoMessage() {} func (x *CondListReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CondListReq.ProtoReflect.Descriptor instead. func (*CondListReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{74} } func (x *CondListReq) GetIds() []int64 { if x != nil { return x.Ids } return nil } type CondListRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*CondListRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //数据集合 } func (x *CondListRes) Reset() { *x = CondListRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CondListRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CondListRes) ProtoMessage() {} func (x *CondListRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[75] 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 CondListRes.ProtoReflect.Descriptor instead. func (*CondListRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{75} } func (x *CondListRes) GetList() []*CondListRes_One { if x != nil { return x.List } return nil } type CampaignsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectId int64 `protobuf:"varint,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` //项目id CampaignIds []int64 `protobuf:"varint,2,rep,packed,name=campaign_ids,json=campaignIds,proto3" json:"campaign_ids,omitempty"` //活动集合 } func (x *CampaignsReq) Reset() { *x = CampaignsReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignsReq) ProtoMessage() {} func (x *CampaignsReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[76] 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 CampaignsReq.ProtoReflect.Descriptor instead. func (*CampaignsReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{76} } func (x *CampaignsReq) GetProjectId() int64 { if x != nil { return x.ProjectId } return 0 } func (x *CampaignsReq) GetCampaignIds() []int64 { if x != nil { return x.CampaignIds } return nil } type CampaignsRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*CampaignsRes_One `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` //列表数据 } func (x *CampaignsRes) Reset() { *x = CampaignsRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignsRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignsRes) ProtoMessage() {} func (x *CampaignsRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[77] 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 CampaignsRes.ProtoReflect.Descriptor instead. func (*CampaignsRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{77} } func (x *CampaignsRes) GetList() []*CampaignsRes_One { if x != nil { return x.List } return nil } type SetLvApiReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectHashId string `protobuf:"bytes,1,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id UrlId int64 `protobuf:"varint,2,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //地址id } func (x *SetLvApiReq) Reset() { *x = SetLvApiReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetLvApiReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetLvApiReq) ProtoMessage() {} func (x *SetLvApiReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[78] 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 SetLvApiReq.ProtoReflect.Descriptor instead. func (*SetLvApiReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{78} } func (x *SetLvApiReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } func (x *SetLvApiReq) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } type SetLvApiRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetLvApiRes) Reset() { *x = SetLvApiRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetLvApiRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetLvApiRes) ProtoMessage() {} func (x *SetLvApiRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[79] 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 SetLvApiRes.ProtoReflect.Descriptor instead. func (*SetLvApiRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{79} } type GetLvApiReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProjectHashId string `protobuf:"bytes,1,opt,name=project_hash_id,json=projectHashId,proto3" json:"project_hash_id,omitempty"` //项目hash_id } func (x *GetLvApiReq) Reset() { *x = GetLvApiReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetLvApiReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetLvApiReq) ProtoMessage() {} func (x *GetLvApiReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[80] 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 GetLvApiReq.ProtoReflect.Descriptor instead. func (*GetLvApiReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{80} } func (x *GetLvApiReq) GetProjectHashId() string { if x != nil { return x.ProjectHashId } return "" } type GetLvApiRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UrlId int64 `protobuf:"varint,1,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //地址id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //地址备注 } func (x *GetLvApiRes) Reset() { *x = GetLvApiRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetLvApiRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetLvApiRes) ProtoMessage() {} func (x *GetLvApiRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[81] 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 GetLvApiRes.ProtoReflect.Descriptor instead. func (*GetLvApiRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{81} } func (x *GetLvApiRes) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *GetLvApiRes) GetTitle() string { if x != nil { return x.Title } return "" } type VsSettlementReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignHashId string `protobuf:"bytes,1,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id ScheduleId int64 `protobuf:"varint,2,opt,name=schedule_id,json=scheduleId,proto3" json:"schedule_id,omitempty"` //赛事id WinTeamId int64 `protobuf:"varint,3,opt,name=win_team_id,json=winTeamId,proto3" json:"win_team_id,omitempty"` //胜利队伍id Scores []*VsSettlementReq_Score `protobuf:"bytes,4,rep,name=scores,proto3" json:"scores,omitempty"` //队伍得分 } func (x *VsSettlementReq) Reset() { *x = VsSettlementReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementReq) ProtoMessage() {} func (x *VsSettlementReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[82] 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 VsSettlementReq.ProtoReflect.Descriptor instead. func (*VsSettlementReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{82} } func (x *VsSettlementReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } func (x *VsSettlementReq) GetScheduleId() int64 { if x != nil { return x.ScheduleId } return 0 } func (x *VsSettlementReq) GetWinTeamId() int64 { if x != nil { return x.WinTeamId } return 0 } func (x *VsSettlementReq) GetScores() []*VsSettlementReq_Score { if x != nil { return x.Scores } return nil } type VsSettlementRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ScheduleId int32 `protobuf:"varint,1,opt,name=schedule_id,json=scheduleId,proto3" json:"schedule_id,omitempty"` //赛程id PkTeam *VsSettlementRes_PkTeam `protobuf:"bytes,2,opt,name=pk_team,json=pkTeam,proto3" json:"pk_team,omitempty"` //比赛数据 } func (x *VsSettlementRes) Reset() { *x = VsSettlementRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementRes) ProtoMessage() {} func (x *VsSettlementRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VsSettlementRes.ProtoReflect.Descriptor instead. func (*VsSettlementRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{83} } func (x *VsSettlementRes) GetScheduleId() int32 { if x != nil { return x.ScheduleId } return 0 } func (x *VsSettlementRes) GetPkTeam() *VsSettlementRes_PkTeam { if x != nil { return x.PkTeam } return nil } type VsSettlementInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignHashId string `protobuf:"bytes,1,opt,name=campaign_hash_id,json=campaignHashId,proto3" json:"campaign_hash_id,omitempty"` //活动hash_id ScheduleId int64 `protobuf:"varint,2,opt,name=schedule_id,json=scheduleId,proto3" json:"schedule_id,omitempty"` //赛事id } func (x *VsSettlementInfoReq) Reset() { *x = VsSettlementInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementInfoReq) ProtoMessage() {} func (x *VsSettlementInfoReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VsSettlementInfoReq.ProtoReflect.Descriptor instead. func (*VsSettlementInfoReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{84} } func (x *VsSettlementInfoReq) GetCampaignHashId() string { if x != nil { return x.CampaignHashId } return "" } func (x *VsSettlementInfoReq) GetScheduleId() int64 { if x != nil { return x.ScheduleId } return 0 } type VsSettlementInfoRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WinType int32 `protobuf:"varint,1,opt,name=win_type,json=winType,proto3" json:"win_type,omitempty"` //结算获奖类型(1-队伍胜利,2-平局) WinTeamId int64 `protobuf:"varint,2,opt,name=win_team_id,json=winTeamId,proto3" json:"win_team_id,omitempty"` //胜利队伍id Teams []*VsSettlementInfoRes_Team `protobuf:"bytes,3,rep,name=teams,proto3" json:"teams,omitempty"` //队伍数据 } func (x *VsSettlementInfoRes) Reset() { *x = VsSettlementInfoRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementInfoRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementInfoRes) ProtoMessage() {} func (x *VsSettlementInfoRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VsSettlementInfoRes.ProtoReflect.Descriptor instead. func (*VsSettlementInfoRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{85} } func (x *VsSettlementInfoRes) GetWinType() int32 { if x != nil { return x.WinType } return 0 } func (x *VsSettlementInfoRes) GetWinTeamId() int64 { if x != nil { return x.WinTeamId } return 0 } func (x *VsSettlementInfoRes) GetTeams() []*VsSettlementInfoRes_Team { if x != nil { return x.Teams } return nil } type ActionListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` //活动id } func (x *ActionListReq) Reset() { *x = ActionListReq{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionListReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionListReq) ProtoMessage() {} func (x *ActionListReq) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ActionListReq.ProtoReflect.Descriptor instead. func (*ActionListReq) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{86} } func (x *ActionListReq) GetCampaignId() int64 { if x != nil { return x.CampaignId } return 0 } type ActionListRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ActionTypes []int32 `protobuf:"varint,1,rep,packed,name=action_types,json=actionTypes,proto3" json:"action_types,omitempty"` //行为集合 } func (x *ActionListRes) Reset() { *x = ActionListRes{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionListRes) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionListRes) ProtoMessage() {} func (x *ActionListRes) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ActionListRes.ProtoReflect.Descriptor instead. func (*ActionListRes) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{87} } func (x *ActionListRes) GetActionTypes() []int32 { if x != nil { return x.ActionTypes } return nil } type ListRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 CoverUrl string `protobuf:"bytes,4,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` //活动封面 TempGroupMark string `protobuf:"bytes,5,opt,name=temp_group_mark,json=tempGroupMark,proto3" json:"temp_group_mark,omitempty"` //模版组标识 TempHashId string `protobuf:"bytes,6,opt,name=temp_hash_id,json=tempHashId,proto3" json:"temp_hash_id,omitempty"` //模版hash_id FissionId int64 `protobuf:"varint,7,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法ID FissionMark string `protobuf:"bytes,8,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //活动类型玩法标识 StartTime int64 `protobuf:"varint,9,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,10,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 ShareLink string `protobuf:"bytes,11,opt,name=share_link,json=shareLink,proto3" json:"share_link,omitempty"` //分享链接 VisitorNum int64 `protobuf:"varint,12,opt,name=visitor_num,json=visitorNum,proto3" json:"visitor_num,omitempty"` //访问人数 DownloadNum int64 `protobuf:"varint,13,opt,name=download_num,json=downloadNum,proto3" json:"download_num,omitempty"` //新增下载数 Status int32 `protobuf:"varint,14,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线,4-预发布) ViewLink string `protobuf:"bytes,15,opt,name=view_link,json=viewLink,proto3" json:"view_link,omitempty"` //预览地址 TOffset int32 `protobuf:"varint,16,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 LangTypes []int32 `protobuf:"varint,17,rep,packed,name=lang_types,json=langTypes,proto3" json:"lang_types,omitempty"` //支持的语种 TempLangType int32 `protobuf:"varint,18,opt,name=temp_lang_type,json=tempLangType,proto3" json:"temp_lang_type,omitempty"` //模版支持语言 Target int32 `protobuf:"varint,19,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存;4-w2a互动广告) HasWeb int32 `protobuf:"varint,20,opt,name=has_web,json=hasWeb,proto3" json:"has_web,omitempty"` //是否有站外活动(0-否,1-是) HasWarmUp int32 `protobuf:"varint,21,opt,name=has_warm_up,json=hasWarmUp,proto3" json:"has_warm_up,omitempty"` //是否开启预热(0-否,1-是) PreRunTime int64 `protobuf:"varint,22,opt,name=pre_run_time,json=preRunTime,proto3" json:"pre_run_time,omitempty"` //预发布转正式发布时间戳 AdsType int32 `protobuf:"varint,23,opt,name=ads_type,json=adsType,proto3" json:"ads_type,omitempty"` //广告状态(0-不启用广告,1-跟随项目配置,2-活动开启) NewReport bool `protobuf:"varint,24,opt,name=new_report,json=newReport,proto3" json:"new_report,omitempty"` //是否使用新报表 LangTz []*ListRes_LangTz `protobuf:"bytes,25,rep,name=lang_tz,json=langTz,proto3" json:"lang_tz,omitempty"` //语言时区数据是 CreatedAt int64 `protobuf:"varint,26,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` //创建时间 WhileList []string `protobuf:"bytes,27,rep,name=while_list,json=whileList,proto3" json:"while_list,omitempty"` //白名单用户id列表 UpdatedAt int64 `protobuf:"varint,28,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` //更新时间 ChannelList []*ListRes_Channel `protobuf:"bytes,29,rep,name=channel_list,json=channelList,proto3" json:"channel_list,omitempty"` //渠道列表 CondList []*ListRes_Cond `protobuf:"bytes,30,rep,name=cond_list,json=condList,proto3" json:"cond_list,omitempty"` //任务列表 CreatorName string `protobuf:"bytes,31,opt,name=creator_name,json=creatorName,proto3" json:"creator_name,omitempty"` //活动创建者在后台的名称 CreatorAccount string `protobuf:"bytes,32,opt,name=creator_account,json=creatorAccount,proto3" json:"creator_account,omitempty"` //活动创建者在后台的登陆账号 } func (x *ListRes_One) Reset() { *x = ListRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRes_One) ProtoMessage() {} func (x *ListRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRes_One.ProtoReflect.Descriptor instead. func (*ListRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{1, 0} } func (x *ListRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ListRes_One) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ListRes_One) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ListRes_One) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *ListRes_One) GetTempGroupMark() string { if x != nil { return x.TempGroupMark } return "" } func (x *ListRes_One) GetTempHashId() string { if x != nil { return x.TempHashId } return "" } func (x *ListRes_One) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ListRes_One) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *ListRes_One) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *ListRes_One) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *ListRes_One) GetShareLink() string { if x != nil { return x.ShareLink } return "" } func (x *ListRes_One) GetVisitorNum() int64 { if x != nil { return x.VisitorNum } return 0 } func (x *ListRes_One) GetDownloadNum() int64 { if x != nil { return x.DownloadNum } return 0 } func (x *ListRes_One) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ListRes_One) GetViewLink() string { if x != nil { return x.ViewLink } return "" } func (x *ListRes_One) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *ListRes_One) GetLangTypes() []int32 { if x != nil { return x.LangTypes } return nil } func (x *ListRes_One) GetTempLangType() int32 { if x != nil { return x.TempLangType } return 0 } func (x *ListRes_One) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *ListRes_One) GetHasWeb() int32 { if x != nil { return x.HasWeb } return 0 } func (x *ListRes_One) GetHasWarmUp() int32 { if x != nil { return x.HasWarmUp } return 0 } func (x *ListRes_One) GetPreRunTime() int64 { if x != nil { return x.PreRunTime } return 0 } func (x *ListRes_One) GetAdsType() int32 { if x != nil { return x.AdsType } return 0 } func (x *ListRes_One) GetNewReport() bool { if x != nil { return x.NewReport } return false } func (x *ListRes_One) GetLangTz() []*ListRes_LangTz { if x != nil { return x.LangTz } return nil } func (x *ListRes_One) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *ListRes_One) GetWhileList() []string { if x != nil { return x.WhileList } return nil } func (x *ListRes_One) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *ListRes_One) GetChannelList() []*ListRes_Channel { if x != nil { return x.ChannelList } return nil } func (x *ListRes_One) GetCondList() []*ListRes_Cond { if x != nil { return x.CondList } return nil } func (x *ListRes_One) GetCreatorName() string { if x != nil { return x.CreatorName } return "" } func (x *ListRes_One) GetCreatorAccount() string { if x != nil { return x.CreatorAccount } return "" } type ListRes_LangTz struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //对应语言标识 TOffset int32 `protobuf:"varint,2,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时间偏移量 Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线,4-预发布) LangType int32 `protobuf:"varint,4,opt,name=lang_type,json=langType,proto3" json:"lang_type,omitempty"` //语言数字标识 } func (x *ListRes_LangTz) Reset() { *x = ListRes_LangTz{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRes_LangTz) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRes_LangTz) ProtoMessage() {} func (x *ListRes_LangTz) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[89] 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 ListRes_LangTz.ProtoReflect.Descriptor instead. func (*ListRes_LangTz) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{1, 1} } func (x *ListRes_LangTz) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ListRes_LangTz) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *ListRes_LangTz) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ListRes_LangTz) GetLangType() int32 { if x != nil { return x.LangType } return 0 } type ListRes_Channel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //渠道标题 Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` //渠道链接 CType int32 `protobuf:"varint,3,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` //渠道类型(1-站内渠道,2-站外渠道) } func (x *ListRes_Channel) Reset() { *x = ListRes_Channel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRes_Channel) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRes_Channel) ProtoMessage() {} func (x *ListRes_Channel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[90] 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 ListRes_Channel.ProtoReflect.Descriptor instead. func (*ListRes_Channel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{1, 2} } func (x *ListRes_Channel) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ListRes_Channel) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ListRes_Channel) GetCType() int32 { if x != nil { return x.CType } return 0 } type ListRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event string `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //事件 Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` //事件key Val string `protobuf:"bytes,3,opt,name=val,proto3" json:"val,omitempty"` //事件key对应的值 } func (x *ListRes_Cond) Reset() { *x = ListRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRes_Cond) ProtoMessage() {} func (x *ListRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[91] 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 ListRes_Cond.ProtoReflect.Descriptor instead. func (*ListRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{1, 3} } func (x *ListRes_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ListRes_Cond) GetKey() string { if x != nil { return x.Key } return "" } func (x *ListRes_Cond) GetVal() string { if x != nil { return x.Val } return "" } type ShareRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //标题 Logo string `protobuf:"bytes,3,opt,name=logo,proto3" json:"logo,omitempty"` //图标 Scheme string `protobuf:"bytes,4,opt,name=scheme,proto3" json:"scheme,omitempty"` //Scheme IosScheme string `protobuf:"bytes,5,opt,name=ios_scheme,json=iosScheme,proto3" json:"ios_scheme,omitempty"` //ios Scheme } func (x *ShareRes_One) Reset() { *x = ShareRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShareRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShareRes_One) ProtoMessage() {} func (x *ShareRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[92] 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 ShareRes_One.ProtoReflect.Descriptor instead. func (*ShareRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{3, 0} } func (x *ShareRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShareRes_One) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShareRes_One) GetLogo() string { if x != nil { return x.Logo } return "" } func (x *ShareRes_One) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *ShareRes_One) GetIosScheme() string { if x != nil { return x.IosScheme } return "" } type StoreReq_GashaponStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 MachineImg string `protobuf:"bytes,4,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 EggType int32 `protobuf:"varint,6,opt,name=egg_type,json=eggType,proto3" json:"egg_type,omitempty"` //类型 EggImgs []string `protobuf:"bytes,7,rep,name=egg_imgs,json=eggImgs,proto3" json:"egg_imgs,omitempty"` //扭蛋素材 } func (x *StoreReq_GashaponStyle) Reset() { *x = StoreReq_GashaponStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_GashaponStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_GashaponStyle) ProtoMessage() {} func (x *StoreReq_GashaponStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[93] 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 StoreReq_GashaponStyle.ProtoReflect.Descriptor instead. func (*StoreReq_GashaponStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 0} } func (x *StoreReq_GashaponStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *StoreReq_GashaponStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *StoreReq_GashaponStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *StoreReq_GashaponStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *StoreReq_GashaponStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *StoreReq_GashaponStyle) GetEggType() int32 { if x != nil { return x.EggType } return 0 } func (x *StoreReq_GashaponStyle) GetEggImgs() []string { if x != nil { return x.EggImgs } return nil } type StoreReq_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FirstVisit *StoreReq_EventOne `protobuf:"bytes,1,opt,name=first_visit,json=firstVisit,proto3" json:"first_visit,omitempty"` //首次访问 } func (x *StoreReq_Event) Reset() { *x = StoreReq_Event{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Event) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Event) ProtoMessage() {} func (x *StoreReq_Event) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[94] 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 StoreReq_Event.ProtoReflect.Descriptor instead. func (*StoreReq_Event) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 1} } func (x *StoreReq_Event) GetFirstVisit() *StoreReq_EventOne { if x != nil { return x.FirstVisit } return nil } type StoreReq_EventOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Rewards []*StoreReq_EventReward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖励 } func (x *StoreReq_EventOne) Reset() { *x = StoreReq_EventOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_EventOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_EventOne) ProtoMessage() {} func (x *StoreReq_EventOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[95] 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 StoreReq_EventOne.ProtoReflect.Descriptor instead. func (*StoreReq_EventOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 2} } func (x *StoreReq_EventOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_EventOne) GetRewards() []*StoreReq_EventReward { if x != nil { return x.Rewards } return nil } type StoreReq_EventReward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PropMark string `protobuf:"bytes,1,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Reward *StoreReq_Reward `protobuf:"bytes,2,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,4,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *StoreReq_EventReward) Reset() { *x = StoreReq_EventReward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_EventReward) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_EventReward) ProtoMessage() {} func (x *StoreReq_EventReward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[96] 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 StoreReq_EventReward.ProtoReflect.Descriptor instead. func (*StoreReq_EventReward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 3} } func (x *StoreReq_EventReward) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *StoreReq_EventReward) GetReward() *StoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *StoreReq_EventReward) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_EventReward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type StoreReq_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖次数 PropMarks []string `protobuf:"bytes,2,rep,name=prop_marks,json=propMarks,proto3" json:"prop_marks,omitempty"` //道具类型(three - +3道具牌,five - +5道具牌,fix - 固定颜色道具牌) Red *StoreReq_UnoGroup `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow *StoreReq_UnoGroup `protobuf:"bytes,4,opt,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue *StoreReq_UnoGroup `protobuf:"bytes,5,opt,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green *StoreReq_UnoGroup `protobuf:"bytes,6,opt,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *StoreReq_Uno) Reset() { *x = StoreReq_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Uno) ProtoMessage() {} func (x *StoreReq_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[97] 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 StoreReq_Uno.ProtoReflect.Descriptor instead. func (*StoreReq_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 4} } func (x *StoreReq_Uno) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Uno) GetPropMarks() []string { if x != nil { return x.PropMarks } return nil } func (x *StoreReq_Uno) GetRed() *StoreReq_UnoGroup { if x != nil { return x.Red } return nil } func (x *StoreReq_Uno) GetYellow() *StoreReq_UnoGroup { if x != nil { return x.Yellow } return nil } func (x *StoreReq_Uno) GetBlue() *StoreReq_UnoGroup { if x != nil { return x.Blue } return nil } func (x *StoreReq_Uno) GetGreen() *StoreReq_UnoGroup { if x != nil { return x.Green } return nil } type StoreReq_UnoGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Odds string `protobuf:"bytes,1,opt,name=odds,proto3" json:"odds,omitempty"` //获得牌型概率 Reward *StoreReq_Reward `protobuf:"bytes,2,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 OpenRule int32 `protobuf:"varint,3,opt,name=open_rule,json=openRule,proto3" json:"open_rule,omitempty"` //是否开启得牌规则(0-否,1-是) LimitRule *StoreReq_UnoLimitRule `protobuf:"bytes,4,opt,name=limit_rule,json=limitRule,proto3" json:"limit_rule,omitempty"` //得牌规则 CustomCard int32 `protobuf:"varint,5,opt,name=custom_card,json=customCard,proto3" json:"custom_card,omitempty"` //自定义卡牌(0-否,1-是) Cards []*StoreReq_UnoCard `protobuf:"bytes,6,rep,name=cards,proto3" json:"cards,omitempty"` //自定义卡牌 } func (x *StoreReq_UnoGroup) Reset() { *x = StoreReq_UnoGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_UnoGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_UnoGroup) ProtoMessage() {} func (x *StoreReq_UnoGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[98] 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 StoreReq_UnoGroup.ProtoReflect.Descriptor instead. func (*StoreReq_UnoGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 5} } func (x *StoreReq_UnoGroup) GetOdds() string { if x != nil { return x.Odds } return "" } func (x *StoreReq_UnoGroup) GetReward() *StoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *StoreReq_UnoGroup) GetOpenRule() int32 { if x != nil { return x.OpenRule } return 0 } func (x *StoreReq_UnoGroup) GetLimitRule() *StoreReq_UnoLimitRule { if x != nil { return x.LimitRule } return nil } func (x *StoreReq_UnoGroup) GetCustomCard() int32 { if x != nil { return x.CustomCard } return 0 } func (x *StoreReq_UnoGroup) GetCards() []*StoreReq_UnoCard { if x != nil { return x.Cards } return nil } type StoreReq_UnoLimitRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitNum int32 `protobuf:"varint,1,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始的最大可获得牌型数 SignDay int32 `protobuf:"varint,2,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddNum int32 `protobuf:"varint,3,opt,name=add_num,json=addNum,proto3" json:"add_num,omitempty"` //完成条件可获得最大牌型数 ResetType int32 `protobuf:"varint,4,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置规则(1-不重置,2-获奖后重置) } func (x *StoreReq_UnoLimitRule) Reset() { *x = StoreReq_UnoLimitRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_UnoLimitRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_UnoLimitRule) ProtoMessage() {} func (x *StoreReq_UnoLimitRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[99] 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 StoreReq_UnoLimitRule.ProtoReflect.Descriptor instead. func (*StoreReq_UnoLimitRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 6} } func (x *StoreReq_UnoLimitRule) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } func (x *StoreReq_UnoLimitRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *StoreReq_UnoLimitRule) GetAddNum() int32 { if x != nil { return x.AddNum } return 0 } func (x *StoreReq_UnoLimitRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type StoreReq_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,2,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,3,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,4,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,5,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 } func (x *StoreReq_UnoCard) Reset() { *x = StoreReq_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_UnoCard) ProtoMessage() {} func (x *StoreReq_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[100] 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 StoreReq_UnoCard.ProtoReflect.Descriptor instead. func (*StoreReq_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 7} } func (x *StoreReq_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *StoreReq_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *StoreReq_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *StoreReq_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } type StoreReq_Vs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始投票次数 EachLimitNum int32 `protobuf:"varint,2,opt,name=each_limit_num,json=eachLimitNum,proto3" json:"each_limit_num,omitempty"` //每场可投票次数 OpenPoint int32 `protobuf:"varint,3,opt,name=open_point,json=openPoint,proto3" json:"open_point,omitempty"` //是否开启积分(0-否,1-是) PointsNum int32 `protobuf:"varint,4,opt,name=points_num,json=pointsNum,proto3" json:"points_num,omitempty"` //投票扣除积分数 MallOpen int32 `protobuf:"varint,5,opt,name=mall_open,json=mallOpen,proto3" json:"mall_open,omitempty"` //是否使用积分商城(0-否,1-是) MallId int64 `protobuf:"varint,6,opt,name=mall_id,json=mallId,proto3" json:"mall_id,omitempty"` //兑换商城id VsTz int32 `protobuf:"varint,7,opt,name=vs_tz,json=vsTz,proto3" json:"vs_tz,omitempty"` //比赛时区 ClaimType int32 `protobuf:"varint,8,opt,name=claim_type,json=claimType,proto3" json:"claim_type,omitempty"` //领奖方式(1-结算后自动发奖,2-结算后进入活动后发奖,3-结算后手动领奖) Schedules []*StoreReq_Schedule `protobuf:"bytes,9,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 IconMall string `protobuf:"bytes,10,opt,name=icon_mall,json=iconMall,proto3" json:"icon_mall,omitempty"` //商城图标 IconReward string `protobuf:"bytes,11,opt,name=icon_reward,json=iconReward,proto3" json:"icon_reward,omitempty"` //奖励记录图标 IconSchedule string `protobuf:"bytes,12,opt,name=icon_schedule,json=iconSchedule,proto3" json:"icon_schedule,omitempty"` //赛程图标 } func (x *StoreReq_Vs) Reset() { *x = StoreReq_Vs{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Vs) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Vs) ProtoMessage() {} func (x *StoreReq_Vs) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[101] 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 StoreReq_Vs.ProtoReflect.Descriptor instead. func (*StoreReq_Vs) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 8} } func (x *StoreReq_Vs) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Vs) GetEachLimitNum() int32 { if x != nil { return x.EachLimitNum } return 0 } func (x *StoreReq_Vs) GetOpenPoint() int32 { if x != nil { return x.OpenPoint } return 0 } func (x *StoreReq_Vs) GetPointsNum() int32 { if x != nil { return x.PointsNum } return 0 } func (x *StoreReq_Vs) GetMallOpen() int32 { if x != nil { return x.MallOpen } return 0 } func (x *StoreReq_Vs) GetMallId() int64 { if x != nil { return x.MallId } return 0 } func (x *StoreReq_Vs) GetVsTz() int32 { if x != nil { return x.VsTz } return 0 } func (x *StoreReq_Vs) GetClaimType() int32 { if x != nil { return x.ClaimType } return 0 } func (x *StoreReq_Vs) GetSchedules() []*StoreReq_Schedule { if x != nil { return x.Schedules } return nil } func (x *StoreReq_Vs) GetIconMall() string { if x != nil { return x.IconMall } return "" } func (x *StoreReq_Vs) GetIconReward() string { if x != nil { return x.IconReward } return "" } func (x *StoreReq_Vs) GetIconSchedule() string { if x != nil { return x.IconSchedule } return "" } type StoreReq_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PkTeams []*StoreReq_PkTeam `protobuf:"bytes,1,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *StoreReq_Schedule) Reset() { *x = StoreReq_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Schedule) ProtoMessage() {} func (x *StoreReq_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[102] 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 StoreReq_Schedule.ProtoReflect.Descriptor instead. func (*StoreReq_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 9} } func (x *StoreReq_Schedule) GetPkTeams() []*StoreReq_PkTeam { if x != nil { return x.PkTeams } return nil } type StoreReq_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Teams []*StoreReq_Team `protobuf:"bytes,1,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VoteStart string `protobuf:"bytes,2,opt,name=vote_start,json=voteStart,proto3" json:"vote_start,omitempty"` //开始时间 VoteEnd string `protobuf:"bytes,3,opt,name=vote_end,json=voteEnd,proto3" json:"vote_end,omitempty"` //结束时间 VsDate string `protobuf:"bytes,4,opt,name=vs_date,json=vsDate,proto3" json:"vs_date,omitempty"` //比赛开始时间 VsImg string `protobuf:"bytes,5,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,6,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 PropMark string `protobuf:"bytes,7,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(reward-奖品,point-积分) RewardId int64 `protobuf:"varint,8,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库奖品id PropNum int32 `protobuf:"varint,9,opt,name=prop_num,json=propNum,proto3" json:"prop_num,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,10,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 OtherVote []string `protobuf:"bytes,11,rep,name=other_vote,json=otherVote,proto3" json:"other_vote,omitempty"` //其他投票方式 OpenOdds int32 `protobuf:"varint,12,opt,name=open_odds,json=openOdds,proto3" json:"open_odds,omitempty"` //是否开启赔率(0-否,1-是) OddsLeft string `protobuf:"bytes,13,opt,name=odds_left,json=oddsLeft,proto3" json:"odds_left,omitempty"` //左边赔率 OddsRight string `protobuf:"bytes,14,opt,name=odds_right,json=oddsRight,proto3" json:"odds_right,omitempty"` //右边赔率 OddsDraw string `protobuf:"bytes,15,opt,name=odds_draw,json=oddsDraw,proto3" json:"odds_draw,omitempty"` //平局赔率 } func (x *StoreReq_PkTeam) Reset() { *x = StoreReq_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_PkTeam) ProtoMessage() {} func (x *StoreReq_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[103] 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 StoreReq_PkTeam.ProtoReflect.Descriptor instead. func (*StoreReq_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 10} } func (x *StoreReq_PkTeam) GetTeams() []*StoreReq_Team { if x != nil { return x.Teams } return nil } func (x *StoreReq_PkTeam) GetVoteStart() string { if x != nil { return x.VoteStart } return "" } func (x *StoreReq_PkTeam) GetVoteEnd() string { if x != nil { return x.VoteEnd } return "" } func (x *StoreReq_PkTeam) GetVsDate() string { if x != nil { return x.VsDate } return "" } func (x *StoreReq_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *StoreReq_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *StoreReq_PkTeam) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *StoreReq_PkTeam) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *StoreReq_PkTeam) GetPropNum() int32 { if x != nil { return x.PropNum } return 0 } func (x *StoreReq_PkTeam) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *StoreReq_PkTeam) GetOtherVote() []string { if x != nil { return x.OtherVote } return nil } func (x *StoreReq_PkTeam) GetOpenOdds() int32 { if x != nil { return x.OpenOdds } return 0 } func (x *StoreReq_PkTeam) GetOddsLeft() string { if x != nil { return x.OddsLeft } return "" } func (x *StoreReq_PkTeam) GetOddsRight() string { if x != nil { return x.OddsRight } return "" } func (x *StoreReq_PkTeam) GetOddsDraw() string { if x != nil { return x.OddsDraw } return "" } type StoreReq_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,2,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *StoreReq_Team) Reset() { *x = StoreReq_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Team) ProtoMessage() {} func (x *StoreReq_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[104] 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 StoreReq_Team.ProtoReflect.Descriptor instead. func (*StoreReq_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 11} } func (x *StoreReq_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *StoreReq_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type StoreReq_Chat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启ai陪伴(0-关闭,1-开启) HeaderImg string `protobuf:"bytes,2,opt,name=header_img,json=headerImg,proto3" json:"header_img,omitempty"` //宠物头像 ChatBg string `protobuf:"bytes,3,opt,name=chat_bg,json=chatBg,proto3" json:"chat_bg,omitempty"` //聊天背景 DayLimit int32 `protobuf:"varint,4,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日聊天上限 } func (x *StoreReq_Chat) Reset() { *x = StoreReq_Chat{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Chat) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Chat) ProtoMessage() {} func (x *StoreReq_Chat) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[105] 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 StoreReq_Chat.ProtoReflect.Descriptor instead. func (*StoreReq_Chat) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 12} } func (x *StoreReq_Chat) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_Chat) GetHeaderImg() string { if x != nil { return x.HeaderImg } return "" } func (x *StoreReq_Chat) GetChatBg() string { if x != nil { return x.ChatBg } return "" } func (x *StoreReq_Chat) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } type StoreReq_PointsUse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启积分消耗(0-否,1-是) Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` //积分icon图 UrlId int64 `protobuf:"varint,3,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id UseNum int32 `protobuf:"varint,4,opt,name=use_num,json=useNum,proto3" json:"use_num,omitempty"` //单次兑换使用积分数量 DayLimit int32 `protobuf:"varint,5,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日可兑换次数 TotalLimit int32 `protobuf:"varint,6,opt,name=total_limit,json=totalLimit,proto3" json:"total_limit,omitempty"` //总兑换次数 } func (x *StoreReq_PointsUse) Reset() { *x = StoreReq_PointsUse{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_PointsUse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_PointsUse) ProtoMessage() {} func (x *StoreReq_PointsUse) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[106] 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 StoreReq_PointsUse.ProtoReflect.Descriptor instead. func (*StoreReq_PointsUse) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 13} } func (x *StoreReq_PointsUse) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_PointsUse) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *StoreReq_PointsUse) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *StoreReq_PointsUse) GetUseNum() int32 { if x != nil { return x.UseNum } return 0 } func (x *StoreReq_PointsUse) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *StoreReq_PointsUse) GetTotalLimit() int32 { if x != nil { return x.TotalLimit } return 0 } type StoreReq_FlipStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 CardImg string `protobuf:"bytes,6,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡片素材 } func (x *StoreReq_FlipStyle) Reset() { *x = StoreReq_FlipStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_FlipStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_FlipStyle) ProtoMessage() {} func (x *StoreReq_FlipStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[107] 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 StoreReq_FlipStyle.ProtoReflect.Descriptor instead. func (*StoreReq_FlipStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 14} } func (x *StoreReq_FlipStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *StoreReq_FlipStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *StoreReq_FlipStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *StoreReq_FlipStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *StoreReq_FlipStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *StoreReq_FlipStyle) GetCardImg() string { if x != nil { return x.CardImg } return "" } type StoreReq_GridStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 DisablePlayImg string `protobuf:"bytes,6,opt,name=disable_play_img,json=disablePlayImg,proto3" json:"disable_play_img,omitempty"` //Go按钮禁用 MachineImg string `protobuf:"bytes,7,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 GridImg string `protobuf:"bytes,8,opt,name=grid_img,json=gridImg,proto3" json:"grid_img,omitempty"` //方格图 ActivateImg string `protobuf:"bytes,9,opt,name=activate_img,json=activateImg,proto3" json:"activate_img,omitempty"` //方格激活图 } func (x *StoreReq_GridStyle) Reset() { *x = StoreReq_GridStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_GridStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_GridStyle) ProtoMessage() {} func (x *StoreReq_GridStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[108] 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 StoreReq_GridStyle.ProtoReflect.Descriptor instead. func (*StoreReq_GridStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 15} } func (x *StoreReq_GridStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *StoreReq_GridStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *StoreReq_GridStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *StoreReq_GridStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *StoreReq_GridStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *StoreReq_GridStyle) GetDisablePlayImg() string { if x != nil { return x.DisablePlayImg } return "" } func (x *StoreReq_GridStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *StoreReq_GridStyle) GetGridImg() string { if x != nil { return x.GridImg } return "" } func (x *StoreReq_GridStyle) GetActivateImg() string { if x != nil { return x.ActivateImg } return "" } type StoreReq_WheelStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 Bottom1 string `protobuf:"bytes,4,opt,name=bottom1,proto3" json:"bottom1,omitempty"` //底部颜色1 Bottom2 string `protobuf:"bytes,5,opt,name=bottom2,proto3" json:"bottom2,omitempty"` //底部颜色2 Bottom3 string `protobuf:"bytes,6,opt,name=bottom3,proto3" json:"bottom3,omitempty"` //底部颜色3 Pointer string `protobuf:"bytes,7,opt,name=pointer,proto3" json:"pointer,omitempty"` //指针图片 PlayBtn string `protobuf:"bytes,8,opt,name=play_btn,json=playBtn,proto3" json:"play_btn,omitempty"` //玩法按钮图片 BorderImg string `protobuf:"bytes,9,opt,name=border_img,json=borderImg,proto3" json:"border_img,omitempty"` //边框图片 ButtonColor string `protobuf:"bytes,10,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 WheelTextColor string `protobuf:"bytes,11,opt,name=wheel_text_color,json=wheelTextColor,proto3" json:"wheel_text_color,omitempty"` //转盘文字颜色 } func (x *StoreReq_WheelStyle) Reset() { *x = StoreReq_WheelStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_WheelStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_WheelStyle) ProtoMessage() {} func (x *StoreReq_WheelStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_WheelStyle.ProtoReflect.Descriptor instead. func (*StoreReq_WheelStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 16} } func (x *StoreReq_WheelStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *StoreReq_WheelStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *StoreReq_WheelStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *StoreReq_WheelStyle) GetBottom1() string { if x != nil { return x.Bottom1 } return "" } func (x *StoreReq_WheelStyle) GetBottom2() string { if x != nil { return x.Bottom2 } return "" } func (x *StoreReq_WheelStyle) GetBottom3() string { if x != nil { return x.Bottom3 } return "" } func (x *StoreReq_WheelStyle) GetPointer() string { if x != nil { return x.Pointer } return "" } func (x *StoreReq_WheelStyle) GetPlayBtn() string { if x != nil { return x.PlayBtn } return "" } func (x *StoreReq_WheelStyle) GetBorderImg() string { if x != nil { return x.BorderImg } return "" } func (x *StoreReq_WheelStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *StoreReq_WheelStyle) GetWheelTextColor() string { if x != nil { return x.WheelTextColor } return "" } type StoreReq_Child struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id ChildType int32 `protobuf:"varint,2,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 } func (x *StoreReq_Child) Reset() { *x = StoreReq_Child{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Child) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Child) ProtoMessage() {} func (x *StoreReq_Child) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_Child.ProtoReflect.Descriptor instead. func (*StoreReq_Child) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 17} } func (x *StoreReq_Child) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *StoreReq_Child) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } type StoreReq_Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RuleTextColor string `protobuf:"bytes,1,opt,name=rule_text_color,json=ruleTextColor,proto3" json:"rule_text_color,omitempty"` //规则文字颜色 RuleBgColor string `protobuf:"bytes,2,opt,name=rule_bg_color,json=ruleBgColor,proto3" json:"rule_bg_color,omitempty"` //规则背景颜色 ShareText string `protobuf:"bytes,3,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,4,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 HasRank int32 `protobuf:"varint,5,opt,name=has_rank,json=hasRank,proto3" json:"has_rank,omitempty"` //是否展示中奖纪录(1-是,0-否) RankBackgroundColor string `protobuf:"bytes,6,opt,name=rank_background_color,json=rankBackgroundColor,proto3" json:"rank_background_color,omitempty"` //排行榜背景颜色 RankTextColor string `protobuf:"bytes,7,opt,name=rank_text_color,json=rankTextColor,proto3" json:"rank_text_color,omitempty"` //排行榜背景颜色 DownloadPageImage string `protobuf:"bytes,8,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 IsDefaultDownload int32 `protobuf:"varint,9,opt,name=is_default_download,json=isDefaultDownload,proto3" json:"is_default_download,omitempty"` //是否使用默认下载图(1-是,0-否) WechatPageImage string `protobuf:"bytes,10,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 IsDefaultWechat int32 `protobuf:"varint,11,opt,name=is_default_wechat,json=isDefaultWechat,proto3" json:"is_default_wechat,omitempty"` //是否使用默认微信引导图(1-是,0-否) ImageMain string `protobuf:"bytes,12,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 IsDefaultMain int32 `protobuf:"varint,13,opt,name=is_default_main,json=isDefaultMain,proto3" json:"is_default_main,omitempty"` //是否使用默认活动主图(1-是,0-否) ImagePreview string `protobuf:"bytes,14,opt,name=image_preview,json=imagePreview,proto3" json:"image_preview,omitempty"` //问题页背景图 LinkBtnTextColor string `protobuf:"bytes,15,opt,name=link_btn_text_color,json=linkBtnTextColor,proto3" json:"link_btn_text_color,omitempty"` //分享链接按钮文字颜色 LinkBtnBgColor string `protobuf:"bytes,16,opt,name=link_btn_bg_color,json=linkBtnBgColor,proto3" json:"link_btn_bg_color,omitempty"` //分享链接按钮背景颜色 LinkTextColor string `protobuf:"bytes,17,opt,name=link_text_color,json=linkTextColor,proto3" json:"link_text_color,omitempty"` //分享链接文字颜色 ShowShare int32 `protobuf:"varint,18,opt,name=show_share,json=showShare,proto3" json:"show_share,omitempty"` //是否显示分享社交媒体(0-否,1-是) Share []int64 `protobuf:"varint,19,rep,packed,name=share,proto3" json:"share,omitempty"` //要分享的社交媒体,例如[1,2,3] PlayRule string `protobuf:"bytes,20,opt,name=play_rule,json=playRule,proto3" json:"play_rule,omitempty"` //玩法规则 PageTitle string `protobuf:"bytes,21,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 DmShow int32 `protobuf:"varint,22,opt,name=dm_show,json=dmShow,proto3" json:"dm_show,omitempty"` //是否显示弹幕(0-否,1-是) WebBgImg string `protobuf:"bytes,23,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外活动背景图 HasWarmUp int32 `protobuf:"varint,24,opt,name=has_warm_up,json=hasWarmUp,proto3" json:"has_warm_up,omitempty"` //是否预热(0-否,1-是) WarmUpImg string `protobuf:"bytes,25,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 WarmUpEnd int32 `protobuf:"varint,26,opt,name=warm_up_end,json=warmUpEnd,proto3" json:"warm_up_end,omitempty"` //活动开始前多少分钟结束预热 IconType int32 `protobuf:"varint,27,opt,name=icon_type,json=iconType,proto3" json:"icon_type,omitempty"` //活动挂件类型(用于前端挂件选用判断) IconBgColor string `protobuf:"bytes,28,opt,name=icon_bg_color,json=iconBgColor,proto3" json:"icon_bg_color,omitempty"` //活动挂件背景色 DlType int32 `protobuf:"varint,29,opt,name=dl_type,json=dlType,proto3" json:"dl_type,omitempty"` //下载引导页类型(1-通用,2-自定义多媒体) DlBannerType int32 `protobuf:"varint,30,opt,name=dl_banner_type,json=dlBannerType,proto3" json:"dl_banner_type,omitempty"` //下载页横幅类型(1-默认,2-自定义) DlBannerImg string `protobuf:"bytes,31,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,32,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,33,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,34,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 DlBannerPosition int32 `protobuf:"varint,35,opt,name=dl_banner_position,json=dlBannerPosition,proto3" json:"dl_banner_position,omitempty"` //下载页横幅位置(1-顶部,2-底部) TopicColor string `protobuf:"bytes,36,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 WindowCover int32 `protobuf:"varint,37,opt,name=window_cover,json=windowCover,proto3" json:"window_cover,omitempty"` //是否显示弹幕(0-否,1-是) IconOpen []int32 `protobuf:"varint,38,rep,packed,name=icon_open,json=iconOpen,proto3" json:"icon_open,omitempty"` //开启的挂件(1-奖品列表,2-邀请记录,3-奖励记录,4-邀请好友),例如[1,3] HasWhite int32 `protobuf:"varint,39,opt,name=has_white,json=hasWhite,proto3" json:"has_white,omitempty"` //是否开启白名单(0-否,1-是) WhiteList string `protobuf:"bytes,40,opt,name=white_list,json=whiteList,proto3" json:"white_list,omitempty"` //白名单列表(多个用英文;分割) PcBg string `protobuf:"bytes,41,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc适配背景图 AdsType int32 `protobuf:"varint,42,opt,name=ads_type,json=adsType,proto3" json:"ads_type,omitempty"` //广告状态(0-不启用广告,1-跟随项目配置,2-活动开启) LinkTempId string `protobuf:"bytes,43,opt,name=link_temp_id,json=linkTempId,proto3" json:"link_temp_id,omitempty"` //链接模板id RuleTimeOpen int32 `protobuf:"varint,44,opt,name=rule_time_open,json=ruleTimeOpen,proto3" json:"rule_time_open,omitempty"` //是否展示规则中的活动时间(0-否,1-是) OutsideTask int32 `protobuf:"varint,45,opt,name=outside_task,json=outsideTask,proto3" json:"outside_task,omitempty"` //是否外显任务(0-否,1-是) IconTextColor string `protobuf:"bytes,46,opt,name=icon_text_color,json=iconTextColor,proto3" json:"icon_text_color,omitempty"` //活动挂件字体色 OpenShare int32 `protobuf:"varint,47,opt,name=open_share,json=openShare,proto3" json:"open_share,omitempty"` //是否启用分享模块(0-否,1-是) ShowToUse int32 `protobuf:"varint,48,opt,name=show_to_use,json=showToUse,proto3" json:"show_to_use,omitempty"` //是否展示奖品弹窗的去使用(0-不展示,1-展示) RuleType int32 `protobuf:"varint,49,opt,name=rule_type,json=ruleType,proto3" json:"rule_type,omitempty"` //规则展示类型(0-文本,1-图片) RuleImg string `protobuf:"bytes,50,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 RuleOutside int32 `protobuf:"varint,51,opt,name=rule_outside,json=ruleOutside,proto3" json:"rule_outside,omitempty"` //规则是否外显(0-否,1-是) DeviceOnce int32 `protobuf:"varint,52,opt,name=device_once,json=deviceOnce,proto3" json:"device_once,omitempty"` //设备唯一(0-否,1-是) } func (x *StoreReq_Config) Reset() { *x = StoreReq_Config{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Config) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Config) ProtoMessage() {} func (x *StoreReq_Config) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_Config.ProtoReflect.Descriptor instead. func (*StoreReq_Config) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 18} } func (x *StoreReq_Config) GetRuleTextColor() string { if x != nil { return x.RuleTextColor } return "" } func (x *StoreReq_Config) GetRuleBgColor() string { if x != nil { return x.RuleBgColor } return "" } func (x *StoreReq_Config) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *StoreReq_Config) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *StoreReq_Config) GetHasRank() int32 { if x != nil { return x.HasRank } return 0 } func (x *StoreReq_Config) GetRankBackgroundColor() string { if x != nil { return x.RankBackgroundColor } return "" } func (x *StoreReq_Config) GetRankTextColor() string { if x != nil { return x.RankTextColor } return "" } func (x *StoreReq_Config) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *StoreReq_Config) GetIsDefaultDownload() int32 { if x != nil { return x.IsDefaultDownload } return 0 } func (x *StoreReq_Config) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *StoreReq_Config) GetIsDefaultWechat() int32 { if x != nil { return x.IsDefaultWechat } return 0 } func (x *StoreReq_Config) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *StoreReq_Config) GetIsDefaultMain() int32 { if x != nil { return x.IsDefaultMain } return 0 } func (x *StoreReq_Config) GetImagePreview() string { if x != nil { return x.ImagePreview } return "" } func (x *StoreReq_Config) GetLinkBtnTextColor() string { if x != nil { return x.LinkBtnTextColor } return "" } func (x *StoreReq_Config) GetLinkBtnBgColor() string { if x != nil { return x.LinkBtnBgColor } return "" } func (x *StoreReq_Config) GetLinkTextColor() string { if x != nil { return x.LinkTextColor } return "" } func (x *StoreReq_Config) GetShowShare() int32 { if x != nil { return x.ShowShare } return 0 } func (x *StoreReq_Config) GetShare() []int64 { if x != nil { return x.Share } return nil } func (x *StoreReq_Config) GetPlayRule() string { if x != nil { return x.PlayRule } return "" } func (x *StoreReq_Config) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *StoreReq_Config) GetDmShow() int32 { if x != nil { return x.DmShow } return 0 } func (x *StoreReq_Config) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *StoreReq_Config) GetHasWarmUp() int32 { if x != nil { return x.HasWarmUp } return 0 } func (x *StoreReq_Config) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *StoreReq_Config) GetWarmUpEnd() int32 { if x != nil { return x.WarmUpEnd } return 0 } func (x *StoreReq_Config) GetIconType() int32 { if x != nil { return x.IconType } return 0 } func (x *StoreReq_Config) GetIconBgColor() string { if x != nil { return x.IconBgColor } return "" } func (x *StoreReq_Config) GetDlType() int32 { if x != nil { return x.DlType } return 0 } func (x *StoreReq_Config) GetDlBannerType() int32 { if x != nil { return x.DlBannerType } return 0 } func (x *StoreReq_Config) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *StoreReq_Config) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *StoreReq_Config) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *StoreReq_Config) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *StoreReq_Config) GetDlBannerPosition() int32 { if x != nil { return x.DlBannerPosition } return 0 } func (x *StoreReq_Config) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *StoreReq_Config) GetWindowCover() int32 { if x != nil { return x.WindowCover } return 0 } func (x *StoreReq_Config) GetIconOpen() []int32 { if x != nil { return x.IconOpen } return nil } func (x *StoreReq_Config) GetHasWhite() int32 { if x != nil { return x.HasWhite } return 0 } func (x *StoreReq_Config) GetWhiteList() string { if x != nil { return x.WhiteList } return "" } func (x *StoreReq_Config) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *StoreReq_Config) GetAdsType() int32 { if x != nil { return x.AdsType } return 0 } func (x *StoreReq_Config) GetLinkTempId() string { if x != nil { return x.LinkTempId } return "" } func (x *StoreReq_Config) GetRuleTimeOpen() int32 { if x != nil { return x.RuleTimeOpen } return 0 } func (x *StoreReq_Config) GetOutsideTask() int32 { if x != nil { return x.OutsideTask } return 0 } func (x *StoreReq_Config) GetIconTextColor() string { if x != nil { return x.IconTextColor } return "" } func (x *StoreReq_Config) GetOpenShare() int32 { if x != nil { return x.OpenShare } return 0 } func (x *StoreReq_Config) GetShowToUse() int32 { if x != nil { return x.ShowToUse } return 0 } func (x *StoreReq_Config) GetRuleType() int32 { if x != nil { return x.RuleType } return 0 } func (x *StoreReq_Config) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *StoreReq_Config) GetRuleOutside() int32 { if x != nil { return x.RuleOutside } return 0 } func (x *StoreReq_Config) GetDeviceOnce() int32 { if x != nil { return x.DeviceOnce } return 0 } type StoreReq_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickType int32 `protobuf:"varint,4,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*StoreReq_HotZone `protobuf:"bytes,5,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,6,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,7,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,8,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *StoreReq_LongImg) Reset() { *x = StoreReq_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_LongImg) ProtoMessage() {} func (x *StoreReq_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_LongImg.ProtoReflect.Descriptor instead. func (*StoreReq_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 19} } func (x *StoreReq_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *StoreReq_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *StoreReq_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *StoreReq_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *StoreReq_LongImg) GetHotZone() []*StoreReq_HotZone { if x != nil { return x.HotZone } return nil } func (x *StoreReq_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *StoreReq_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *StoreReq_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } type StoreReq_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WebUrl string `protobuf:"bytes,1,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,2,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,3,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,4,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,5,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,6,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,9,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *StoreReq_HotZone) Reset() { *x = StoreReq_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_HotZone) ProtoMessage() {} func (x *StoreReq_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_HotZone.ProtoReflect.Descriptor instead. func (*StoreReq_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 20} } func (x *StoreReq_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *StoreReq_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *StoreReq_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *StoreReq_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *StoreReq_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *StoreReq_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *StoreReq_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *StoreReq_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *StoreReq_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type StoreReq_Target struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Option int32 `protobuf:"varint,2,opt,name=option,proto3" json:"option,omitempty"` //标选择类型(1-app下载/注册;2-好友完成指定事件;3-指定事件达标;4-拉充值/积分消耗;5-用户指定事件达标) AppEvent int32 `protobuf:"varint,3,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //目标选择类型为1(option=1)的选项(1-安装;2-注册) BothType int32 `protobuf:"varint,4,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*StoreReq_Cond `protobuf:"bytes,5,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *StoreReq_BothAll `protobuf:"bytes,6,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 NormalData *StoreReq_NormalData `protobuf:"bytes,7,opt,name=normal_data,json=normalData,proto3" json:"normal_data,omitempty"` //通用事件的数据 } func (x *StoreReq_Target) Reset() { *x = StoreReq_Target{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Target) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Target) ProtoMessage() {} func (x *StoreReq_Target) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_Target.ProtoReflect.Descriptor instead. func (*StoreReq_Target) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 21} } func (x *StoreReq_Target) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *StoreReq_Target) GetOption() int32 { if x != nil { return x.Option } return 0 } func (x *StoreReq_Target) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *StoreReq_Target) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *StoreReq_Target) GetCond() []*StoreReq_Cond { if x != nil { return x.Cond } return nil } func (x *StoreReq_Target) GetBothAll() *StoreReq_BothAll { if x != nil { return x.BothAll } return nil } func (x *StoreReq_Target) GetNormalData() *StoreReq_NormalData { if x != nil { return x.NormalData } return nil } type StoreReq_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event string `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,2,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,3,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,6,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,7,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,8,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,9,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,10,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,11,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,12,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,13,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,14,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,15,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,16,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,17,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,18,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,19,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,20,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,21,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id IsSuper int32 `protobuf:"varint,22,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,23,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,24,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,25,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *StoreReq_Reward `protobuf:"bytes,26,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,27,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Sort int32 `protobuf:"varint,28,opt,name=sort,proto3" json:"sort,omitempty"` //排序 OpenPush int32 `protobuf:"varint,29,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) PcParam string `protobuf:"bytes,30,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 AwardMode int32 `protobuf:"varint,31,opt,name=award_mode,json=awardMode,proto3" json:"award_mode,omitempty"` //领奖模式(1-自动领奖,2-手动领奖) GoText string `protobuf:"bytes,32,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 ClickEffectOpen int32 `protobuf:"varint,33,opt,name=click_effect_open,json=clickEffectOpen,proto3" json:"click_effect_open,omitempty"` //是否开启点击有效(0-否,1-是) ClickEffect int32 `protobuf:"varint,34,opt,name=click_effect,json=clickEffect,proto3" json:"click_effect,omitempty"` //点击有效值 ClickEffectUnit string `protobuf:"bytes,35,opt,name=click_effect_unit,json=clickEffectUnit,proto3" json:"click_effect_unit,omitempty"` //点击有效单位(min-分钟,hour-小时,day-天) ExpiredDay string `protobuf:"bytes,36,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 PullInvite int32 `protobuf:"varint,37,opt,name=pull_invite,json=pullInvite,proto3" json:"pull_invite,omitempty"` //是否拉起邀请(0-否,1-是) } func (x *StoreReq_Cond) Reset() { *x = StoreReq_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Cond) ProtoMessage() {} func (x *StoreReq_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_Cond.ProtoReflect.Descriptor instead. func (*StoreReq_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 22} } func (x *StoreReq_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *StoreReq_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *StoreReq_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *StoreReq_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *StoreReq_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *StoreReq_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *StoreReq_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *StoreReq_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *StoreReq_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *StoreReq_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *StoreReq_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *StoreReq_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *StoreReq_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *StoreReq_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *StoreReq_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *StoreReq_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *StoreReq_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *StoreReq_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *StoreReq_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *StoreReq_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *StoreReq_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *StoreReq_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *StoreReq_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *StoreReq_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *StoreReq_Cond) GetReward() *StoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *StoreReq_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *StoreReq_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *StoreReq_Cond) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } func (x *StoreReq_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *StoreReq_Cond) GetAwardMode() int32 { if x != nil { return x.AwardMode } return 0 } func (x *StoreReq_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } func (x *StoreReq_Cond) GetClickEffectOpen() int32 { if x != nil { return x.ClickEffectOpen } return 0 } func (x *StoreReq_Cond) GetClickEffect() int32 { if x != nil { return x.ClickEffect } return 0 } func (x *StoreReq_Cond) GetClickEffectUnit() string { if x != nil { return x.ClickEffectUnit } return "" } func (x *StoreReq_Cond) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *StoreReq_Cond) GetPullInvite() int32 { if x != nil { return x.PullInvite } return 0 } type StoreReq_BothAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskLimit int32 `protobuf:"varint,1,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) DayLimit int32 `protobuf:"varint,3,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,4,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 LangMarks []string `protobuf:"bytes,5,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WeekLimit int32 `protobuf:"varint,6,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,7,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 Reward *StoreReq_Reward `protobuf:"bytes,8,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,9,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) ExpiredDay string `protobuf:"bytes,10,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *StoreReq_BothAll) Reset() { *x = StoreReq_BothAll{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_BothAll) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_BothAll) ProtoMessage() {} func (x *StoreReq_BothAll) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_BothAll.ProtoReflect.Descriptor instead. func (*StoreReq_BothAll) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 23} } func (x *StoreReq_BothAll) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *StoreReq_BothAll) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_BothAll) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *StoreReq_BothAll) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *StoreReq_BothAll) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *StoreReq_BothAll) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *StoreReq_BothAll) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *StoreReq_BothAll) GetReward() *StoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *StoreReq_BothAll) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *StoreReq_BothAll) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type StoreReq_NormalData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,3,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) } func (x *StoreReq_NormalData) Reset() { *x = StoreReq_NormalData{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_NormalData) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_NormalData) ProtoMessage() {} func (x *StoreReq_NormalData) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_NormalData.ProtoReflect.Descriptor instead. func (*StoreReq_NormalData) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 24} } func (x *StoreReq_NormalData) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_NormalData) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_NormalData) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } type StoreReq_TargetOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Fixed *StoreReq_Fixed `protobuf:"bytes,2,opt,name=fixed,proto3" json:"fixed,omitempty"` //固定事件 Custom *StoreReq_Custom `protobuf:"bytes,3,opt,name=custom,proto3" json:"custom,omitempty"` //自定义事件 } func (x *StoreReq_TargetOption) Reset() { *x = StoreReq_TargetOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_TargetOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_TargetOption) ProtoMessage() {} func (x *StoreReq_TargetOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_TargetOption.ProtoReflect.Descriptor instead. func (*StoreReq_TargetOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 25} } func (x *StoreReq_TargetOption) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *StoreReq_TargetOption) GetFixed() *StoreReq_Fixed { if x != nil { return x.Fixed } return nil } func (x *StoreReq_TargetOption) GetCustom() *StoreReq_Custom { if x != nil { return x.Custom } return nil } type StoreReq_Fixed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) AppEvent int32 `protobuf:"varint,2,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //固定事件类型(1-安装;2-注册) TargetNum int32 `protobuf:"varint,3,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,4,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,5,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) Percent float64 `protobuf:"fixed64,6,opt,name=percent,proto3" json:"percent,omitempty"` //百分比值(如:获得的能量点) } func (x *StoreReq_Fixed) Reset() { *x = StoreReq_Fixed{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Fixed) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Fixed) ProtoMessage() {} func (x *StoreReq_Fixed) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StoreReq_Fixed.ProtoReflect.Descriptor instead. func (*StoreReq_Fixed) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 26} } func (x *StoreReq_Fixed) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_Fixed) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *StoreReq_Fixed) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_Fixed) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_Fixed) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } func (x *StoreReq_Fixed) GetPercent() float64 { if x != nil { return x.Percent } return 0 } type StoreReq_Custom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) BothType int32 `protobuf:"varint,2,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*StoreReq_Cond `protobuf:"bytes,3,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *StoreReq_BothAll `protobuf:"bytes,4,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 PreEvent int32 `protobuf:"varint,5,opt,name=pre_event,json=preEvent,proto3" json:"pre_event,omitempty"` //自定义事件前置事件(0-任意事件;1-安装;2-注册) } func (x *StoreReq_Custom) Reset() { *x = StoreReq_Custom{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Custom) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Custom) ProtoMessage() {} func (x *StoreReq_Custom) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[120] 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 StoreReq_Custom.ProtoReflect.Descriptor instead. func (*StoreReq_Custom) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 27} } func (x *StoreReq_Custom) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_Custom) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *StoreReq_Custom) GetCond() []*StoreReq_Cond { if x != nil { return x.Cond } return nil } func (x *StoreReq_Custom) GetBothAll() *StoreReq_BothAll { if x != nil { return x.BothAll } return nil } func (x *StoreReq_Custom) GetPreEvent() int32 { if x != nil { return x.PreEvent } return 0 } type StoreReq_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //对应字段名 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //对应字段值 } func (x *StoreReq_KV) Reset() { *x = StoreReq_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_KV) ProtoMessage() {} func (x *StoreReq_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[121] 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 StoreReq_KV.ProtoReflect.Descriptor instead. func (*StoreReq_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 28} } func (x *StoreReq_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *StoreReq_KV) GetValue() string { if x != nil { return x.Value } return "" } type StoreReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardId int64 `protobuf:"varint,1,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,2,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,3,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,4,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,5,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,6,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,7,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,8,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,9,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) Help int32 `protobuf:"varint,10,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,11,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,12,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,13,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,14,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,15,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,16,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,17,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 Odds int32 `protobuf:"varint,18,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,19,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 CampaignLimit int32 `protobuf:"varint,20,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,21,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,22,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,23,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 CollectRule *StoreReq_CollectRule `protobuf:"bytes,24,opt,name=collect_rule,json=collectRule,proto3" json:"collect_rule,omitempty"` //收集规则 ExpiredDay string `protobuf:"bytes,25,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 OpenAdd *StoreReq_OpenAdd `protobuf:"bytes,26,opt,name=open_add,json=openAdd,proto3" json:"open_add,omitempty"` //库存增加规则 RewardTask *StoreReq_RewardTask `protobuf:"bytes,27,opt,name=reward_task,json=rewardTask,proto3" json:"reward_task,omitempty"` //解锁任务 } func (x *StoreReq_Reward) Reset() { *x = StoreReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Reward) ProtoMessage() {} func (x *StoreReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[122] 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 StoreReq_Reward.ProtoReflect.Descriptor instead. func (*StoreReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 29} } func (x *StoreReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *StoreReq_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *StoreReq_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *StoreReq_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *StoreReq_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *StoreReq_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *StoreReq_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *StoreReq_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *StoreReq_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *StoreReq_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *StoreReq_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *StoreReq_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *StoreReq_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *StoreReq_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *StoreReq_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *StoreReq_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *StoreReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *StoreReq_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *StoreReq_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *StoreReq_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *StoreReq_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *StoreReq_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *StoreReq_Reward) GetCollectRule() *StoreReq_CollectRule { if x != nil { return x.CollectRule } return nil } func (x *StoreReq_Reward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *StoreReq_Reward) GetOpenAdd() *StoreReq_OpenAdd { if x != nil { return x.OpenAdd } return nil } func (x *StoreReq_Reward) GetRewardTask() *StoreReq_RewardTask { if x != nil { return x.RewardTask } return nil } type StoreReq_RewardTask struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) Event string `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,3,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,4,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TriggerType int32 `protobuf:"varint,6,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) EventType int32 `protobuf:"varint,7,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) OpenPush int32 `protobuf:"varint,8,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) } func (x *StoreReq_RewardTask) Reset() { *x = StoreReq_RewardTask{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_RewardTask) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_RewardTask) ProtoMessage() {} func (x *StoreReq_RewardTask) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[123] 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 StoreReq_RewardTask.ProtoReflect.Descriptor instead. func (*StoreReq_RewardTask) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 30} } func (x *StoreReq_RewardTask) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_RewardTask) GetEvent() string { if x != nil { return x.Event } return "" } func (x *StoreReq_RewardTask) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *StoreReq_RewardTask) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *StoreReq_RewardTask) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *StoreReq_RewardTask) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *StoreReq_RewardTask) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *StoreReq_RewardTask) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } type StoreReq_OpenAdd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启动态库存规则(0-否,1-是) Start int64 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` //开始时间 End int64 `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"` //结束时间 DayNum int32 `protobuf:"varint,4,opt,name=day_num,json=dayNum,proto3" json:"day_num,omitempty"` //天数 DayAdd int32 `protobuf:"varint,5,opt,name=day_add,json=dayAdd,proto3" json:"day_add,omitempty"` //增加的库存量 } func (x *StoreReq_OpenAdd) Reset() { *x = StoreReq_OpenAdd{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_OpenAdd) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_OpenAdd) ProtoMessage() {} func (x *StoreReq_OpenAdd) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[124] 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 StoreReq_OpenAdd.ProtoReflect.Descriptor instead. func (*StoreReq_OpenAdd) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 31} } func (x *StoreReq_OpenAdd) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_OpenAdd) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *StoreReq_OpenAdd) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *StoreReq_OpenAdd) GetDayNum() int32 { if x != nil { return x.DayNum } return 0 } func (x *StoreReq_OpenAdd) GetDayAdd() int32 { if x != nil { return x.DayAdd } return 0 } type StoreReq_CollectRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启碎片规则(0-否,1-是) InitCollect int32 `protobuf:"varint,2,opt,name=init_collect,json=initCollect,proto3" json:"init_collect,omitempty"` //初始的最大可获得碎片数 SignDay int32 `protobuf:"varint,3,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddCollect int32 `protobuf:"varint,4,opt,name=add_collect,json=addCollect,proto3" json:"add_collect,omitempty"` //完成条件可获得最大碎片数 ResetType int32 `protobuf:"varint,5,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置碎片规则(1-不重置,2-获奖后重置) } func (x *StoreReq_CollectRule) Reset() { *x = StoreReq_CollectRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_CollectRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_CollectRule) ProtoMessage() {} func (x *StoreReq_CollectRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[125] 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 StoreReq_CollectRule.ProtoReflect.Descriptor instead. func (*StoreReq_CollectRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 32} } func (x *StoreReq_CollectRule) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_CollectRule) GetInitCollect() int32 { if x != nil { return x.InitCollect } return 0 } func (x *StoreReq_CollectRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *StoreReq_CollectRule) GetAddCollect() int32 { if x != nil { return x.AddCollect } return 0 } func (x *StoreReq_CollectRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type StoreReq_Rewards struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardGroup int32 `protobuf:"varint,1,opt,name=reward_group,json=rewardGroup,proto3" json:"reward_group,omitempty"` //奖品分组类型(1-常规奖品,2-用户类型奖品,3-语言奖品,4-语言+用户类型奖品,5-国家奖品) Normal []*StoreReq_Reward `protobuf:"bytes,2,rep,name=normal,proto3" json:"normal,omitempty"` //常规奖品 UserLevel *StoreReq_UserLevel `protobuf:"bytes,3,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` //用户类型奖品 Langs []*StoreReq_Lang `protobuf:"bytes,4,rep,name=langs,proto3" json:"langs,omitempty"` //语言奖品 LangUserLevel []*StoreReq_LangUserLevel `protobuf:"bytes,5,rep,name=lang_user_level,json=langUserLevel,proto3" json:"lang_user_level,omitempty"` //语言+用户类型奖品 Country *StoreReq_Country `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` //国家奖品 } func (x *StoreReq_Rewards) Reset() { *x = StoreReq_Rewards{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Rewards) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Rewards) ProtoMessage() {} func (x *StoreReq_Rewards) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[126] 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 StoreReq_Rewards.ProtoReflect.Descriptor instead. func (*StoreReq_Rewards) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 33} } func (x *StoreReq_Rewards) GetRewardGroup() int32 { if x != nil { return x.RewardGroup } return 0 } func (x *StoreReq_Rewards) GetNormal() []*StoreReq_Reward { if x != nil { return x.Normal } return nil } func (x *StoreReq_Rewards) GetUserLevel() *StoreReq_UserLevel { if x != nil { return x.UserLevel } return nil } func (x *StoreReq_Rewards) GetLangs() []*StoreReq_Lang { if x != nil { return x.Langs } return nil } func (x *StoreReq_Rewards) GetLangUserLevel() []*StoreReq_LangUserLevel { if x != nil { return x.LangUserLevel } return nil } func (x *StoreReq_Rewards) GetCountry() *StoreReq_Country { if x != nil { return x.Country } return nil } type StoreReq_UserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultLevelId int64 `protobuf:"varint,1,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id LevelList []*StoreReq_UserLevelOne `protobuf:"bytes,2,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *StoreReq_UserLevel) Reset() { *x = StoreReq_UserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_UserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_UserLevel) ProtoMessage() {} func (x *StoreReq_UserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[127] 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 StoreReq_UserLevel.ProtoReflect.Descriptor instead. func (*StoreReq_UserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 34} } func (x *StoreReq_UserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *StoreReq_UserLevel) GetLevelList() []*StoreReq_UserLevelOne { if x != nil { return x.LevelList } return nil } type StoreReq_UserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LevelId int64 `protobuf:"varint,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` //用户类型id Rewards []*StoreReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *StoreReq_UserLevelOne) Reset() { *x = StoreReq_UserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_UserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_UserLevelOne) ProtoMessage() {} func (x *StoreReq_UserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[128] 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 StoreReq_UserLevelOne.ProtoReflect.Descriptor instead. func (*StoreReq_UserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 35} } func (x *StoreReq_UserLevelOne) GetLevelId() int64 { if x != nil { return x.LevelId } return 0 } func (x *StoreReq_UserLevelOne) GetRewards() []*StoreReq_Reward { if x != nil { return x.Rewards } return nil } type StoreReq_Lang struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 Rewards []*StoreReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *StoreReq_Lang) Reset() { *x = StoreReq_Lang{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Lang) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Lang) ProtoMessage() {} func (x *StoreReq_Lang) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[129] 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 StoreReq_Lang.ProtoReflect.Descriptor instead. func (*StoreReq_Lang) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 36} } func (x *StoreReq_Lang) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *StoreReq_Lang) GetRewards() []*StoreReq_Reward { if x != nil { return x.Rewards } return nil } type StoreReq_LangUserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 DefaultLevelId int64 `protobuf:"varint,2,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id LevelList []*StoreReq_UserLevelOne `protobuf:"bytes,3,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *StoreReq_LangUserLevel) Reset() { *x = StoreReq_LangUserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_LangUserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_LangUserLevel) ProtoMessage() {} func (x *StoreReq_LangUserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[130] 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 StoreReq_LangUserLevel.ProtoReflect.Descriptor instead. func (*StoreReq_LangUserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 37} } func (x *StoreReq_LangUserLevel) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *StoreReq_LangUserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *StoreReq_LangUserLevel) GetLevelList() []*StoreReq_UserLevelOne { if x != nil { return x.LevelList } return nil } type StoreReq_Country struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultCountryMark string `protobuf:"bytes,1,opt,name=default_country_mark,json=defaultCountryMark,proto3" json:"default_country_mark,omitempty"` //默认国家 CountryList []*StoreReq_CountryOne `protobuf:"bytes,2,rep,name=country_list,json=countryList,proto3" json:"country_list,omitempty"` //国家的奖品 } func (x *StoreReq_Country) Reset() { *x = StoreReq_Country{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Country) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Country) ProtoMessage() {} func (x *StoreReq_Country) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[131] 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 StoreReq_Country.ProtoReflect.Descriptor instead. func (*StoreReq_Country) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 38} } func (x *StoreReq_Country) GetDefaultCountryMark() string { if x != nil { return x.DefaultCountryMark } return "" } func (x *StoreReq_Country) GetCountryList() []*StoreReq_CountryOne { if x != nil { return x.CountryList } return nil } type StoreReq_CountryOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CountryMark string `protobuf:"bytes,1,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 Rewards []*StoreReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *StoreReq_CountryOne) Reset() { *x = StoreReq_CountryOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_CountryOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_CountryOne) ProtoMessage() {} func (x *StoreReq_CountryOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[132] 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 StoreReq_CountryOne.ProtoReflect.Descriptor instead. func (*StoreReq_CountryOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 39} } func (x *StoreReq_CountryOne) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *StoreReq_CountryOne) GetRewards() []*StoreReq_Reward { if x != nil { return x.Rewards } return nil } type StoreReq_QaQuestion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //题目 Score int32 `protobuf:"varint,2,opt,name=score,proto3" json:"score,omitempty"` //得分 Options []*StoreReq_QaOption `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` //选项 } func (x *StoreReq_QaQuestion) Reset() { *x = StoreReq_QaQuestion{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_QaQuestion) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_QaQuestion) ProtoMessage() {} func (x *StoreReq_QaQuestion) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[133] 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 StoreReq_QaQuestion.ProtoReflect.Descriptor instead. func (*StoreReq_QaQuestion) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 40} } func (x *StoreReq_QaQuestion) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq_QaQuestion) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *StoreReq_QaQuestion) GetOptions() []*StoreReq_QaOption { if x != nil { return x.Options } return nil } type StoreReq_QaOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //答案内容 IsRight int32 `protobuf:"varint,2,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确答案(1-是,0-否) } func (x *StoreReq_QaOption) Reset() { *x = StoreReq_QaOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_QaOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_QaOption) ProtoMessage() {} func (x *StoreReq_QaOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[134] 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 StoreReq_QaOption.ProtoReflect.Descriptor instead. func (*StoreReq_QaOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 41} } func (x *StoreReq_QaOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq_QaOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } type StoreReq_QuizOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,2,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 IsRight int32 `protobuf:"varint,3,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确选项(1-是,0-否) } func (x *StoreReq_QuizOption) Reset() { *x = StoreReq_QuizOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_QuizOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_QuizOption) ProtoMessage() {} func (x *StoreReq_QuizOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[135] 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 StoreReq_QuizOption.ProtoReflect.Descriptor instead. func (*StoreReq_QuizOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 42} } func (x *StoreReq_QuizOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq_QuizOption) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *StoreReq_QuizOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } type StoreReq_Quiz struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的答题机会次数 RewardRule int32 `protobuf:"varint,4,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //奖励规则(1-投票结果排名,2-自定义竞猜结果) OpenPrize int64 `protobuf:"varint,5,opt,name=open_prize,json=openPrize,proto3" json:"open_prize,omitempty"` //开奖时间 Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` //选择标题 Options []*StoreReq_QuizOption `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` //有奖竞猜选项 } func (x *StoreReq_Quiz) Reset() { *x = StoreReq_Quiz{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Quiz) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Quiz) ProtoMessage() {} func (x *StoreReq_Quiz) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[136] 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 StoreReq_Quiz.ProtoReflect.Descriptor instead. func (*StoreReq_Quiz) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 43} } func (x *StoreReq_Quiz) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_Quiz) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Quiz) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_Quiz) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *StoreReq_Quiz) GetOpenPrize() int64 { if x != nil { return x.OpenPrize } return 0 } func (x *StoreReq_Quiz) GetTitle() string { if x != nil { return x.Title } return "" } func (x *StoreReq_Quiz) GetOptions() []*StoreReq_QuizOption { if x != nil { return x.Options } return nil } type StoreReq_QuestionAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标条件后可获取的答题次数 InitChance int32 `protobuf:"varint,3,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 QuestionAskTime int32 `protobuf:"varint,4,opt,name=question_ask_time,json=questionAskTime,proto3" json:"question_ask_time,omitempty"` //答题时间限制(单位:S,如:1 就是1秒) Questions []*StoreReq_QaQuestion `protobuf:"bytes,5,rep,name=questions,proto3" json:"questions,omitempty"` //题目 GroupHashId string `protobuf:"bytes,6,opt,name=group_hash_id,json=groupHashId,proto3" json:"group_hash_id,omitempty"` //题库对外id QaNum int32 `protobuf:"varint,7,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 DayChance int32 `protobuf:"varint,8,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日签到获得的答题数 OpenGuide int32 `protobuf:"varint,9,opt,name=open_guide,json=openGuide,proto3" json:"open_guide,omitempty"` //是否开启引导(0-否,1-是) GuideGroupHashId string `protobuf:"bytes,10,opt,name=guide_group_hash_id,json=guideGroupHashId,proto3" json:"guide_group_hash_id,omitempty"` //引导组hash_id } func (x *StoreReq_QuestionAnswer) Reset() { *x = StoreReq_QuestionAnswer{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_QuestionAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_QuestionAnswer) ProtoMessage() {} func (x *StoreReq_QuestionAnswer) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[137] 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 StoreReq_QuestionAnswer.ProtoReflect.Descriptor instead. func (*StoreReq_QuestionAnswer) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 44} } func (x *StoreReq_QuestionAnswer) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_QuestionAnswer) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_QuestionAnswer) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_QuestionAnswer) GetQuestionAskTime() int32 { if x != nil { return x.QuestionAskTime } return 0 } func (x *StoreReq_QuestionAnswer) GetQuestions() []*StoreReq_QaQuestion { if x != nil { return x.Questions } return nil } func (x *StoreReq_QuestionAnswer) GetGroupHashId() string { if x != nil { return x.GroupHashId } return "" } func (x *StoreReq_QuestionAnswer) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *StoreReq_QuestionAnswer) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *StoreReq_QuestionAnswer) GetOpenGuide() int32 { if x != nil { return x.OpenGuide } return 0 } func (x *StoreReq_QuestionAnswer) GetGuideGroupHashId() string { if x != nil { return x.GuideGroupHashId } return "" } type StoreReq_LotteryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的抽奖机会次数 DayChance int32 `protobuf:"varint,4,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *StoreReq_LotteryConfig) Reset() { *x = StoreReq_LotteryConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_LotteryConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_LotteryConfig) ProtoMessage() {} func (x *StoreReq_LotteryConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[138] 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 StoreReq_LotteryConfig.ProtoReflect.Descriptor instead. func (*StoreReq_LotteryConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 45} } func (x *StoreReq_LotteryConfig) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_LotteryConfig) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_LotteryConfig) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *StoreReq_LotteryConfig) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type StoreReq_InviteConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardLimit int32 `protobuf:"varint,1,opt,name=reward_limit,json=rewardLimit,proto3" json:"reward_limit,omitempty"` //活动总奖励上限 RewardRule int32 `protobuf:"varint,2,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //用户奖励规则(1-阶梯,2-非阶梯) InviteLimit int32 `protobuf:"varint,3,opt,name=invite_limit,json=inviteLimit,proto3" json:"invite_limit,omitempty"` //邀请超过多少人不能再获得奖励 NewcomerCond int32 `protobuf:"varint,4,opt,name=newcomer_cond,json=newcomerCond,proto3" json:"newcomer_cond,omitempty"` //新人条件(1-新安装,2-助力成功,3-新安装且助力成功) StepLoop int32 `protobuf:"varint,5,opt,name=step_loop,json=stepLoop,proto3" json:"step_loop,omitempty"` //阶梯是否支持循环(0-不支持,1-支持) } func (x *StoreReq_InviteConfig) Reset() { *x = StoreReq_InviteConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_InviteConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_InviteConfig) ProtoMessage() {} func (x *StoreReq_InviteConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[139] 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 StoreReq_InviteConfig.ProtoReflect.Descriptor instead. func (*StoreReq_InviteConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 46} } func (x *StoreReq_InviteConfig) GetRewardLimit() int32 { if x != nil { return x.RewardLimit } return 0 } func (x *StoreReq_InviteConfig) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *StoreReq_InviteConfig) GetInviteLimit() int32 { if x != nil { return x.InviteLimit } return 0 } func (x *StoreReq_InviteConfig) GetNewcomerCond() int32 { if x != nil { return x.NewcomerCond } return 0 } func (x *StoreReq_InviteConfig) GetStepLoop() int32 { if x != nil { return x.StepLoop } return 0 } type StoreReq_Sign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SignType int32 `protobuf:"varint,1,opt,name=sign_type,json=signType,proto3" json:"sign_type,omitempty"` //签到类型(1-普通签到,2-阶梯签到) IsContinue int32 `protobuf:"varint,2,opt,name=is_continue,json=isContinue,proto3" json:"is_continue,omitempty"` //是否连续签到(1-是,0-否) HasCard int32 `protobuf:"varint,3,opt,name=has_card,json=hasCard,proto3" json:"has_card,omitempty"` //是否开启签到卡(1-开启,0-不开启) InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //邀请好友数可获得的1张签到卡 LimitCardNum int32 `protobuf:"varint,5,opt,name=limit_card_num,json=limitCardNum,proto3" json:"limit_card_num,omitempty"` //可获得幸运卡的最大张数 IsLoop int32 `protobuf:"varint,6,opt,name=is_loop,json=isLoop,proto3" json:"is_loop,omitempty"` //是否支持循环(0-否,1-是) SignCycle int32 `protobuf:"varint,7,opt,name=sign_cycle,json=signCycle,proto3" json:"sign_cycle,omitempty"` //签到周期 RecycleType int32 `protobuf:"varint,8,opt,name=recycle_type,json=recycleType,proto3" json:"recycle_type,omitempty"` //重新签到模式(1-断签重签,2-周期重签) Color string `protobuf:"bytes,9,opt,name=color,proto3" json:"color,omitempty"` //签到主题颜色 } func (x *StoreReq_Sign) Reset() { *x = StoreReq_Sign{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Sign) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Sign) ProtoMessage() {} func (x *StoreReq_Sign) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[140] 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 StoreReq_Sign.ProtoReflect.Descriptor instead. func (*StoreReq_Sign) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 47} } func (x *StoreReq_Sign) GetSignType() int32 { if x != nil { return x.SignType } return 0 } func (x *StoreReq_Sign) GetIsContinue() int32 { if x != nil { return x.IsContinue } return 0 } func (x *StoreReq_Sign) GetHasCard() int32 { if x != nil { return x.HasCard } return 0 } func (x *StoreReq_Sign) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *StoreReq_Sign) GetLimitCardNum() int32 { if x != nil { return x.LimitCardNum } return 0 } func (x *StoreReq_Sign) GetIsLoop() int32 { if x != nil { return x.IsLoop } return 0 } func (x *StoreReq_Sign) GetSignCycle() int32 { if x != nil { return x.SignCycle } return 0 } func (x *StoreReq_Sign) GetRecycleType() int32 { if x != nil { return x.RecycleType } return 0 } func (x *StoreReq_Sign) GetColor() string { if x != nil { return x.Color } return "" } type StoreReq_Dice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始骰子数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的骰子数 FixDice int32 `protobuf:"varint,3,opt,name=fix_dice,json=fixDice,proto3" json:"fix_dice,omitempty"` //开启固定骰子(0-不开启,1-开启) FixDiceTarget int32 `protobuf:"varint,4,opt,name=fix_dice_target,json=fixDiceTarget,proto3" json:"fix_dice_target,omitempty"` //获得固定骰子需要邀请的人数 FixDiceLimit int32 `protobuf:"varint,5,opt,name=fix_dice_limit,json=fixDiceLimit,proto3" json:"fix_dice_limit,omitempty"` //固定骰子限制获取数 CustomDice string `protobuf:"bytes,6,opt,name=custom_dice,json=customDice,proto3" json:"custom_dice,omitempty"` //自定义骰子图片 OpenMapPoint int32 `protobuf:"varint,7,opt,name=open_map_point,json=openMapPoint,proto3" json:"open_map_point,omitempty"` //开启自定义底座(0-不开启,1-开启) MapPoint *StoreReq_MapPoint `protobuf:"bytes,8,opt,name=map_point,json=mapPoint,proto3" json:"map_point,omitempty"` //自定义底座数据 AwardType int32 `protobuf:"varint,9,opt,name=award_type,json=awardType,proto3" json:"award_type,omitempty"` //奖品碎片收集方式(1-随机收集,2-概率收集) OpenInvite int32 `protobuf:"varint,10,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请挂件(0-关闭,1-开启) RollAgain int32 `protobuf:"varint,11,opt,name=roll_again,json=rollAgain,proto3" json:"roll_again,omitempty"` //开启再摇一次(0-关闭,1-开启) FixDiceCond int32 `protobuf:"varint,12,opt,name=fix_dice_cond,json=fixDiceCond,proto3" json:"fix_dice_cond,omitempty"` //邀请事件(1-安装,2-注册) Odds int32 `protobuf:"varint,13,opt,name=odds,proto3" json:"odds,omitempty"` //概率收集方式的中奖概率 PlayImg string `protobuf:"bytes,14,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //play按钮图 CloudImg string `protobuf:"bytes,15,opt,name=cloud_img,json=cloudImg,proto3" json:"cloud_img,omitempty"` //云朵图 } func (x *StoreReq_Dice) Reset() { *x = StoreReq_Dice{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Dice) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Dice) ProtoMessage() {} func (x *StoreReq_Dice) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[141] 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 StoreReq_Dice.ProtoReflect.Descriptor instead. func (*StoreReq_Dice) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 48} } func (x *StoreReq_Dice) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Dice) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *StoreReq_Dice) GetFixDice() int32 { if x != nil { return x.FixDice } return 0 } func (x *StoreReq_Dice) GetFixDiceTarget() int32 { if x != nil { return x.FixDiceTarget } return 0 } func (x *StoreReq_Dice) GetFixDiceLimit() int32 { if x != nil { return x.FixDiceLimit } return 0 } func (x *StoreReq_Dice) GetCustomDice() string { if x != nil { return x.CustomDice } return "" } func (x *StoreReq_Dice) GetOpenMapPoint() int32 { if x != nil { return x.OpenMapPoint } return 0 } func (x *StoreReq_Dice) GetMapPoint() *StoreReq_MapPoint { if x != nil { return x.MapPoint } return nil } func (x *StoreReq_Dice) GetAwardType() int32 { if x != nil { return x.AwardType } return 0 } func (x *StoreReq_Dice) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *StoreReq_Dice) GetRollAgain() int32 { if x != nil { return x.RollAgain } return 0 } func (x *StoreReq_Dice) GetFixDiceCond() int32 { if x != nil { return x.FixDiceCond } return 0 } func (x *StoreReq_Dice) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *StoreReq_Dice) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *StoreReq_Dice) GetCloudImg() string { if x != nil { return x.CloudImg } return "" } type StoreReq_MapPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Blank string `protobuf:"bytes,1,opt,name=blank,proto3" json:"blank,omitempty"` //空白底座 Again string `protobuf:"bytes,2,opt,name=again,proto3" json:"again,omitempty"` //再摇一次底座 Normal string `protobuf:"bytes,3,opt,name=normal,proto3" json:"normal,omitempty"` //普通奖品底座 Supper string `protobuf:"bytes,4,opt,name=supper,proto3" json:"supper,omitempty"` //超级大奖底座 } func (x *StoreReq_MapPoint) Reset() { *x = StoreReq_MapPoint{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_MapPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_MapPoint) ProtoMessage() {} func (x *StoreReq_MapPoint) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[142] 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 StoreReq_MapPoint.ProtoReflect.Descriptor instead. func (*StoreReq_MapPoint) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 49} } func (x *StoreReq_MapPoint) GetBlank() string { if x != nil { return x.Blank } return "" } func (x *StoreReq_MapPoint) GetAgain() string { if x != nil { return x.Again } return "" } func (x *StoreReq_MapPoint) GetNormal() string { if x != nil { return x.Normal } return "" } func (x *StoreReq_MapPoint) GetSupper() string { if x != nil { return x.Supper } return "" } type StoreReq_Grow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AutoHour int32 `protobuf:"varint,1,opt,name=auto_hour,json=autoHour,proto3" json:"auto_hour,omitempty"` //自动生产成长道具小时数 AutoNum int32 `protobuf:"varint,2,opt,name=auto_num,json=autoNum,proto3" json:"auto_num,omitempty"` //生产的成长道具数 GrowNum int32 `protobuf:"varint,3,opt,name=grow_num,json=growNum,proto3" json:"grow_num,omitempty"` //邀请可获得的成长道具数量 TargetNum int32 `protobuf:"varint,4,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //获得成长道具需要邀请的人数 Revive int32 `protobuf:"varint,5,opt,name=revive,proto3" json:"revive,omitempty"` //是否支持复活(0-否,1-是) ReviveNum int32 `protobuf:"varint,6,opt,name=revive_num,json=reviveNum,proto3" json:"revive_num,omitempty"` //复活需要邀请的好友数 DieHour int32 `protobuf:"varint,7,opt,name=die_hour,json=dieHour,proto3" json:"die_hour,omitempty"` //未获得成长道具导致的死亡时间 Steps []*StoreReq_GrowStep `protobuf:"bytes,8,rep,name=steps,proto3" json:"steps,omitempty"` //成长阶段 InitNum int32 `protobuf:"varint,9,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始成长道具数量 } func (x *StoreReq_Grow) Reset() { *x = StoreReq_Grow{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Grow) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Grow) ProtoMessage() {} func (x *StoreReq_Grow) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[143] 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 StoreReq_Grow.ProtoReflect.Descriptor instead. func (*StoreReq_Grow) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 50} } func (x *StoreReq_Grow) GetAutoHour() int32 { if x != nil { return x.AutoHour } return 0 } func (x *StoreReq_Grow) GetAutoNum() int32 { if x != nil { return x.AutoNum } return 0 } func (x *StoreReq_Grow) GetGrowNum() int32 { if x != nil { return x.GrowNum } return 0 } func (x *StoreReq_Grow) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *StoreReq_Grow) GetRevive() int32 { if x != nil { return x.Revive } return 0 } func (x *StoreReq_Grow) GetReviveNum() int32 { if x != nil { return x.ReviveNum } return 0 } func (x *StoreReq_Grow) GetDieHour() int32 { if x != nil { return x.DieHour } return 0 } func (x *StoreReq_Grow) GetSteps() []*StoreReq_GrowStep { if x != nil { return x.Steps } return nil } func (x *StoreReq_Grow) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } type StoreReq_GrowStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"` //需要的养成道具数量 } func (x *StoreReq_GrowStep) Reset() { *x = StoreReq_GrowStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_GrowStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_GrowStep) ProtoMessage() {} func (x *StoreReq_GrowStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[144] 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 StoreReq_GrowStep.ProtoReflect.Descriptor instead. func (*StoreReq_GrowStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 51} } func (x *StoreReq_GrowStep) GetNum() int32 { if x != nil { return x.Num } return 0 } type StoreReq_Ballot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽签数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽签数 } func (x *StoreReq_Ballot) Reset() { *x = StoreReq_Ballot{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Ballot) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Ballot) ProtoMessage() {} func (x *StoreReq_Ballot) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[145] 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 StoreReq_Ballot.ProtoReflect.Descriptor instead. func (*StoreReq_Ballot) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 52} } func (x *StoreReq_Ballot) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Ballot) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type StoreReq_Chop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ShowBar int32 `protobuf:"varint,1,opt,name=show_bar,json=showBar,proto3" json:"show_bar,omitempty"` //是否展示进度条(0-否,1-是) } func (x *StoreReq_Chop) Reset() { *x = StoreReq_Chop{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Chop) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Chop) ProtoMessage() {} func (x *StoreReq_Chop) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[146] 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 StoreReq_Chop.ProtoReflect.Descriptor instead. func (*StoreReq_Chop) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 53} } func (x *StoreReq_Chop) GetShowBar() int32 { if x != nil { return x.ShowBar } return 0 } type StoreReq_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ExpiredDay int32 `protobuf:"varint,1,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price int32 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,3,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 Currency int32 `protobuf:"varint,4,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 LoopNum int32 `protobuf:"varint,5,opt,name=loop_num,json=loopNum,proto3" json:"loop_num,omitempty"` //支持循环次数 } func (x *StoreReq_Cash) Reset() { *x = StoreReq_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Cash) ProtoMessage() {} func (x *StoreReq_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[147] 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 StoreReq_Cash.ProtoReflect.Descriptor instead. func (*StoreReq_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 54} } func (x *StoreReq_Cash) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *StoreReq_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *StoreReq_Cash) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *StoreReq_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } func (x *StoreReq_Cash) GetLoopNum() int32 { if x != nil { return x.LoopNum } return 0 } type StoreReq_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 CardImg string `protobuf:"bytes,2,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 DayChance int32 `protobuf:"varint,3,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *StoreReq_Flip) Reset() { *x = StoreReq_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Flip) ProtoMessage() {} func (x *StoreReq_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[148] 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 StoreReq_Flip.ProtoReflect.Descriptor instead. func (*StoreReq_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 55} } func (x *StoreReq_Flip) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *StoreReq_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } func (x *StoreReq_Flip) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type StoreReq_Keep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Collect int32 `protobuf:"varint,1,opt,name=collect,proto3" json:"collect,omitempty"` //获得最终奖品需要的总收集数 CollectSecond int32 `protobuf:"varint,2,opt,name=collect_second,json=collectSecond,proto3" json:"collect_second,omitempty"` //单个收集需要的二级资源数 OpenInvite int32 `protobuf:"varint,3,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请(0-关闭,1-开启) Invite *StoreReq_Invite `protobuf:"bytes,4,opt,name=invite,proto3" json:"invite,omitempty"` //拉新配置 InitGet int32 `protobuf:"varint,5,opt,name=init_get,json=initGet,proto3" json:"init_get,omitempty"` //初始道具数 SecGet float64 `protobuf:"fixed64,6,opt,name=sec_get,json=secGet,proto3" json:"sec_get,omitempty"` //每秒获得道具数 FeedNum int32 `protobuf:"varint,7,opt,name=feed_num,json=feedNum,proto3" json:"feed_num,omitempty"` //每次使用道具数 FeedCycle int32 `protobuf:"varint,8,opt,name=feed_cycle,json=feedCycle,proto3" json:"feed_cycle,omitempty"` //喂养周期(单位:天) MaxFeed int32 `protobuf:"varint,9,opt,name=max_feed,json=maxFeed,proto3" json:"max_feed,omitempty"` //最大可领养次数 FeedGet int32 `protobuf:"varint,10,opt,name=feed_get,json=feedGet,proto3" json:"feed_get,omitempty"` //喂养能得到的道具数 FeedGetNum int32 `protobuf:"varint,11,opt,name=feed_get_num,json=feedGetNum,proto3" json:"feed_get_num,omitempty"` //得到喂养道具需要的喂养次数 TalkText []*StoreReq_Talk `protobuf:"bytes,12,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Steps []*StoreReq_KeepStep `protobuf:"bytes,13,rep,name=steps,proto3" json:"steps,omitempty"` //养成阶梯 SecGetDayLimit float64 `protobuf:"fixed64,14,opt,name=sec_get_day_limit,json=secGetDayLimit,proto3" json:"sec_get_day_limit,omitempty"` //每秒获得道具每日上限 MachineType int32 `protobuf:"varint,15,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` //狗粮机类型(1-在线收益,2-离线收益) OfflineMin int32 `protobuf:"varint,16,opt,name=offline_min,json=offlineMin,proto3" json:"offline_min,omitempty"` //离线分钟时长 OfflineGet int32 `protobuf:"varint,17,opt,name=offline_get,json=offlineGet,proto3" json:"offline_get,omitempty"` //离线收益最大值 OfflineLimit int32 `protobuf:"varint,18,opt,name=offline_limit,json=offlineLimit,proto3" json:"offline_limit,omitempty"` //离线收益最大领取次数 } func (x *StoreReq_Keep) Reset() { *x = StoreReq_Keep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Keep) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Keep) ProtoMessage() {} func (x *StoreReq_Keep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[149] 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 StoreReq_Keep.ProtoReflect.Descriptor instead. func (*StoreReq_Keep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 56} } func (x *StoreReq_Keep) GetCollect() int32 { if x != nil { return x.Collect } return 0 } func (x *StoreReq_Keep) GetCollectSecond() int32 { if x != nil { return x.CollectSecond } return 0 } func (x *StoreReq_Keep) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *StoreReq_Keep) GetInvite() *StoreReq_Invite { if x != nil { return x.Invite } return nil } func (x *StoreReq_Keep) GetInitGet() int32 { if x != nil { return x.InitGet } return 0 } func (x *StoreReq_Keep) GetSecGet() float64 { if x != nil { return x.SecGet } return 0 } func (x *StoreReq_Keep) GetFeedNum() int32 { if x != nil { return x.FeedNum } return 0 } func (x *StoreReq_Keep) GetFeedCycle() int32 { if x != nil { return x.FeedCycle } return 0 } func (x *StoreReq_Keep) GetMaxFeed() int32 { if x != nil { return x.MaxFeed } return 0 } func (x *StoreReq_Keep) GetFeedGet() int32 { if x != nil { return x.FeedGet } return 0 } func (x *StoreReq_Keep) GetFeedGetNum() int32 { if x != nil { return x.FeedGetNum } return 0 } func (x *StoreReq_Keep) GetTalkText() []*StoreReq_Talk { if x != nil { return x.TalkText } return nil } func (x *StoreReq_Keep) GetSteps() []*StoreReq_KeepStep { if x != nil { return x.Steps } return nil } func (x *StoreReq_Keep) GetSecGetDayLimit() float64 { if x != nil { return x.SecGetDayLimit } return 0 } func (x *StoreReq_Keep) GetMachineType() int32 { if x != nil { return x.MachineType } return 0 } func (x *StoreReq_Keep) GetOfflineMin() int32 { if x != nil { return x.OfflineMin } return 0 } func (x *StoreReq_Keep) GetOfflineGet() int32 { if x != nil { return x.OfflineGet } return 0 } func (x *StoreReq_Keep) GetOfflineLimit() int32 { if x != nil { return x.OfflineLimit } return 0 } type StoreReq_Invite struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InviteType int32 `protobuf:"varint,1,opt,name=invite_type,json=inviteType,proto3" json:"invite_type,omitempty"` //邀请类型(1-下载,2-安装) InviteGet int32 `protobuf:"varint,2,opt,name=invite_get,json=inviteGet,proto3" json:"invite_get,omitempty"` //邀请可获得的道具数量 RewardSelected int32 `protobuf:"varint,3,opt,name=reward_selected,json=rewardSelected,proto3" json:"reward_selected,omitempty"` //选择礼品可获得的道具数 FeedThird int32 `protobuf:"varint,4,opt,name=feed_third,json=feedThird,proto3" json:"feed_third,omitempty"` //喂养3次可获得的道具数 DayFirstInvite int32 `protobuf:"varint,5,opt,name=day_first_invite,json=dayFirstInvite,proto3" json:"day_first_invite,omitempty"` //是否开启每日首次拉新(0-否,1-是) DayFirstGet int32 `protobuf:"varint,6,opt,name=day_first_get,json=dayFirstGet,proto3" json:"day_first_get,omitempty"` //每日首次拉新可获得的道具数 DayFirstSelected int32 `protobuf:"varint,7,opt,name=day_first_selected,json=dayFirstSelected,proto3" json:"day_first_selected,omitempty"` //每日首日选择礼物可获得的道具数 DayFirstThird int32 `protobuf:"varint,8,opt,name=day_first_third,json=dayFirstThird,proto3" json:"day_first_third,omitempty"` //每日首次喂养三次可获得的道具数 InviteMaxGet int32 `protobuf:"varint,9,opt,name=invite_max_get,json=inviteMaxGet,proto3" json:"invite_max_get,omitempty"` //邀请人可获得的最大道具数 } func (x *StoreReq_Invite) Reset() { *x = StoreReq_Invite{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Invite) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Invite) ProtoMessage() {} func (x *StoreReq_Invite) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[150] 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 StoreReq_Invite.ProtoReflect.Descriptor instead. func (*StoreReq_Invite) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 57} } func (x *StoreReq_Invite) GetInviteType() int32 { if x != nil { return x.InviteType } return 0 } func (x *StoreReq_Invite) GetInviteGet() int32 { if x != nil { return x.InviteGet } return 0 } func (x *StoreReq_Invite) GetRewardSelected() int32 { if x != nil { return x.RewardSelected } return 0 } func (x *StoreReq_Invite) GetFeedThird() int32 { if x != nil { return x.FeedThird } return 0 } func (x *StoreReq_Invite) GetDayFirstInvite() int32 { if x != nil { return x.DayFirstInvite } return 0 } func (x *StoreReq_Invite) GetDayFirstGet() int32 { if x != nil { return x.DayFirstGet } return 0 } func (x *StoreReq_Invite) GetDayFirstSelected() int32 { if x != nil { return x.DayFirstSelected } return 0 } func (x *StoreReq_Invite) GetDayFirstThird() int32 { if x != nil { return x.DayFirstThird } return 0 } func (x *StoreReq_Invite) GetInviteMaxGet() int32 { if x != nil { return x.InviteMaxGet } return 0 } type StoreReq_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *StoreReq_Talk) Reset() { *x = StoreReq_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Talk) ProtoMessage() {} func (x *StoreReq_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[151] 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 StoreReq_Talk.ProtoReflect.Descriptor instead. func (*StoreReq_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 58} } func (x *StoreReq_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *StoreReq_Talk) GetContent() string { if x != nil { return x.Content } return "" } type StoreReq_KeepStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"` //阶段 Percent int32 `protobuf:"varint,2,opt,name=percent,proto3" json:"percent,omitempty"` //对应的进度条数值 RewardType int32 `protobuf:"varint,3,opt,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"` //奖品类型(1-成长道具,2-奖品) Reward *StoreReq_Reward `protobuf:"bytes,4,opt,name=reward,proto3" json:"reward,omitempty"` //奖品数据时 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //发放道具数量 } func (x *StoreReq_KeepStep) Reset() { *x = StoreReq_KeepStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_KeepStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_KeepStep) ProtoMessage() {} func (x *StoreReq_KeepStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[152] 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 StoreReq_KeepStep.ProtoReflect.Descriptor instead. func (*StoreReq_KeepStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 59} } func (x *StoreReq_KeepStep) GetStep() int32 { if x != nil { return x.Step } return 0 } func (x *StoreReq_KeepStep) GetPercent() int32 { if x != nil { return x.Percent } return 0 } func (x *StoreReq_KeepStep) GetRewardType() int32 { if x != nil { return x.RewardType } return 0 } func (x *StoreReq_KeepStep) GetReward() *StoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *StoreReq_KeepStep) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } type StoreReq_Push struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskReset *StoreReq_PushOne `protobuf:"bytes,1,opt,name=task_reset,json=taskReset,proto3" json:"task_reset,omitempty"` //重制提醒 Active *StoreReq_PushOne `protobuf:"bytes,2,opt,name=active,proto3" json:"active,omitempty"` //活跃提醒 Offline *StoreReq_PushOne `protobuf:"bytes,3,opt,name=offline,proto3" json:"offline,omitempty"` //离线提醒 Visit *StoreReq_PushOne `protobuf:"bytes,4,opt,name=visit,proto3" json:"visit,omitempty"` //访问提醒 } func (x *StoreReq_Push) Reset() { *x = StoreReq_Push{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Push) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Push) ProtoMessage() {} func (x *StoreReq_Push) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[153] 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 StoreReq_Push.ProtoReflect.Descriptor instead. func (*StoreReq_Push) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 60} } func (x *StoreReq_Push) GetTaskReset() *StoreReq_PushOne { if x != nil { return x.TaskReset } return nil } func (x *StoreReq_Push) GetActive() *StoreReq_PushOne { if x != nil { return x.Active } return nil } func (x *StoreReq_Push) GetOffline() *StoreReq_PushOne { if x != nil { return x.Offline } return nil } func (x *StoreReq_Push) GetVisit() *StoreReq_PushOne { if x != nil { return x.Visit } return nil } type StoreReq_PushOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 PushCond []*StoreReq_PushCond `protobuf:"bytes,2,rep,name=push_cond,json=pushCond,proto3" json:"push_cond,omitempty"` //条件内容 } func (x *StoreReq_PushOne) Reset() { *x = StoreReq_PushOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_PushOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_PushOne) ProtoMessage() {} func (x *StoreReq_PushOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[154] 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 StoreReq_PushOne.ProtoReflect.Descriptor instead. func (*StoreReq_PushOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 61} } func (x *StoreReq_PushOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *StoreReq_PushOne) GetPushCond() []*StoreReq_PushCond { if x != nil { return x.PushCond } return nil } type StoreReq_PushCond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mark string `protobuf:"bytes,1,opt,name=mark,proto3" json:"mark,omitempty"` //条件标识 Val string `protobuf:"bytes,2,opt,name=val,proto3" json:"val,omitempty"` //标识值 } func (x *StoreReq_PushCond) Reset() { *x = StoreReq_PushCond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_PushCond) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_PushCond) ProtoMessage() {} func (x *StoreReq_PushCond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[155] 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 StoreReq_PushCond.ProtoReflect.Descriptor instead. func (*StoreReq_PushCond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 62} } func (x *StoreReq_PushCond) GetMark() string { if x != nil { return x.Mark } return "" } func (x *StoreReq_PushCond) GetVal() string { if x != nil { return x.Val } return "" } type StoreReq_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoldNum int32 `protobuf:"varint,1,opt,name=gold_num,json=goldNum,proto3" json:"gold_num,omitempty"` //任务重置天数 ExpiredDay int32 `protobuf:"varint,2,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,4,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 Currency int32 `protobuf:"varint,5,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *StoreReq_Gold) Reset() { *x = StoreReq_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Gold) ProtoMessage() {} func (x *StoreReq_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[156] 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 StoreReq_Gold.ProtoReflect.Descriptor instead. func (*StoreReq_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 63} } func (x *StoreReq_Gold) GetGoldNum() int32 { if x != nil { return x.GoldNum } return 0 } func (x *StoreReq_Gold) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *StoreReq_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *StoreReq_Gold) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *StoreReq_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type StoreReq_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CoinImg string `protobuf:"bytes,1,opt,name=coin_img,json=coinImg,proto3" json:"coin_img,omitempty"` //金币图片 OpenDays int32 `protobuf:"varint,2,opt,name=open_days,json=openDays,proto3" json:"open_days,omitempty"` //开奖天数 OpenLimit int32 `protobuf:"varint,3,opt,name=open_limit,json=openLimit,proto3" json:"open_limit,omitempty"` //开奖次数限制 InitCoin int32 `protobuf:"varint,4,opt,name=init_coin,json=initCoin,proto3" json:"init_coin,omitempty"` //初始金币数 InitUse int32 `protobuf:"varint,5,opt,name=init_use,json=initUse,proto3" json:"init_use,omitempty"` //初始投放次数 UseCoin int32 `protobuf:"varint,6,opt,name=use_coin,json=useCoin,proto3" json:"use_coin,omitempty"` //单次投放消耗金币数 UseLimit int32 `protobuf:"varint,7,opt,name=use_limit,json=useLimit,proto3" json:"use_limit,omitempty"` //单次瓜分最多投放次数 UrlId int64 `protobuf:"varint,8,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id LackBtn []int32 `protobuf:"varint,9,rep,packed,name=lack_btn,json=lackBtn,proto3" json:"lack_btn,omitempty"` //金币不足展示的按钮(1-做任务,2-自定义按钮)[1,2] CustomBtnText string `protobuf:"bytes,10,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,11,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,12,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomPcParam string `protobuf:"bytes,13,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *StoreReq_Coin) Reset() { *x = StoreReq_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StoreReq_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*StoreReq_Coin) ProtoMessage() {} func (x *StoreReq_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[157] 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 StoreReq_Coin.ProtoReflect.Descriptor instead. func (*StoreReq_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{8, 64} } func (x *StoreReq_Coin) GetCoinImg() string { if x != nil { return x.CoinImg } return "" } func (x *StoreReq_Coin) GetOpenDays() int32 { if x != nil { return x.OpenDays } return 0 } func (x *StoreReq_Coin) GetOpenLimit() int32 { if x != nil { return x.OpenLimit } return 0 } func (x *StoreReq_Coin) GetInitCoin() int32 { if x != nil { return x.InitCoin } return 0 } func (x *StoreReq_Coin) GetInitUse() int32 { if x != nil { return x.InitUse } return 0 } func (x *StoreReq_Coin) GetUseCoin() int32 { if x != nil { return x.UseCoin } return 0 } func (x *StoreReq_Coin) GetUseLimit() int32 { if x != nil { return x.UseLimit } return 0 } func (x *StoreReq_Coin) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *StoreReq_Coin) GetLackBtn() []int32 { if x != nil { return x.LackBtn } return nil } func (x *StoreReq_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *StoreReq_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *StoreReq_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *StoreReq_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type UpdateReq_GashaponStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 MachineImg string `protobuf:"bytes,4,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 EggType int32 `protobuf:"varint,6,opt,name=egg_type,json=eggType,proto3" json:"egg_type,omitempty"` //类型 EggImgs []string `protobuf:"bytes,7,rep,name=egg_imgs,json=eggImgs,proto3" json:"egg_imgs,omitempty"` //扭蛋素材 } func (x *UpdateReq_GashaponStyle) Reset() { *x = UpdateReq_GashaponStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_GashaponStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_GashaponStyle) ProtoMessage() {} func (x *UpdateReq_GashaponStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[158] 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 UpdateReq_GashaponStyle.ProtoReflect.Descriptor instead. func (*UpdateReq_GashaponStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 0} } func (x *UpdateReq_GashaponStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *UpdateReq_GashaponStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *UpdateReq_GashaponStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *UpdateReq_GashaponStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *UpdateReq_GashaponStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *UpdateReq_GashaponStyle) GetEggType() int32 { if x != nil { return x.EggType } return 0 } func (x *UpdateReq_GashaponStyle) GetEggImgs() []string { if x != nil { return x.EggImgs } return nil } type UpdateReq_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FirstVisit *UpdateReq_EventOne `protobuf:"bytes,1,opt,name=first_visit,json=firstVisit,proto3" json:"first_visit,omitempty"` //首次访问 } func (x *UpdateReq_Event) Reset() { *x = UpdateReq_Event{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Event) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Event) ProtoMessage() {} func (x *UpdateReq_Event) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[159] 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 UpdateReq_Event.ProtoReflect.Descriptor instead. func (*UpdateReq_Event) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 1} } func (x *UpdateReq_Event) GetFirstVisit() *UpdateReq_EventOne { if x != nil { return x.FirstVisit } return nil } type UpdateReq_EventOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Rewards []*UpdateReq_EventReward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖励 } func (x *UpdateReq_EventOne) Reset() { *x = UpdateReq_EventOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_EventOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_EventOne) ProtoMessage() {} func (x *UpdateReq_EventOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[160] 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 UpdateReq_EventOne.ProtoReflect.Descriptor instead. func (*UpdateReq_EventOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 2} } func (x *UpdateReq_EventOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_EventOne) GetRewards() []*UpdateReq_EventReward { if x != nil { return x.Rewards } return nil } type UpdateReq_EventReward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PropMark string `protobuf:"bytes,2,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Reward *UpdateReq_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 Chance int32 `protobuf:"varint,4,opt,name=chance,proto3" json:"chance,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,5,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *UpdateReq_EventReward) Reset() { *x = UpdateReq_EventReward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_EventReward) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_EventReward) ProtoMessage() {} func (x *UpdateReq_EventReward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[161] 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 UpdateReq_EventReward.ProtoReflect.Descriptor instead. func (*UpdateReq_EventReward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 3} } func (x *UpdateReq_EventReward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_EventReward) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *UpdateReq_EventReward) GetReward() *UpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *UpdateReq_EventReward) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_EventReward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type UpdateReq_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖次数 PropMarks []string `protobuf:"bytes,2,rep,name=prop_marks,json=propMarks,proto3" json:"prop_marks,omitempty"` //道具类型(three - +3道具牌,five - +5道具牌,fix - 固定颜色道具牌) Red *UpdateReq_UnoGroup `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow *UpdateReq_UnoGroup `protobuf:"bytes,4,opt,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue *UpdateReq_UnoGroup `protobuf:"bytes,5,opt,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green *UpdateReq_UnoGroup `protobuf:"bytes,6,opt,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *UpdateReq_Uno) Reset() { *x = UpdateReq_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Uno) ProtoMessage() {} func (x *UpdateReq_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[162] 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 UpdateReq_Uno.ProtoReflect.Descriptor instead. func (*UpdateReq_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 4} } func (x *UpdateReq_Uno) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Uno) GetPropMarks() []string { if x != nil { return x.PropMarks } return nil } func (x *UpdateReq_Uno) GetRed() *UpdateReq_UnoGroup { if x != nil { return x.Red } return nil } func (x *UpdateReq_Uno) GetYellow() *UpdateReq_UnoGroup { if x != nil { return x.Yellow } return nil } func (x *UpdateReq_Uno) GetBlue() *UpdateReq_UnoGroup { if x != nil { return x.Blue } return nil } func (x *UpdateReq_Uno) GetGreen() *UpdateReq_UnoGroup { if x != nil { return x.Green } return nil } type UpdateReq_UnoGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌型id Odds string `protobuf:"bytes,2,opt,name=odds,proto3" json:"odds,omitempty"` //获得牌型概率 Reward *UpdateReq_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 OpenRule int32 `protobuf:"varint,4,opt,name=open_rule,json=openRule,proto3" json:"open_rule,omitempty"` //是否开启得牌规则(0-否,1-是) LimitRule *UpdateReq_UnoLimitRule `protobuf:"bytes,5,opt,name=limit_rule,json=limitRule,proto3" json:"limit_rule,omitempty"` //得牌规则 CustomCard int32 `protobuf:"varint,6,opt,name=custom_card,json=customCard,proto3" json:"custom_card,omitempty"` //自定义卡牌(0-否,1-是) Cards []*UpdateReq_UnoCard `protobuf:"bytes,7,rep,name=cards,proto3" json:"cards,omitempty"` //自定义卡牌 } func (x *UpdateReq_UnoGroup) Reset() { *x = UpdateReq_UnoGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_UnoGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_UnoGroup) ProtoMessage() {} func (x *UpdateReq_UnoGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[163] 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 UpdateReq_UnoGroup.ProtoReflect.Descriptor instead. func (*UpdateReq_UnoGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 5} } func (x *UpdateReq_UnoGroup) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_UnoGroup) GetOdds() string { if x != nil { return x.Odds } return "" } func (x *UpdateReq_UnoGroup) GetReward() *UpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *UpdateReq_UnoGroup) GetOpenRule() int32 { if x != nil { return x.OpenRule } return 0 } func (x *UpdateReq_UnoGroup) GetLimitRule() *UpdateReq_UnoLimitRule { if x != nil { return x.LimitRule } return nil } func (x *UpdateReq_UnoGroup) GetCustomCard() int32 { if x != nil { return x.CustomCard } return 0 } func (x *UpdateReq_UnoGroup) GetCards() []*UpdateReq_UnoCard { if x != nil { return x.Cards } return nil } type UpdateReq_UnoLimitRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitNum int32 `protobuf:"varint,1,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始的最大可获得牌型数 SignDay int32 `protobuf:"varint,2,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddNum int32 `protobuf:"varint,3,opt,name=add_num,json=addNum,proto3" json:"add_num,omitempty"` //完成条件可获得最大牌型数 ResetType int32 `protobuf:"varint,4,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置规则(1-不重置,2-获奖后重置) } func (x *UpdateReq_UnoLimitRule) Reset() { *x = UpdateReq_UnoLimitRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_UnoLimitRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_UnoLimitRule) ProtoMessage() {} func (x *UpdateReq_UnoLimitRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[164] 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 UpdateReq_UnoLimitRule.ProtoReflect.Descriptor instead. func (*UpdateReq_UnoLimitRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 6} } func (x *UpdateReq_UnoLimitRule) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } func (x *UpdateReq_UnoLimitRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *UpdateReq_UnoLimitRule) GetAddNum() int32 { if x != nil { return x.AddNum } return 0 } func (x *UpdateReq_UnoLimitRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type UpdateReq_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,5,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 } func (x *UpdateReq_UnoCard) Reset() { *x = UpdateReq_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_UnoCard) ProtoMessage() {} func (x *UpdateReq_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[165] 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 UpdateReq_UnoCard.ProtoReflect.Descriptor instead. func (*UpdateReq_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 7} } func (x *UpdateReq_UnoCard) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *UpdateReq_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *UpdateReq_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *UpdateReq_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } type UpdateReq_Vs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始投票次数 EachLimitNum int32 `protobuf:"varint,2,opt,name=each_limit_num,json=eachLimitNum,proto3" json:"each_limit_num,omitempty"` //每场可投票次数 OpenPoint int32 `protobuf:"varint,3,opt,name=open_point,json=openPoint,proto3" json:"open_point,omitempty"` //是否开启积分(0-否,1-是) PointsNum int32 `protobuf:"varint,4,opt,name=points_num,json=pointsNum,proto3" json:"points_num,omitempty"` //投票扣除积分数 MallOpen int32 `protobuf:"varint,5,opt,name=mall_open,json=mallOpen,proto3" json:"mall_open,omitempty"` //是否使用积分商城(0-否,1-是) MallId int64 `protobuf:"varint,6,opt,name=mall_id,json=mallId,proto3" json:"mall_id,omitempty"` //兑换商城id VsTz int32 `protobuf:"varint,7,opt,name=vs_tz,json=vsTz,proto3" json:"vs_tz,omitempty"` //比赛时区 ClaimType int32 `protobuf:"varint,8,opt,name=claim_type,json=claimType,proto3" json:"claim_type,omitempty"` //领奖方式(1-结算后自动发奖,2-结算后进入活动后发奖,3-结算后手动领奖) Schedules []*UpdateReq_Schedule `protobuf:"bytes,9,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 IconMall string `protobuf:"bytes,10,opt,name=icon_mall,json=iconMall,proto3" json:"icon_mall,omitempty"` //商城图标 IconReward string `protobuf:"bytes,11,opt,name=icon_reward,json=iconReward,proto3" json:"icon_reward,omitempty"` //奖励记录图标 IconSchedule string `protobuf:"bytes,12,opt,name=icon_schedule,json=iconSchedule,proto3" json:"icon_schedule,omitempty"` //赛程图标 } func (x *UpdateReq_Vs) Reset() { *x = UpdateReq_Vs{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Vs) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Vs) ProtoMessage() {} func (x *UpdateReq_Vs) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[166] 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 UpdateReq_Vs.ProtoReflect.Descriptor instead. func (*UpdateReq_Vs) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 8} } func (x *UpdateReq_Vs) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Vs) GetEachLimitNum() int32 { if x != nil { return x.EachLimitNum } return 0 } func (x *UpdateReq_Vs) GetOpenPoint() int32 { if x != nil { return x.OpenPoint } return 0 } func (x *UpdateReq_Vs) GetPointsNum() int32 { if x != nil { return x.PointsNum } return 0 } func (x *UpdateReq_Vs) GetMallOpen() int32 { if x != nil { return x.MallOpen } return 0 } func (x *UpdateReq_Vs) GetMallId() int64 { if x != nil { return x.MallId } return 0 } func (x *UpdateReq_Vs) GetVsTz() int32 { if x != nil { return x.VsTz } return 0 } func (x *UpdateReq_Vs) GetClaimType() int32 { if x != nil { return x.ClaimType } return 0 } func (x *UpdateReq_Vs) GetSchedules() []*UpdateReq_Schedule { if x != nil { return x.Schedules } return nil } func (x *UpdateReq_Vs) GetIconMall() string { if x != nil { return x.IconMall } return "" } func (x *UpdateReq_Vs) GetIconReward() string { if x != nil { return x.IconReward } return "" } func (x *UpdateReq_Vs) GetIconSchedule() string { if x != nil { return x.IconSchedule } return "" } type UpdateReq_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PkTeams []*UpdateReq_PkTeam `protobuf:"bytes,1,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *UpdateReq_Schedule) Reset() { *x = UpdateReq_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Schedule) ProtoMessage() {} func (x *UpdateReq_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[167] 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 UpdateReq_Schedule.ProtoReflect.Descriptor instead. func (*UpdateReq_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 9} } func (x *UpdateReq_Schedule) GetPkTeams() []*UpdateReq_PkTeam { if x != nil { return x.PkTeams } return nil } type UpdateReq_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id Teams []*UpdateReq_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VoteStart string `protobuf:"bytes,3,opt,name=vote_start,json=voteStart,proto3" json:"vote_start,omitempty"` //开始时间 VoteEnd string `protobuf:"bytes,4,opt,name=vote_end,json=voteEnd,proto3" json:"vote_end,omitempty"` //结束时间 VsDate string `protobuf:"bytes,5,opt,name=vs_date,json=vsDate,proto3" json:"vs_date,omitempty"` //比赛开始时间 VsImg string `protobuf:"bytes,6,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,7,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 PropMark string `protobuf:"bytes,8,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(reward-奖品,point-积分) RewardId int64 `protobuf:"varint,9,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库奖品id PropNum int32 `protobuf:"varint,10,opt,name=prop_num,json=propNum,proto3" json:"prop_num,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,11,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 OtherVote []string `protobuf:"bytes,12,rep,name=other_vote,json=otherVote,proto3" json:"other_vote,omitempty"` //其他投票方式 OpenOdds int32 `protobuf:"varint,13,opt,name=open_odds,json=openOdds,proto3" json:"open_odds,omitempty"` //是否开启赔率(0-否,1-是) OddsLeft string `protobuf:"bytes,14,opt,name=odds_left,json=oddsLeft,proto3" json:"odds_left,omitempty"` //左边赔率 OddsRight string `protobuf:"bytes,15,opt,name=odds_right,json=oddsRight,proto3" json:"odds_right,omitempty"` //右边赔率 OddsDraw string `protobuf:"bytes,16,opt,name=odds_draw,json=oddsDraw,proto3" json:"odds_draw,omitempty"` //平局赔率 } func (x *UpdateReq_PkTeam) Reset() { *x = UpdateReq_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_PkTeam) ProtoMessage() {} func (x *UpdateReq_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[168] 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 UpdateReq_PkTeam.ProtoReflect.Descriptor instead. func (*UpdateReq_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 10} } func (x *UpdateReq_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_PkTeam) GetTeams() []*UpdateReq_Team { if x != nil { return x.Teams } return nil } func (x *UpdateReq_PkTeam) GetVoteStart() string { if x != nil { return x.VoteStart } return "" } func (x *UpdateReq_PkTeam) GetVoteEnd() string { if x != nil { return x.VoteEnd } return "" } func (x *UpdateReq_PkTeam) GetVsDate() string { if x != nil { return x.VsDate } return "" } func (x *UpdateReq_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *UpdateReq_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *UpdateReq_PkTeam) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *UpdateReq_PkTeam) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *UpdateReq_PkTeam) GetPropNum() int32 { if x != nil { return x.PropNum } return 0 } func (x *UpdateReq_PkTeam) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *UpdateReq_PkTeam) GetOtherVote() []string { if x != nil { return x.OtherVote } return nil } func (x *UpdateReq_PkTeam) GetOpenOdds() int32 { if x != nil { return x.OpenOdds } return 0 } func (x *UpdateReq_PkTeam) GetOddsLeft() string { if x != nil { return x.OddsLeft } return "" } func (x *UpdateReq_PkTeam) GetOddsRight() string { if x != nil { return x.OddsRight } return "" } func (x *UpdateReq_PkTeam) GetOddsDraw() string { if x != nil { return x.OddsDraw } return "" } type UpdateReq_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *UpdateReq_Team) Reset() { *x = UpdateReq_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Team) ProtoMessage() {} func (x *UpdateReq_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[169] 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 UpdateReq_Team.ProtoReflect.Descriptor instead. func (*UpdateReq_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 11} } func (x *UpdateReq_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateReq_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type UpdateReq_Chat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启ai陪伴(0-关闭,1-开启) HeaderImg string `protobuf:"bytes,2,opt,name=header_img,json=headerImg,proto3" json:"header_img,omitempty"` //宠物头像 ChatBg string `protobuf:"bytes,3,opt,name=chat_bg,json=chatBg,proto3" json:"chat_bg,omitempty"` //聊天背景 DayLimit int32 `protobuf:"varint,4,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日聊天上限 } func (x *UpdateReq_Chat) Reset() { *x = UpdateReq_Chat{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Chat) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Chat) ProtoMessage() {} func (x *UpdateReq_Chat) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[170] 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 UpdateReq_Chat.ProtoReflect.Descriptor instead. func (*UpdateReq_Chat) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 12} } func (x *UpdateReq_Chat) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_Chat) GetHeaderImg() string { if x != nil { return x.HeaderImg } return "" } func (x *UpdateReq_Chat) GetChatBg() string { if x != nil { return x.ChatBg } return "" } func (x *UpdateReq_Chat) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } type UpdateReq_PointsUse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启积分消耗(0-否,1-是) Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` //积分icon图 UrlId int64 `protobuf:"varint,3,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id UseNum int32 `protobuf:"varint,4,opt,name=use_num,json=useNum,proto3" json:"use_num,omitempty"` //单次兑换使用积分数量 DayLimit int32 `protobuf:"varint,5,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日可兑换次数 TotalLimit int32 `protobuf:"varint,6,opt,name=total_limit,json=totalLimit,proto3" json:"total_limit,omitempty"` //总兑换次数 } func (x *UpdateReq_PointsUse) Reset() { *x = UpdateReq_PointsUse{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_PointsUse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_PointsUse) ProtoMessage() {} func (x *UpdateReq_PointsUse) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[171] 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 UpdateReq_PointsUse.ProtoReflect.Descriptor instead. func (*UpdateReq_PointsUse) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 13} } func (x *UpdateReq_PointsUse) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_PointsUse) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *UpdateReq_PointsUse) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *UpdateReq_PointsUse) GetUseNum() int32 { if x != nil { return x.UseNum } return 0 } func (x *UpdateReq_PointsUse) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *UpdateReq_PointsUse) GetTotalLimit() int32 { if x != nil { return x.TotalLimit } return 0 } type UpdateReq_FlipStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 CardImg string `protobuf:"bytes,6,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡片素材 } func (x *UpdateReq_FlipStyle) Reset() { *x = UpdateReq_FlipStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_FlipStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_FlipStyle) ProtoMessage() {} func (x *UpdateReq_FlipStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[172] 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 UpdateReq_FlipStyle.ProtoReflect.Descriptor instead. func (*UpdateReq_FlipStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 14} } func (x *UpdateReq_FlipStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *UpdateReq_FlipStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *UpdateReq_FlipStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *UpdateReq_FlipStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *UpdateReq_FlipStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *UpdateReq_FlipStyle) GetCardImg() string { if x != nil { return x.CardImg } return "" } type UpdateReq_GridStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 DisablePlayImg string `protobuf:"bytes,6,opt,name=disable_play_img,json=disablePlayImg,proto3" json:"disable_play_img,omitempty"` //Go按钮禁用 MachineImg string `protobuf:"bytes,7,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 GridImg string `protobuf:"bytes,8,opt,name=grid_img,json=gridImg,proto3" json:"grid_img,omitempty"` //方格图 ActivateImg string `protobuf:"bytes,9,opt,name=activate_img,json=activateImg,proto3" json:"activate_img,omitempty"` //方格激活图 } func (x *UpdateReq_GridStyle) Reset() { *x = UpdateReq_GridStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_GridStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_GridStyle) ProtoMessage() {} func (x *UpdateReq_GridStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[173] 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 UpdateReq_GridStyle.ProtoReflect.Descriptor instead. func (*UpdateReq_GridStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 15} } func (x *UpdateReq_GridStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *UpdateReq_GridStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *UpdateReq_GridStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *UpdateReq_GridStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *UpdateReq_GridStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *UpdateReq_GridStyle) GetDisablePlayImg() string { if x != nil { return x.DisablePlayImg } return "" } func (x *UpdateReq_GridStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *UpdateReq_GridStyle) GetGridImg() string { if x != nil { return x.GridImg } return "" } func (x *UpdateReq_GridStyle) GetActivateImg() string { if x != nil { return x.ActivateImg } return "" } type UpdateReq_WheelStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 Bottom1 string `protobuf:"bytes,4,opt,name=bottom1,proto3" json:"bottom1,omitempty"` //底部颜色1 Bottom2 string `protobuf:"bytes,5,opt,name=bottom2,proto3" json:"bottom2,omitempty"` //底部颜色2 Bottom3 string `protobuf:"bytes,6,opt,name=bottom3,proto3" json:"bottom3,omitempty"` //底部颜色3 Pointer string `protobuf:"bytes,7,opt,name=pointer,proto3" json:"pointer,omitempty"` //指针图片 PlayBtn string `protobuf:"bytes,8,opt,name=play_btn,json=playBtn,proto3" json:"play_btn,omitempty"` //玩法按钮图片 BorderImg string `protobuf:"bytes,9,opt,name=border_img,json=borderImg,proto3" json:"border_img,omitempty"` //边框图片 ButtonColor string `protobuf:"bytes,10,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 WheelTextColor string `protobuf:"bytes,11,opt,name=wheel_text_color,json=wheelTextColor,proto3" json:"wheel_text_color,omitempty"` //转盘文字颜色 } func (x *UpdateReq_WheelStyle) Reset() { *x = UpdateReq_WheelStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_WheelStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_WheelStyle) ProtoMessage() {} func (x *UpdateReq_WheelStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[174] 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 UpdateReq_WheelStyle.ProtoReflect.Descriptor instead. func (*UpdateReq_WheelStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 16} } func (x *UpdateReq_WheelStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *UpdateReq_WheelStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *UpdateReq_WheelStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *UpdateReq_WheelStyle) GetBottom1() string { if x != nil { return x.Bottom1 } return "" } func (x *UpdateReq_WheelStyle) GetBottom2() string { if x != nil { return x.Bottom2 } return "" } func (x *UpdateReq_WheelStyle) GetBottom3() string { if x != nil { return x.Bottom3 } return "" } func (x *UpdateReq_WheelStyle) GetPointer() string { if x != nil { return x.Pointer } return "" } func (x *UpdateReq_WheelStyle) GetPlayBtn() string { if x != nil { return x.PlayBtn } return "" } func (x *UpdateReq_WheelStyle) GetBorderImg() string { if x != nil { return x.BorderImg } return "" } func (x *UpdateReq_WheelStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *UpdateReq_WheelStyle) GetWheelTextColor() string { if x != nil { return x.WheelTextColor } return "" } type UpdateReq_Child struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id ChildType int32 `protobuf:"varint,2,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 } func (x *UpdateReq_Child) Reset() { *x = UpdateReq_Child{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Child) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Child) ProtoMessage() {} func (x *UpdateReq_Child) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[175] 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 UpdateReq_Child.ProtoReflect.Descriptor instead. func (*UpdateReq_Child) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 17} } func (x *UpdateReq_Child) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *UpdateReq_Child) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } type UpdateReq_Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RuleTextColor string `protobuf:"bytes,1,opt,name=rule_text_color,json=ruleTextColor,proto3" json:"rule_text_color,omitempty"` //规则文字颜色 RuleBgColor string `protobuf:"bytes,2,opt,name=rule_bg_color,json=ruleBgColor,proto3" json:"rule_bg_color,omitempty"` //规则背景颜色 ShareText string `protobuf:"bytes,3,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,4,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 HasRank int32 `protobuf:"varint,5,opt,name=has_rank,json=hasRank,proto3" json:"has_rank,omitempty"` //是否展示中奖纪录(1-是,0-否) RankBackgroundColor string `protobuf:"bytes,6,opt,name=rank_background_color,json=rankBackgroundColor,proto3" json:"rank_background_color,omitempty"` //排行榜背景颜色 RankTextColor string `protobuf:"bytes,7,opt,name=rank_text_color,json=rankTextColor,proto3" json:"rank_text_color,omitempty"` //排行榜背景颜色 DownloadPageImage string `protobuf:"bytes,8,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 IsDefaultDownload int32 `protobuf:"varint,9,opt,name=is_default_download,json=isDefaultDownload,proto3" json:"is_default_download,omitempty"` //是否使用默认下载图(1-是,0-否) WechatPageImage string `protobuf:"bytes,10,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 IsDefaultWechat int32 `protobuf:"varint,11,opt,name=is_default_wechat,json=isDefaultWechat,proto3" json:"is_default_wechat,omitempty"` //是否使用默认微信引导图(1-是,0-否) ImageMain string `protobuf:"bytes,12,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 IsDefaultMain int32 `protobuf:"varint,13,opt,name=is_default_main,json=isDefaultMain,proto3" json:"is_default_main,omitempty"` //是否使用默认活动主图(1-是,0-否) ImagePreview string `protobuf:"bytes,14,opt,name=image_preview,json=imagePreview,proto3" json:"image_preview,omitempty"` //问题页背景图 LinkBtnTextColor string `protobuf:"bytes,15,opt,name=link_btn_text_color,json=linkBtnTextColor,proto3" json:"link_btn_text_color,omitempty"` //分享链接按钮文字颜色 LinkBtnBgColor string `protobuf:"bytes,16,opt,name=link_btn_bg_color,json=linkBtnBgColor,proto3" json:"link_btn_bg_color,omitempty"` //分享链接按钮背景颜色 LinkTextColor string `protobuf:"bytes,17,opt,name=link_text_color,json=linkTextColor,proto3" json:"link_text_color,omitempty"` //分享链接文字颜色 ShowShare int32 `protobuf:"varint,18,opt,name=show_share,json=showShare,proto3" json:"show_share,omitempty"` //是否显示分享社交媒体(0-否,1-是) Share []int64 `protobuf:"varint,19,rep,packed,name=share,proto3" json:"share,omitempty"` //要分享的社交媒体,例如[1,2,3] PlayRule string `protobuf:"bytes,20,opt,name=play_rule,json=playRule,proto3" json:"play_rule,omitempty"` //玩法规则 PageTitle string `protobuf:"bytes,21,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 DmShow int32 `protobuf:"varint,22,opt,name=dm_show,json=dmShow,proto3" json:"dm_show,omitempty"` //是否显示弹幕(0-否,1-是) WebBgImg string `protobuf:"bytes,23,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外活动背景图 HasWarmUp int32 `protobuf:"varint,24,opt,name=has_warm_up,json=hasWarmUp,proto3" json:"has_warm_up,omitempty"` //是否预热(0-否,1-是) WarmUpImg string `protobuf:"bytes,25,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 WarmUpEnd int32 `protobuf:"varint,26,opt,name=warm_up_end,json=warmUpEnd,proto3" json:"warm_up_end,omitempty"` //活动开始前多少分钟结束预热 IconType int32 `protobuf:"varint,27,opt,name=icon_type,json=iconType,proto3" json:"icon_type,omitempty"` //活动挂件类型(用于前端挂件选用判断) IconBgColor string `protobuf:"bytes,28,opt,name=icon_bg_color,json=iconBgColor,proto3" json:"icon_bg_color,omitempty"` //活动挂件背景色 DlType int32 `protobuf:"varint,29,opt,name=dl_type,json=dlType,proto3" json:"dl_type,omitempty"` //下载引导页类型(1-通用,2-自定义多媒体) DlBannerType int32 `protobuf:"varint,30,opt,name=dl_banner_type,json=dlBannerType,proto3" json:"dl_banner_type,omitempty"` //下载页横幅类型(1-默认,2-自定义) DlBannerImg string `protobuf:"bytes,31,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,32,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,33,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,34,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 DlBannerPosition int32 `protobuf:"varint,35,opt,name=dl_banner_position,json=dlBannerPosition,proto3" json:"dl_banner_position,omitempty"` //下载页横幅位置(1-顶部,2-底部) TopicColor string `protobuf:"bytes,36,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 WindowCover int32 `protobuf:"varint,37,opt,name=window_cover,json=windowCover,proto3" json:"window_cover,omitempty"` //是否显示弹幕(0-否,1-是) IconOpen []int32 `protobuf:"varint,38,rep,packed,name=icon_open,json=iconOpen,proto3" json:"icon_open,omitempty"` //开启的挂件(1-奖品列表,2-邀请记录,3-奖励记录,4-邀请好友),例如[1,3] HasWhite int32 `protobuf:"varint,39,opt,name=has_white,json=hasWhite,proto3" json:"has_white,omitempty"` //是否开启白名单(0-否,1-是) WhiteList string `protobuf:"bytes,40,opt,name=white_list,json=whiteList,proto3" json:"white_list,omitempty"` //白名单列表(多个用英文;分割) PcBg string `protobuf:"bytes,41,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc适配背景图 AdsType int32 `protobuf:"varint,42,opt,name=ads_type,json=adsType,proto3" json:"ads_type,omitempty"` //广告状态(0-不启用广告,1-跟随项目配置,2-活动开启) LevelIds []int64 `protobuf:"varint,43,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 LinkTempId string `protobuf:"bytes,44,opt,name=link_temp_id,json=linkTempId,proto3" json:"link_temp_id,omitempty"` //链接模板id RuleTimeOpen int32 `protobuf:"varint,45,opt,name=rule_time_open,json=ruleTimeOpen,proto3" json:"rule_time_open,omitempty"` //是否展示规则中的活动时间(0-否,1-是) OutsideTask int32 `protobuf:"varint,46,opt,name=outside_task,json=outsideTask,proto3" json:"outside_task,omitempty"` //是否外显任务(0-否,1-是) IconTextColor string `protobuf:"bytes,47,opt,name=icon_text_color,json=iconTextColor,proto3" json:"icon_text_color,omitempty"` //活动挂件字体色 OpenShare int32 `protobuf:"varint,48,opt,name=open_share,json=openShare,proto3" json:"open_share,omitempty"` //是否启用分享模块(0-否,1-是) ShowToUse int32 `protobuf:"varint,49,opt,name=show_to_use,json=showToUse,proto3" json:"show_to_use,omitempty"` //是否展示奖品弹窗的去使用(0-不展示,1-展示) RuleType int32 `protobuf:"varint,50,opt,name=rule_type,json=ruleType,proto3" json:"rule_type,omitempty"` //规则展示类型(0-文本,1-图片) RuleImg string `protobuf:"bytes,51,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 RuleOutside int32 `protobuf:"varint,52,opt,name=rule_outside,json=ruleOutside,proto3" json:"rule_outside,omitempty"` //规则是否外显(0-否,1-是) DeviceOnce int32 `protobuf:"varint,53,opt,name=device_once,json=deviceOnce,proto3" json:"device_once,omitempty"` //设备唯一(0-否,1-是) } func (x *UpdateReq_Config) Reset() { *x = UpdateReq_Config{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Config) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Config) ProtoMessage() {} func (x *UpdateReq_Config) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[176] 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 UpdateReq_Config.ProtoReflect.Descriptor instead. func (*UpdateReq_Config) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 18} } func (x *UpdateReq_Config) GetRuleTextColor() string { if x != nil { return x.RuleTextColor } return "" } func (x *UpdateReq_Config) GetRuleBgColor() string { if x != nil { return x.RuleBgColor } return "" } func (x *UpdateReq_Config) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *UpdateReq_Config) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *UpdateReq_Config) GetHasRank() int32 { if x != nil { return x.HasRank } return 0 } func (x *UpdateReq_Config) GetRankBackgroundColor() string { if x != nil { return x.RankBackgroundColor } return "" } func (x *UpdateReq_Config) GetRankTextColor() string { if x != nil { return x.RankTextColor } return "" } func (x *UpdateReq_Config) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *UpdateReq_Config) GetIsDefaultDownload() int32 { if x != nil { return x.IsDefaultDownload } return 0 } func (x *UpdateReq_Config) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *UpdateReq_Config) GetIsDefaultWechat() int32 { if x != nil { return x.IsDefaultWechat } return 0 } func (x *UpdateReq_Config) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *UpdateReq_Config) GetIsDefaultMain() int32 { if x != nil { return x.IsDefaultMain } return 0 } func (x *UpdateReq_Config) GetImagePreview() string { if x != nil { return x.ImagePreview } return "" } func (x *UpdateReq_Config) GetLinkBtnTextColor() string { if x != nil { return x.LinkBtnTextColor } return "" } func (x *UpdateReq_Config) GetLinkBtnBgColor() string { if x != nil { return x.LinkBtnBgColor } return "" } func (x *UpdateReq_Config) GetLinkTextColor() string { if x != nil { return x.LinkTextColor } return "" } func (x *UpdateReq_Config) GetShowShare() int32 { if x != nil { return x.ShowShare } return 0 } func (x *UpdateReq_Config) GetShare() []int64 { if x != nil { return x.Share } return nil } func (x *UpdateReq_Config) GetPlayRule() string { if x != nil { return x.PlayRule } return "" } func (x *UpdateReq_Config) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *UpdateReq_Config) GetDmShow() int32 { if x != nil { return x.DmShow } return 0 } func (x *UpdateReq_Config) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *UpdateReq_Config) GetHasWarmUp() int32 { if x != nil { return x.HasWarmUp } return 0 } func (x *UpdateReq_Config) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *UpdateReq_Config) GetWarmUpEnd() int32 { if x != nil { return x.WarmUpEnd } return 0 } func (x *UpdateReq_Config) GetIconType() int32 { if x != nil { return x.IconType } return 0 } func (x *UpdateReq_Config) GetIconBgColor() string { if x != nil { return x.IconBgColor } return "" } func (x *UpdateReq_Config) GetDlType() int32 { if x != nil { return x.DlType } return 0 } func (x *UpdateReq_Config) GetDlBannerType() int32 { if x != nil { return x.DlBannerType } return 0 } func (x *UpdateReq_Config) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *UpdateReq_Config) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *UpdateReq_Config) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *UpdateReq_Config) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *UpdateReq_Config) GetDlBannerPosition() int32 { if x != nil { return x.DlBannerPosition } return 0 } func (x *UpdateReq_Config) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *UpdateReq_Config) GetWindowCover() int32 { if x != nil { return x.WindowCover } return 0 } func (x *UpdateReq_Config) GetIconOpen() []int32 { if x != nil { return x.IconOpen } return nil } func (x *UpdateReq_Config) GetHasWhite() int32 { if x != nil { return x.HasWhite } return 0 } func (x *UpdateReq_Config) GetWhiteList() string { if x != nil { return x.WhiteList } return "" } func (x *UpdateReq_Config) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *UpdateReq_Config) GetAdsType() int32 { if x != nil { return x.AdsType } return 0 } func (x *UpdateReq_Config) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *UpdateReq_Config) GetLinkTempId() string { if x != nil { return x.LinkTempId } return "" } func (x *UpdateReq_Config) GetRuleTimeOpen() int32 { if x != nil { return x.RuleTimeOpen } return 0 } func (x *UpdateReq_Config) GetOutsideTask() int32 { if x != nil { return x.OutsideTask } return 0 } func (x *UpdateReq_Config) GetIconTextColor() string { if x != nil { return x.IconTextColor } return "" } func (x *UpdateReq_Config) GetOpenShare() int32 { if x != nil { return x.OpenShare } return 0 } func (x *UpdateReq_Config) GetShowToUse() int32 { if x != nil { return x.ShowToUse } return 0 } func (x *UpdateReq_Config) GetRuleType() int32 { if x != nil { return x.RuleType } return 0 } func (x *UpdateReq_Config) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *UpdateReq_Config) GetRuleOutside() int32 { if x != nil { return x.RuleOutside } return 0 } func (x *UpdateReq_Config) GetDeviceOnce() int32 { if x != nil { return x.DeviceOnce } return 0 } type UpdateReq_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 Id int64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` //长图id ClickType int32 `protobuf:"varint,5,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*UpdateReq_HotZone `protobuf:"bytes,6,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,9,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *UpdateReq_LongImg) Reset() { *x = UpdateReq_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_LongImg) ProtoMessage() {} func (x *UpdateReq_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[177] 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 UpdateReq_LongImg.ProtoReflect.Descriptor instead. func (*UpdateReq_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 19} } func (x *UpdateReq_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *UpdateReq_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *UpdateReq_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *UpdateReq_LongImg) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *UpdateReq_LongImg) GetHotZone() []*UpdateReq_HotZone { if x != nil { return x.HotZone } return nil } func (x *UpdateReq_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *UpdateReq_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *UpdateReq_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } type UpdateReq_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //热区id WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,4,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,5,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,6,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,7,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,8,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,10,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *UpdateReq_HotZone) Reset() { *x = UpdateReq_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_HotZone) ProtoMessage() {} func (x *UpdateReq_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[178] 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 UpdateReq_HotZone.ProtoReflect.Descriptor instead. func (*UpdateReq_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 20} } func (x *UpdateReq_HotZone) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *UpdateReq_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *UpdateReq_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *UpdateReq_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *UpdateReq_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *UpdateReq_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *UpdateReq_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *UpdateReq_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *UpdateReq_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type UpdateReq_Target struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Option int32 `protobuf:"varint,2,opt,name=option,proto3" json:"option,omitempty"` //标选择类型(1-app下载/注册;2-好友完成指定事件;3-指定事件达标;4-拉充值/积分消耗;5-用户指定事件达标) AppEvent int32 `protobuf:"varint,3,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //目标选择类型为1(option=1)的选项(1-安装;2-注册) BothType int32 `protobuf:"varint,4,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*UpdateReq_Cond `protobuf:"bytes,5,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *UpdateReq_BothAll `protobuf:"bytes,6,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 NormalData *UpdateReq_NormalData `protobuf:"bytes,7,opt,name=normal_data,json=normalData,proto3" json:"normal_data,omitempty"` //通用事件的数据 } func (x *UpdateReq_Target) Reset() { *x = UpdateReq_Target{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Target) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Target) ProtoMessage() {} func (x *UpdateReq_Target) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[179] 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 UpdateReq_Target.ProtoReflect.Descriptor instead. func (*UpdateReq_Target) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 21} } func (x *UpdateReq_Target) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *UpdateReq_Target) GetOption() int32 { if x != nil { return x.Option } return 0 } func (x *UpdateReq_Target) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *UpdateReq_Target) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *UpdateReq_Target) GetCond() []*UpdateReq_Cond { if x != nil { return x.Cond } return nil } func (x *UpdateReq_Target) GetBothAll() *UpdateReq_BothAll { if x != nil { return x.BothAll } return nil } func (x *UpdateReq_Target) GetNormalData() *UpdateReq_NormalData { if x != nil { return x.NormalData } return nil } type UpdateReq_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //条件id Event string `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,3,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,4,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,6,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,7,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,8,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,9,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,10,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,11,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,12,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,13,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,14,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,15,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,16,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,17,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,18,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,19,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,20,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,21,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,22,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id IsSuper int32 `protobuf:"varint,23,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,24,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,25,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,26,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *UpdateReq_Reward `protobuf:"bytes,27,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,28,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Sort int32 `protobuf:"varint,29,opt,name=sort,proto3" json:"sort,omitempty"` //排序 OpenPush int32 `protobuf:"varint,30,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) PcParam string `protobuf:"bytes,31,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 AwardMode int32 `protobuf:"varint,32,opt,name=award_mode,json=awardMode,proto3" json:"award_mode,omitempty"` //领奖模式(1-自动领奖,2-手动领奖) GoText string `protobuf:"bytes,33,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 ClickEffectOpen int32 `protobuf:"varint,34,opt,name=click_effect_open,json=clickEffectOpen,proto3" json:"click_effect_open,omitempty"` //是否开启点击有效(0-否,1-是) ClickEffect int32 `protobuf:"varint,35,opt,name=click_effect,json=clickEffect,proto3" json:"click_effect,omitempty"` //点击有效值 ClickEffectUnit string `protobuf:"bytes,36,opt,name=click_effect_unit,json=clickEffectUnit,proto3" json:"click_effect_unit,omitempty"` //点击有效单位(min-分钟,hour-小时,day-天) ExpiredDay string `protobuf:"bytes,37,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 PullInvite int32 `protobuf:"varint,38,opt,name=pull_invite,json=pullInvite,proto3" json:"pull_invite,omitempty"` //是否拉起邀请(0-否,1-是) } func (x *UpdateReq_Cond) Reset() { *x = UpdateReq_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Cond) ProtoMessage() {} func (x *UpdateReq_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[180] 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 UpdateReq_Cond.ProtoReflect.Descriptor instead. func (*UpdateReq_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 22} } func (x *UpdateReq_Cond) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *UpdateReq_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *UpdateReq_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *UpdateReq_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *UpdateReq_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *UpdateReq_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *UpdateReq_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *UpdateReq_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *UpdateReq_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *UpdateReq_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *UpdateReq_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *UpdateReq_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *UpdateReq_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *UpdateReq_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *UpdateReq_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *UpdateReq_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *UpdateReq_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *UpdateReq_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *UpdateReq_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *UpdateReq_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *UpdateReq_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *UpdateReq_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *UpdateReq_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *UpdateReq_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *UpdateReq_Cond) GetReward() *UpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *UpdateReq_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *UpdateReq_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *UpdateReq_Cond) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } func (x *UpdateReq_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *UpdateReq_Cond) GetAwardMode() int32 { if x != nil { return x.AwardMode } return 0 } func (x *UpdateReq_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } func (x *UpdateReq_Cond) GetClickEffectOpen() int32 { if x != nil { return x.ClickEffectOpen } return 0 } func (x *UpdateReq_Cond) GetClickEffect() int32 { if x != nil { return x.ClickEffect } return 0 } func (x *UpdateReq_Cond) GetClickEffectUnit() string { if x != nil { return x.ClickEffectUnit } return "" } func (x *UpdateReq_Cond) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *UpdateReq_Cond) GetPullInvite() int32 { if x != nil { return x.PullInvite } return 0 } type UpdateReq_BothAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskLimit int32 `protobuf:"varint,1,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) DayLimit int32 `protobuf:"varint,3,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,4,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 LangMarks []string `protobuf:"bytes,5,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WeekLimit int32 `protobuf:"varint,6,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,7,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 Reward *UpdateReq_Reward `protobuf:"bytes,8,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,9,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) ExpiredDay string `protobuf:"bytes,10,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *UpdateReq_BothAll) Reset() { *x = UpdateReq_BothAll{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_BothAll) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_BothAll) ProtoMessage() {} func (x *UpdateReq_BothAll) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[181] 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 UpdateReq_BothAll.ProtoReflect.Descriptor instead. func (*UpdateReq_BothAll) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 23} } func (x *UpdateReq_BothAll) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *UpdateReq_BothAll) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_BothAll) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *UpdateReq_BothAll) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *UpdateReq_BothAll) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *UpdateReq_BothAll) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *UpdateReq_BothAll) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *UpdateReq_BothAll) GetReward() *UpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *UpdateReq_BothAll) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *UpdateReq_BothAll) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type UpdateReq_NormalData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,3,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) } func (x *UpdateReq_NormalData) Reset() { *x = UpdateReq_NormalData{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_NormalData) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_NormalData) ProtoMessage() {} func (x *UpdateReq_NormalData) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[182] 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 UpdateReq_NormalData.ProtoReflect.Descriptor instead. func (*UpdateReq_NormalData) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 24} } func (x *UpdateReq_NormalData) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_NormalData) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_NormalData) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } type UpdateReq_TargetOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Fixed *UpdateReq_Fixed `protobuf:"bytes,2,opt,name=fixed,proto3" json:"fixed,omitempty"` //固定事件 Custom *UpdateReq_Custom `protobuf:"bytes,3,opt,name=custom,proto3" json:"custom,omitempty"` //自定义事件 } func (x *UpdateReq_TargetOption) Reset() { *x = UpdateReq_TargetOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_TargetOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_TargetOption) ProtoMessage() {} func (x *UpdateReq_TargetOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[183] 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 UpdateReq_TargetOption.ProtoReflect.Descriptor instead. func (*UpdateReq_TargetOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 25} } func (x *UpdateReq_TargetOption) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *UpdateReq_TargetOption) GetFixed() *UpdateReq_Fixed { if x != nil { return x.Fixed } return nil } func (x *UpdateReq_TargetOption) GetCustom() *UpdateReq_Custom { if x != nil { return x.Custom } return nil } type UpdateReq_Fixed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) AppEvent int32 `protobuf:"varint,2,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //固定事件类型(1-安装;2-注册) TargetNum int32 `protobuf:"varint,3,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,4,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,5,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) Percent float64 `protobuf:"fixed64,6,opt,name=percent,proto3" json:"percent,omitempty"` //百分比值(如:获得的能量点) } func (x *UpdateReq_Fixed) Reset() { *x = UpdateReq_Fixed{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Fixed) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Fixed) ProtoMessage() {} func (x *UpdateReq_Fixed) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[184] 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 UpdateReq_Fixed.ProtoReflect.Descriptor instead. func (*UpdateReq_Fixed) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 26} } func (x *UpdateReq_Fixed) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_Fixed) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *UpdateReq_Fixed) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_Fixed) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_Fixed) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } func (x *UpdateReq_Fixed) GetPercent() float64 { if x != nil { return x.Percent } return 0 } type UpdateReq_Custom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) BothType int32 `protobuf:"varint,2,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*UpdateReq_Cond `protobuf:"bytes,3,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *UpdateReq_BothAll `protobuf:"bytes,4,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 PreEvent int32 `protobuf:"varint,5,opt,name=pre_event,json=preEvent,proto3" json:"pre_event,omitempty"` //自定义事件前置事件(0-任意事件;1-安装;2-注册) } func (x *UpdateReq_Custom) Reset() { *x = UpdateReq_Custom{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Custom) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Custom) ProtoMessage() {} func (x *UpdateReq_Custom) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[185] 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 UpdateReq_Custom.ProtoReflect.Descriptor instead. func (*UpdateReq_Custom) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 27} } func (x *UpdateReq_Custom) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_Custom) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *UpdateReq_Custom) GetCond() []*UpdateReq_Cond { if x != nil { return x.Cond } return nil } func (x *UpdateReq_Custom) GetBothAll() *UpdateReq_BothAll { if x != nil { return x.BothAll } return nil } func (x *UpdateReq_Custom) GetPreEvent() int32 { if x != nil { return x.PreEvent } return 0 } type UpdateReq_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //对应字段名 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //对应字段值 } func (x *UpdateReq_KV) Reset() { *x = UpdateReq_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_KV) ProtoMessage() {} func (x *UpdateReq_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[186] 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 UpdateReq_KV.ProtoReflect.Descriptor instead. func (*UpdateReq_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 28} } func (x *UpdateReq_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *UpdateReq_KV) GetValue() string { if x != nil { return x.Value } return "" } type UpdateReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,3,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,6,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,7,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,8,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,9,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,10,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) Help int32 `protobuf:"varint,11,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,12,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,13,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,14,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,15,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,16,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,17,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,18,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 Odds int32 `protobuf:"varint,19,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,20,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 CampaignLimit int32 `protobuf:"varint,21,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,22,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,23,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,24,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 CollectRule *UpdateReq_CollectRule `protobuf:"bytes,25,opt,name=collect_rule,json=collectRule,proto3" json:"collect_rule,omitempty"` //收集规则 ExpiredDay string `protobuf:"bytes,26,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 OpenAdd *UpdateReq_OpenAdd `protobuf:"bytes,27,opt,name=open_add,json=openAdd,proto3" json:"open_add,omitempty"` //库存增加规则 RewardTask *UpdateReq_RewardTask `protobuf:"bytes,28,opt,name=reward_task,json=rewardTask,proto3" json:"reward_task,omitempty"` //解锁任务 } func (x *UpdateReq_Reward) Reset() { *x = UpdateReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Reward) ProtoMessage() {} func (x *UpdateReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[187] 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 UpdateReq_Reward.ProtoReflect.Descriptor instead. func (*UpdateReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 29} } func (x *UpdateReq_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *UpdateReq_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *UpdateReq_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *UpdateReq_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *UpdateReq_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *UpdateReq_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *UpdateReq_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *UpdateReq_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *UpdateReq_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *UpdateReq_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *UpdateReq_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *UpdateReq_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *UpdateReq_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *UpdateReq_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *UpdateReq_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *UpdateReq_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *UpdateReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *UpdateReq_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *UpdateReq_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *UpdateReq_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *UpdateReq_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *UpdateReq_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *UpdateReq_Reward) GetCollectRule() *UpdateReq_CollectRule { if x != nil { return x.CollectRule } return nil } func (x *UpdateReq_Reward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *UpdateReq_Reward) GetOpenAdd() *UpdateReq_OpenAdd { if x != nil { return x.OpenAdd } return nil } func (x *UpdateReq_Reward) GetRewardTask() *UpdateReq_RewardTask { if x != nil { return x.RewardTask } return nil } type UpdateReq_RewardTask struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) Event string `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,3,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,4,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TriggerType int32 `protobuf:"varint,6,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) EventType int32 `protobuf:"varint,7,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) OpenPush int32 `protobuf:"varint,8,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) } func (x *UpdateReq_RewardTask) Reset() { *x = UpdateReq_RewardTask{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_RewardTask) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_RewardTask) ProtoMessage() {} func (x *UpdateReq_RewardTask) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[188] 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 UpdateReq_RewardTask.ProtoReflect.Descriptor instead. func (*UpdateReq_RewardTask) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 30} } func (x *UpdateReq_RewardTask) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_RewardTask) GetEvent() string { if x != nil { return x.Event } return "" } func (x *UpdateReq_RewardTask) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *UpdateReq_RewardTask) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *UpdateReq_RewardTask) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *UpdateReq_RewardTask) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *UpdateReq_RewardTask) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *UpdateReq_RewardTask) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } type UpdateReq_OpenAdd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启动态库存规则(0-否,1-是) Start int64 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` //开始时间 End int64 `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"` //结束时间 DayNum int32 `protobuf:"varint,4,opt,name=day_num,json=dayNum,proto3" json:"day_num,omitempty"` //天数 DayAdd int32 `protobuf:"varint,5,opt,name=day_add,json=dayAdd,proto3" json:"day_add,omitempty"` //增加的库存量 } func (x *UpdateReq_OpenAdd) Reset() { *x = UpdateReq_OpenAdd{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_OpenAdd) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_OpenAdd) ProtoMessage() {} func (x *UpdateReq_OpenAdd) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[189] 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 UpdateReq_OpenAdd.ProtoReflect.Descriptor instead. func (*UpdateReq_OpenAdd) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 31} } func (x *UpdateReq_OpenAdd) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_OpenAdd) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *UpdateReq_OpenAdd) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *UpdateReq_OpenAdd) GetDayNum() int32 { if x != nil { return x.DayNum } return 0 } func (x *UpdateReq_OpenAdd) GetDayAdd() int32 { if x != nil { return x.DayAdd } return 0 } type UpdateReq_CollectRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启碎片规则(0-否,1-是) InitCollect int32 `protobuf:"varint,2,opt,name=init_collect,json=initCollect,proto3" json:"init_collect,omitempty"` //初始的最大可获得碎片数 SignDay int32 `protobuf:"varint,3,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddCollect int32 `protobuf:"varint,4,opt,name=add_collect,json=addCollect,proto3" json:"add_collect,omitempty"` //完成条件可获得最大碎片数 ResetType int32 `protobuf:"varint,5,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置碎片规则(1-不重置,2-获奖后重置) } func (x *UpdateReq_CollectRule) Reset() { *x = UpdateReq_CollectRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_CollectRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_CollectRule) ProtoMessage() {} func (x *UpdateReq_CollectRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[190] 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 UpdateReq_CollectRule.ProtoReflect.Descriptor instead. func (*UpdateReq_CollectRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 32} } func (x *UpdateReq_CollectRule) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_CollectRule) GetInitCollect() int32 { if x != nil { return x.InitCollect } return 0 } func (x *UpdateReq_CollectRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *UpdateReq_CollectRule) GetAddCollect() int32 { if x != nil { return x.AddCollect } return 0 } func (x *UpdateReq_CollectRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type UpdateReq_Rewards struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardGroup int32 `protobuf:"varint,1,opt,name=reward_group,json=rewardGroup,proto3" json:"reward_group,omitempty"` //奖品分组类型(1-常规奖品,2-用户类型奖品,3-语言奖品,4-语言+用户类型奖品,5-国家奖品) Normal []*UpdateReq_Reward `protobuf:"bytes,2,rep,name=normal,proto3" json:"normal,omitempty"` //常规奖品 UserLevel *UpdateReq_UserLevel `protobuf:"bytes,3,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` //用户类型奖品 Langs []*UpdateReq_Lang `protobuf:"bytes,4,rep,name=langs,proto3" json:"langs,omitempty"` //语言奖品 LangUserLevel []*UpdateReq_LangUserLevel `protobuf:"bytes,5,rep,name=lang_user_level,json=langUserLevel,proto3" json:"lang_user_level,omitempty"` //语言+用户类型奖品 Country *UpdateReq_Country `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` //国家奖品 } func (x *UpdateReq_Rewards) Reset() { *x = UpdateReq_Rewards{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Rewards) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Rewards) ProtoMessage() {} func (x *UpdateReq_Rewards) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[191] 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 UpdateReq_Rewards.ProtoReflect.Descriptor instead. func (*UpdateReq_Rewards) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 33} } func (x *UpdateReq_Rewards) GetRewardGroup() int32 { if x != nil { return x.RewardGroup } return 0 } func (x *UpdateReq_Rewards) GetNormal() []*UpdateReq_Reward { if x != nil { return x.Normal } return nil } func (x *UpdateReq_Rewards) GetUserLevel() *UpdateReq_UserLevel { if x != nil { return x.UserLevel } return nil } func (x *UpdateReq_Rewards) GetLangs() []*UpdateReq_Lang { if x != nil { return x.Langs } return nil } func (x *UpdateReq_Rewards) GetLangUserLevel() []*UpdateReq_LangUserLevel { if x != nil { return x.LangUserLevel } return nil } func (x *UpdateReq_Rewards) GetCountry() *UpdateReq_Country { if x != nil { return x.Country } return nil } type UpdateReq_UserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultLevelId int64 `protobuf:"varint,1,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id LevelList []*UpdateReq_UserLevelOne `protobuf:"bytes,2,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *UpdateReq_UserLevel) Reset() { *x = UpdateReq_UserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_UserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_UserLevel) ProtoMessage() {} func (x *UpdateReq_UserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[192] 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 UpdateReq_UserLevel.ProtoReflect.Descriptor instead. func (*UpdateReq_UserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 34} } func (x *UpdateReq_UserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *UpdateReq_UserLevel) GetLevelList() []*UpdateReq_UserLevelOne { if x != nil { return x.LevelList } return nil } type UpdateReq_UserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LevelId int64 `protobuf:"varint,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` //用户类型id Rewards []*UpdateReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *UpdateReq_UserLevelOne) Reset() { *x = UpdateReq_UserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_UserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_UserLevelOne) ProtoMessage() {} func (x *UpdateReq_UserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[193] 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 UpdateReq_UserLevelOne.ProtoReflect.Descriptor instead. func (*UpdateReq_UserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 35} } func (x *UpdateReq_UserLevelOne) GetLevelId() int64 { if x != nil { return x.LevelId } return 0 } func (x *UpdateReq_UserLevelOne) GetRewards() []*UpdateReq_Reward { if x != nil { return x.Rewards } return nil } type UpdateReq_Lang struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 Rewards []*UpdateReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *UpdateReq_Lang) Reset() { *x = UpdateReq_Lang{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Lang) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Lang) ProtoMessage() {} func (x *UpdateReq_Lang) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[194] 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 UpdateReq_Lang.ProtoReflect.Descriptor instead. func (*UpdateReq_Lang) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 36} } func (x *UpdateReq_Lang) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *UpdateReq_Lang) GetRewards() []*UpdateReq_Reward { if x != nil { return x.Rewards } return nil } type UpdateReq_LangUserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 DefaultLevelId int64 `protobuf:"varint,2,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id LevelList []*UpdateReq_UserLevelOne `protobuf:"bytes,3,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *UpdateReq_LangUserLevel) Reset() { *x = UpdateReq_LangUserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_LangUserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_LangUserLevel) ProtoMessage() {} func (x *UpdateReq_LangUserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[195] 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 UpdateReq_LangUserLevel.ProtoReflect.Descriptor instead. func (*UpdateReq_LangUserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 37} } func (x *UpdateReq_LangUserLevel) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *UpdateReq_LangUserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *UpdateReq_LangUserLevel) GetLevelList() []*UpdateReq_UserLevelOne { if x != nil { return x.LevelList } return nil } type UpdateReq_Country struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultCountryMark string `protobuf:"bytes,1,opt,name=default_country_mark,json=defaultCountryMark,proto3" json:"default_country_mark,omitempty"` //默认国家 CountryList []*UpdateReq_CountryOne `protobuf:"bytes,2,rep,name=country_list,json=countryList,proto3" json:"country_list,omitempty"` //国家的奖品 } func (x *UpdateReq_Country) Reset() { *x = UpdateReq_Country{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Country) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Country) ProtoMessage() {} func (x *UpdateReq_Country) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[196] 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 UpdateReq_Country.ProtoReflect.Descriptor instead. func (*UpdateReq_Country) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 38} } func (x *UpdateReq_Country) GetDefaultCountryMark() string { if x != nil { return x.DefaultCountryMark } return "" } func (x *UpdateReq_Country) GetCountryList() []*UpdateReq_CountryOne { if x != nil { return x.CountryList } return nil } type UpdateReq_CountryOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CountryMark string `protobuf:"bytes,1,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 Rewards []*UpdateReq_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *UpdateReq_CountryOne) Reset() { *x = UpdateReq_CountryOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_CountryOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_CountryOne) ProtoMessage() {} func (x *UpdateReq_CountryOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[197] 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 UpdateReq_CountryOne.ProtoReflect.Descriptor instead. func (*UpdateReq_CountryOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 39} } func (x *UpdateReq_CountryOne) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *UpdateReq_CountryOne) GetRewards() []*UpdateReq_Reward { if x != nil { return x.Rewards } return nil } type UpdateReq_QaQuestion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //题目id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //题目 Score int32 `protobuf:"varint,3,opt,name=score,proto3" json:"score,omitempty"` //得分 Options []*UpdateReq_QaOption `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` //选项 } func (x *UpdateReq_QaQuestion) Reset() { *x = UpdateReq_QaQuestion{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_QaQuestion) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_QaQuestion) ProtoMessage() {} func (x *UpdateReq_QaQuestion) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[198] 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 UpdateReq_QaQuestion.ProtoReflect.Descriptor instead. func (*UpdateReq_QaQuestion) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 40} } func (x *UpdateReq_QaQuestion) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_QaQuestion) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq_QaQuestion) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *UpdateReq_QaQuestion) GetOptions() []*UpdateReq_QaOption { if x != nil { return x.Options } return nil } type UpdateReq_QaOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //答案id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //答案内容 IsRight int32 `protobuf:"varint,3,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确答案(1-是,0-否) } func (x *UpdateReq_QaOption) Reset() { *x = UpdateReq_QaOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_QaOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_QaOption) ProtoMessage() {} func (x *UpdateReq_QaOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[199] 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 UpdateReq_QaOption.ProtoReflect.Descriptor instead. func (*UpdateReq_QaOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 41} } func (x *UpdateReq_QaOption) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_QaOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq_QaOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } type UpdateReq_QuizOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 IsRight int32 `protobuf:"varint,4,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确选项(1-是,0-否) } func (x *UpdateReq_QuizOption) Reset() { *x = UpdateReq_QuizOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_QuizOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_QuizOption) ProtoMessage() {} func (x *UpdateReq_QuizOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[200] 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 UpdateReq_QuizOption.ProtoReflect.Descriptor instead. func (*UpdateReq_QuizOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 42} } func (x *UpdateReq_QuizOption) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_QuizOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq_QuizOption) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *UpdateReq_QuizOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } type UpdateReq_Quiz struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的答题机会次数 RewardRule int32 `protobuf:"varint,4,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //奖励规则(1-投票结果排名,2-自定义竞猜结果) OpenPrize int64 `protobuf:"varint,5,opt,name=open_prize,json=openPrize,proto3" json:"open_prize,omitempty"` //开奖时间 Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` //选项标题 Options []*UpdateReq_QuizOption `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` //有奖竞猜选项 } func (x *UpdateReq_Quiz) Reset() { *x = UpdateReq_Quiz{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Quiz) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Quiz) ProtoMessage() {} func (x *UpdateReq_Quiz) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[201] 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 UpdateReq_Quiz.ProtoReflect.Descriptor instead. func (*UpdateReq_Quiz) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 43} } func (x *UpdateReq_Quiz) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_Quiz) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Quiz) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_Quiz) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *UpdateReq_Quiz) GetOpenPrize() int64 { if x != nil { return x.OpenPrize } return 0 } func (x *UpdateReq_Quiz) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateReq_Quiz) GetOptions() []*UpdateReq_QuizOption { if x != nil { return x.Options } return nil } type UpdateReq_QuestionAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标条件后可获取的答题次数 InitChance int32 `protobuf:"varint,3,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 QuestionAskTime int32 `protobuf:"varint,4,opt,name=question_ask_time,json=questionAskTime,proto3" json:"question_ask_time,omitempty"` //答题时间限制(单位:S,如:1 就是1秒) Questions []*UpdateReq_QaQuestion `protobuf:"bytes,5,rep,name=questions,proto3" json:"questions,omitempty"` //题目 GroupHashId string `protobuf:"bytes,6,opt,name=group_hash_id,json=groupHashId,proto3" json:"group_hash_id,omitempty"` //题库对外id QaNum int32 `protobuf:"varint,7,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 DayChance int32 `protobuf:"varint,8,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日签到获得的答题数 OpenGuide int32 `protobuf:"varint,9,opt,name=open_guide,json=openGuide,proto3" json:"open_guide,omitempty"` //是否开启引导(0-否,1-是) GuideGroupHashId string `protobuf:"bytes,10,opt,name=guide_group_hash_id,json=guideGroupHashId,proto3" json:"guide_group_hash_id,omitempty"` //引导组hash_id } func (x *UpdateReq_QuestionAnswer) Reset() { *x = UpdateReq_QuestionAnswer{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_QuestionAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_QuestionAnswer) ProtoMessage() {} func (x *UpdateReq_QuestionAnswer) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[202] 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 UpdateReq_QuestionAnswer.ProtoReflect.Descriptor instead. func (*UpdateReq_QuestionAnswer) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 44} } func (x *UpdateReq_QuestionAnswer) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_QuestionAnswer) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_QuestionAnswer) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_QuestionAnswer) GetQuestionAskTime() int32 { if x != nil { return x.QuestionAskTime } return 0 } func (x *UpdateReq_QuestionAnswer) GetQuestions() []*UpdateReq_QaQuestion { if x != nil { return x.Questions } return nil } func (x *UpdateReq_QuestionAnswer) GetGroupHashId() string { if x != nil { return x.GroupHashId } return "" } func (x *UpdateReq_QuestionAnswer) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *UpdateReq_QuestionAnswer) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *UpdateReq_QuestionAnswer) GetOpenGuide() int32 { if x != nil { return x.OpenGuide } return 0 } func (x *UpdateReq_QuestionAnswer) GetGuideGroupHashId() string { if x != nil { return x.GuideGroupHashId } return "" } type UpdateReq_LotteryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的抽奖机会次数 DayChance int32 `protobuf:"varint,4,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *UpdateReq_LotteryConfig) Reset() { *x = UpdateReq_LotteryConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_LotteryConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_LotteryConfig) ProtoMessage() {} func (x *UpdateReq_LotteryConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[203] 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 UpdateReq_LotteryConfig.ProtoReflect.Descriptor instead. func (*UpdateReq_LotteryConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 45} } func (x *UpdateReq_LotteryConfig) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_LotteryConfig) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_LotteryConfig) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *UpdateReq_LotteryConfig) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type UpdateReq_InviteConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardLimit int32 `protobuf:"varint,1,opt,name=reward_limit,json=rewardLimit,proto3" json:"reward_limit,omitempty"` //活动总奖励上限 RewardRule int32 `protobuf:"varint,2,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //用户奖励规则(1-阶梯,2-非阶梯) InviteLimit int32 `protobuf:"varint,3,opt,name=invite_limit,json=inviteLimit,proto3" json:"invite_limit,omitempty"` //邀请超过多少人不能再获得奖励 NewcomerCond int32 `protobuf:"varint,4,opt,name=newcomer_cond,json=newcomerCond,proto3" json:"newcomer_cond,omitempty"` //新人条件(1-新安装,2-助力成功,3-新安装且助力成功) StepLoop int32 `protobuf:"varint,5,opt,name=step_loop,json=stepLoop,proto3" json:"step_loop,omitempty"` //阶梯是否支持循环(0-不支持,1-支持) } func (x *UpdateReq_InviteConfig) Reset() { *x = UpdateReq_InviteConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_InviteConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_InviteConfig) ProtoMessage() {} func (x *UpdateReq_InviteConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[204] 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 UpdateReq_InviteConfig.ProtoReflect.Descriptor instead. func (*UpdateReq_InviteConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 46} } func (x *UpdateReq_InviteConfig) GetRewardLimit() int32 { if x != nil { return x.RewardLimit } return 0 } func (x *UpdateReq_InviteConfig) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *UpdateReq_InviteConfig) GetInviteLimit() int32 { if x != nil { return x.InviteLimit } return 0 } func (x *UpdateReq_InviteConfig) GetNewcomerCond() int32 { if x != nil { return x.NewcomerCond } return 0 } func (x *UpdateReq_InviteConfig) GetStepLoop() int32 { if x != nil { return x.StepLoop } return 0 } type UpdateReq_Sign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SignType int32 `protobuf:"varint,1,opt,name=sign_type,json=signType,proto3" json:"sign_type,omitempty"` //签到类型(1-普通签到,2-阶梯签到) IsContinue int32 `protobuf:"varint,2,opt,name=is_continue,json=isContinue,proto3" json:"is_continue,omitempty"` //是否连续签到(1-是,0-否) HasCard int32 `protobuf:"varint,3,opt,name=has_card,json=hasCard,proto3" json:"has_card,omitempty"` //是否开启签到卡(1-开启,0-不开启) InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //邀请好友数可获得的1张签到卡 LimitCardNum int32 `protobuf:"varint,5,opt,name=limit_card_num,json=limitCardNum,proto3" json:"limit_card_num,omitempty"` //可获得幸运卡的最大张数 IsLoop int32 `protobuf:"varint,6,opt,name=is_loop,json=isLoop,proto3" json:"is_loop,omitempty"` //是否支持循环(0-否,1-是) SignCycle int32 `protobuf:"varint,7,opt,name=sign_cycle,json=signCycle,proto3" json:"sign_cycle,omitempty"` //签到周期 RecycleType int32 `protobuf:"varint,8,opt,name=recycle_type,json=recycleType,proto3" json:"recycle_type,omitempty"` //重新签到模式(1-断签重签,2-周期重签) Color string `protobuf:"bytes,9,opt,name=color,proto3" json:"color,omitempty"` //签到主题颜色 } func (x *UpdateReq_Sign) Reset() { *x = UpdateReq_Sign{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Sign) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Sign) ProtoMessage() {} func (x *UpdateReq_Sign) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[205] 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 UpdateReq_Sign.ProtoReflect.Descriptor instead. func (*UpdateReq_Sign) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 47} } func (x *UpdateReq_Sign) GetSignType() int32 { if x != nil { return x.SignType } return 0 } func (x *UpdateReq_Sign) GetIsContinue() int32 { if x != nil { return x.IsContinue } return 0 } func (x *UpdateReq_Sign) GetHasCard() int32 { if x != nil { return x.HasCard } return 0 } func (x *UpdateReq_Sign) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *UpdateReq_Sign) GetLimitCardNum() int32 { if x != nil { return x.LimitCardNum } return 0 } func (x *UpdateReq_Sign) GetIsLoop() int32 { if x != nil { return x.IsLoop } return 0 } func (x *UpdateReq_Sign) GetSignCycle() int32 { if x != nil { return x.SignCycle } return 0 } func (x *UpdateReq_Sign) GetRecycleType() int32 { if x != nil { return x.RecycleType } return 0 } func (x *UpdateReq_Sign) GetColor() string { if x != nil { return x.Color } return "" } type UpdateReq_Dice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始骰子数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的骰子数 FixDice int32 `protobuf:"varint,3,opt,name=fix_dice,json=fixDice,proto3" json:"fix_dice,omitempty"` //开启固定骰子(0-不开启,1-开启) FixDiceTarget int32 `protobuf:"varint,4,opt,name=fix_dice_target,json=fixDiceTarget,proto3" json:"fix_dice_target,omitempty"` //获得固定骰子需要邀请的人数 FixDiceLimit int32 `protobuf:"varint,5,opt,name=fix_dice_limit,json=fixDiceLimit,proto3" json:"fix_dice_limit,omitempty"` //固定骰子限制获取数 CustomDice string `protobuf:"bytes,6,opt,name=custom_dice,json=customDice,proto3" json:"custom_dice,omitempty"` //自定义骰子图片 OpenMapPoint int32 `protobuf:"varint,7,opt,name=open_map_point,json=openMapPoint,proto3" json:"open_map_point,omitempty"` //开启自定义底座(0-不开启,1-开启) MapPoint *UpdateReq_MapPoint `protobuf:"bytes,8,opt,name=map_point,json=mapPoint,proto3" json:"map_point,omitempty"` //自定义底座数据 AwardType int32 `protobuf:"varint,9,opt,name=award_type,json=awardType,proto3" json:"award_type,omitempty"` //奖品碎片收集方式(1-随机收集,2-概率收集) OpenInvite int32 `protobuf:"varint,10,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请挂件(0-关闭,1-开启) RollAgain int32 `protobuf:"varint,11,opt,name=roll_again,json=rollAgain,proto3" json:"roll_again,omitempty"` //开启再摇一次(0-关闭,1-开启) FixDiceCond int32 `protobuf:"varint,12,opt,name=fix_dice_cond,json=fixDiceCond,proto3" json:"fix_dice_cond,omitempty"` //邀请事件(1-安装,2-注册) Odds int32 `protobuf:"varint,13,opt,name=odds,proto3" json:"odds,omitempty"` //概率收集方式的中奖概率 PlayImg string `protobuf:"bytes,14,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //play按钮图 CloudImg string `protobuf:"bytes,15,opt,name=cloud_img,json=cloudImg,proto3" json:"cloud_img,omitempty"` //云朵图 } func (x *UpdateReq_Dice) Reset() { *x = UpdateReq_Dice{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Dice) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Dice) ProtoMessage() {} func (x *UpdateReq_Dice) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[206] 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 UpdateReq_Dice.ProtoReflect.Descriptor instead. func (*UpdateReq_Dice) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 48} } func (x *UpdateReq_Dice) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Dice) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *UpdateReq_Dice) GetFixDice() int32 { if x != nil { return x.FixDice } return 0 } func (x *UpdateReq_Dice) GetFixDiceTarget() int32 { if x != nil { return x.FixDiceTarget } return 0 } func (x *UpdateReq_Dice) GetFixDiceLimit() int32 { if x != nil { return x.FixDiceLimit } return 0 } func (x *UpdateReq_Dice) GetCustomDice() string { if x != nil { return x.CustomDice } return "" } func (x *UpdateReq_Dice) GetOpenMapPoint() int32 { if x != nil { return x.OpenMapPoint } return 0 } func (x *UpdateReq_Dice) GetMapPoint() *UpdateReq_MapPoint { if x != nil { return x.MapPoint } return nil } func (x *UpdateReq_Dice) GetAwardType() int32 { if x != nil { return x.AwardType } return 0 } func (x *UpdateReq_Dice) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *UpdateReq_Dice) GetRollAgain() int32 { if x != nil { return x.RollAgain } return 0 } func (x *UpdateReq_Dice) GetFixDiceCond() int32 { if x != nil { return x.FixDiceCond } return 0 } func (x *UpdateReq_Dice) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *UpdateReq_Dice) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *UpdateReq_Dice) GetCloudImg() string { if x != nil { return x.CloudImg } return "" } type UpdateReq_MapPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Blank string `protobuf:"bytes,1,opt,name=blank,proto3" json:"blank,omitempty"` //空白底座 Again string `protobuf:"bytes,2,opt,name=again,proto3" json:"again,omitempty"` //再摇一次底座 Normal string `protobuf:"bytes,3,opt,name=normal,proto3" json:"normal,omitempty"` //普通奖品底座 Supper string `protobuf:"bytes,4,opt,name=supper,proto3" json:"supper,omitempty"` //超级大奖底座 } func (x *UpdateReq_MapPoint) Reset() { *x = UpdateReq_MapPoint{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_MapPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_MapPoint) ProtoMessage() {} func (x *UpdateReq_MapPoint) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[207] 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 UpdateReq_MapPoint.ProtoReflect.Descriptor instead. func (*UpdateReq_MapPoint) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 49} } func (x *UpdateReq_MapPoint) GetBlank() string { if x != nil { return x.Blank } return "" } func (x *UpdateReq_MapPoint) GetAgain() string { if x != nil { return x.Again } return "" } func (x *UpdateReq_MapPoint) GetNormal() string { if x != nil { return x.Normal } return "" } func (x *UpdateReq_MapPoint) GetSupper() string { if x != nil { return x.Supper } return "" } type UpdateReq_Grow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AutoHour int32 `protobuf:"varint,1,opt,name=auto_hour,json=autoHour,proto3" json:"auto_hour,omitempty"` //自动生产成长道具小时数 AutoNum int32 `protobuf:"varint,2,opt,name=auto_num,json=autoNum,proto3" json:"auto_num,omitempty"` //生产的成长道具数 GrowNum int32 `protobuf:"varint,3,opt,name=grow_num,json=growNum,proto3" json:"grow_num,omitempty"` //邀请可获得的成长道具数量 TargetNum int32 `protobuf:"varint,4,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //获得成长道具需要邀请的人数 Revive int32 `protobuf:"varint,5,opt,name=revive,proto3" json:"revive,omitempty"` //是否支持复活(0-否,1-是) ReviveNum int32 `protobuf:"varint,6,opt,name=revive_num,json=reviveNum,proto3" json:"revive_num,omitempty"` //复活需要邀请的好友数 DieHour int32 `protobuf:"varint,7,opt,name=die_hour,json=dieHour,proto3" json:"die_hour,omitempty"` //未获得成长道具导致的死亡时间 Steps []*UpdateReq_GrowStep `protobuf:"bytes,8,rep,name=steps,proto3" json:"steps,omitempty"` //成长阶段 InitNum int32 `protobuf:"varint,9,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始成长道具数量 } func (x *UpdateReq_Grow) Reset() { *x = UpdateReq_Grow{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Grow) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Grow) ProtoMessage() {} func (x *UpdateReq_Grow) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[208] 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 UpdateReq_Grow.ProtoReflect.Descriptor instead. func (*UpdateReq_Grow) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 50} } func (x *UpdateReq_Grow) GetAutoHour() int32 { if x != nil { return x.AutoHour } return 0 } func (x *UpdateReq_Grow) GetAutoNum() int32 { if x != nil { return x.AutoNum } return 0 } func (x *UpdateReq_Grow) GetGrowNum() int32 { if x != nil { return x.GrowNum } return 0 } func (x *UpdateReq_Grow) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *UpdateReq_Grow) GetRevive() int32 { if x != nil { return x.Revive } return 0 } func (x *UpdateReq_Grow) GetReviveNum() int32 { if x != nil { return x.ReviveNum } return 0 } func (x *UpdateReq_Grow) GetDieHour() int32 { if x != nil { return x.DieHour } return 0 } func (x *UpdateReq_Grow) GetSteps() []*UpdateReq_GrowStep { if x != nil { return x.Steps } return nil } func (x *UpdateReq_Grow) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } type UpdateReq_GrowStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` //需要的养成道具数量 } func (x *UpdateReq_GrowStep) Reset() { *x = UpdateReq_GrowStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_GrowStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_GrowStep) ProtoMessage() {} func (x *UpdateReq_GrowStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[209] 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 UpdateReq_GrowStep.ProtoReflect.Descriptor instead. func (*UpdateReq_GrowStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 51} } func (x *UpdateReq_GrowStep) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *UpdateReq_GrowStep) GetNum() int32 { if x != nil { return x.Num } return 0 } type UpdateReq_Ballot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽签数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽签数 } func (x *UpdateReq_Ballot) Reset() { *x = UpdateReq_Ballot{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Ballot) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Ballot) ProtoMessage() {} func (x *UpdateReq_Ballot) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[210] 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 UpdateReq_Ballot.ProtoReflect.Descriptor instead. func (*UpdateReq_Ballot) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 52} } func (x *UpdateReq_Ballot) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Ballot) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type UpdateReq_Chop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ShowBar int32 `protobuf:"varint,1,opt,name=show_bar,json=showBar,proto3" json:"show_bar,omitempty"` //是否展示进度条(0-否,1-是) } func (x *UpdateReq_Chop) Reset() { *x = UpdateReq_Chop{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Chop) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Chop) ProtoMessage() {} func (x *UpdateReq_Chop) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[211] 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 UpdateReq_Chop.ProtoReflect.Descriptor instead. func (*UpdateReq_Chop) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 53} } func (x *UpdateReq_Chop) GetShowBar() int32 { if x != nil { return x.ShowBar } return 0 } type UpdateReq_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ExpiredDay int32 `protobuf:"varint,1,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price int32 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,3,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 Currency int32 `protobuf:"varint,4,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 LoopNum int32 `protobuf:"varint,5,opt,name=loop_num,json=loopNum,proto3" json:"loop_num,omitempty"` //支持循环次数 } func (x *UpdateReq_Cash) Reset() { *x = UpdateReq_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Cash) ProtoMessage() {} func (x *UpdateReq_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[212] 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 UpdateReq_Cash.ProtoReflect.Descriptor instead. func (*UpdateReq_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 54} } func (x *UpdateReq_Cash) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *UpdateReq_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *UpdateReq_Cash) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *UpdateReq_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } func (x *UpdateReq_Cash) GetLoopNum() int32 { if x != nil { return x.LoopNum } return 0 } type UpdateReq_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 CardImg string `protobuf:"bytes,2,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 DayChance int32 `protobuf:"varint,3,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *UpdateReq_Flip) Reset() { *x = UpdateReq_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Flip) ProtoMessage() {} func (x *UpdateReq_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[213] 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 UpdateReq_Flip.ProtoReflect.Descriptor instead. func (*UpdateReq_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 55} } func (x *UpdateReq_Flip) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *UpdateReq_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } func (x *UpdateReq_Flip) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type UpdateReq_Keep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Collect int32 `protobuf:"varint,1,opt,name=collect,proto3" json:"collect,omitempty"` //获得最终奖品需要的总收集数 CollectSecond int32 `protobuf:"varint,2,opt,name=collect_second,json=collectSecond,proto3" json:"collect_second,omitempty"` //单个收集需要的二级资源数 OpenInvite int32 `protobuf:"varint,3,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请(0-关闭,1-开启) Invite *UpdateReq_Invite `protobuf:"bytes,4,opt,name=invite,proto3" json:"invite,omitempty"` //拉新配置 InitGet int32 `protobuf:"varint,5,opt,name=init_get,json=initGet,proto3" json:"init_get,omitempty"` //初始道具数 SecGet float64 `protobuf:"fixed64,6,opt,name=sec_get,json=secGet,proto3" json:"sec_get,omitempty"` //每秒获得道具数 FeedNum int32 `protobuf:"varint,7,opt,name=feed_num,json=feedNum,proto3" json:"feed_num,omitempty"` //每次使用道具数 FeedCycle int32 `protobuf:"varint,8,opt,name=feed_cycle,json=feedCycle,proto3" json:"feed_cycle,omitempty"` //喂养周期(单位:天) MaxFeed int32 `protobuf:"varint,9,opt,name=max_feed,json=maxFeed,proto3" json:"max_feed,omitempty"` //最大可领养次数 FeedGet int32 `protobuf:"varint,10,opt,name=feed_get,json=feedGet,proto3" json:"feed_get,omitempty"` //喂养能得到的道具数 FeedGetNum int32 `protobuf:"varint,11,opt,name=feed_get_num,json=feedGetNum,proto3" json:"feed_get_num,omitempty"` //得到喂养道具需要的喂养次数 TalkText []*UpdateReq_Talk `protobuf:"bytes,12,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Steps []*UpdateReq_KeepStep `protobuf:"bytes,13,rep,name=steps,proto3" json:"steps,omitempty"` //养成阶梯 SecGetDayLimit float64 `protobuf:"fixed64,14,opt,name=sec_get_day_limit,json=secGetDayLimit,proto3" json:"sec_get_day_limit,omitempty"` //每秒获得道具每日上限 MachineType int32 `protobuf:"varint,15,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` //狗粮机类型(1-在线收益,2-离线收益) OfflineMin int32 `protobuf:"varint,16,opt,name=offline_min,json=offlineMin,proto3" json:"offline_min,omitempty"` //离线分钟时长 OfflineGet int32 `protobuf:"varint,17,opt,name=offline_get,json=offlineGet,proto3" json:"offline_get,omitempty"` //离线收益最大值 OfflineLimit int32 `protobuf:"varint,18,opt,name=offline_limit,json=offlineLimit,proto3" json:"offline_limit,omitempty"` //离线收益最大领取次数 } func (x *UpdateReq_Keep) Reset() { *x = UpdateReq_Keep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Keep) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Keep) ProtoMessage() {} func (x *UpdateReq_Keep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[214] 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 UpdateReq_Keep.ProtoReflect.Descriptor instead. func (*UpdateReq_Keep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 56} } func (x *UpdateReq_Keep) GetCollect() int32 { if x != nil { return x.Collect } return 0 } func (x *UpdateReq_Keep) GetCollectSecond() int32 { if x != nil { return x.CollectSecond } return 0 } func (x *UpdateReq_Keep) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *UpdateReq_Keep) GetInvite() *UpdateReq_Invite { if x != nil { return x.Invite } return nil } func (x *UpdateReq_Keep) GetInitGet() int32 { if x != nil { return x.InitGet } return 0 } func (x *UpdateReq_Keep) GetSecGet() float64 { if x != nil { return x.SecGet } return 0 } func (x *UpdateReq_Keep) GetFeedNum() int32 { if x != nil { return x.FeedNum } return 0 } func (x *UpdateReq_Keep) GetFeedCycle() int32 { if x != nil { return x.FeedCycle } return 0 } func (x *UpdateReq_Keep) GetMaxFeed() int32 { if x != nil { return x.MaxFeed } return 0 } func (x *UpdateReq_Keep) GetFeedGet() int32 { if x != nil { return x.FeedGet } return 0 } func (x *UpdateReq_Keep) GetFeedGetNum() int32 { if x != nil { return x.FeedGetNum } return 0 } func (x *UpdateReq_Keep) GetTalkText() []*UpdateReq_Talk { if x != nil { return x.TalkText } return nil } func (x *UpdateReq_Keep) GetSteps() []*UpdateReq_KeepStep { if x != nil { return x.Steps } return nil } func (x *UpdateReq_Keep) GetSecGetDayLimit() float64 { if x != nil { return x.SecGetDayLimit } return 0 } func (x *UpdateReq_Keep) GetMachineType() int32 { if x != nil { return x.MachineType } return 0 } func (x *UpdateReq_Keep) GetOfflineMin() int32 { if x != nil { return x.OfflineMin } return 0 } func (x *UpdateReq_Keep) GetOfflineGet() int32 { if x != nil { return x.OfflineGet } return 0 } func (x *UpdateReq_Keep) GetOfflineLimit() int32 { if x != nil { return x.OfflineLimit } return 0 } type UpdateReq_Invite struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InviteType int32 `protobuf:"varint,1,opt,name=invite_type,json=inviteType,proto3" json:"invite_type,omitempty"` //邀请类型(1-下载,2-安装) InviteGet int32 `protobuf:"varint,2,opt,name=invite_get,json=inviteGet,proto3" json:"invite_get,omitempty"` //邀请可获得的道具数量 RewardSelected int32 `protobuf:"varint,3,opt,name=reward_selected,json=rewardSelected,proto3" json:"reward_selected,omitempty"` //选择礼品可获得的道具数 FeedThird int32 `protobuf:"varint,4,opt,name=feed_third,json=feedThird,proto3" json:"feed_third,omitempty"` //喂养3次可获得的道具数 DayFirstInvite int32 `protobuf:"varint,5,opt,name=day_first_invite,json=dayFirstInvite,proto3" json:"day_first_invite,omitempty"` //是否开启每日首次拉新(0-否,1-是) DayFirstGet int32 `protobuf:"varint,6,opt,name=day_first_get,json=dayFirstGet,proto3" json:"day_first_get,omitempty"` //每日首次拉新可获得的道具数 DayFirstSelected int32 `protobuf:"varint,7,opt,name=day_first_selected,json=dayFirstSelected,proto3" json:"day_first_selected,omitempty"` //每日首日选择礼物可获得的道具数 DayFirstThird int32 `protobuf:"varint,8,opt,name=day_first_third,json=dayFirstThird,proto3" json:"day_first_third,omitempty"` //每日首次喂养三次可获得的道具数 InviteMaxGet int32 `protobuf:"varint,9,opt,name=invite_max_get,json=inviteMaxGet,proto3" json:"invite_max_get,omitempty"` //邀请人可获得的最大道具数 } func (x *UpdateReq_Invite) Reset() { *x = UpdateReq_Invite{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Invite) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Invite) ProtoMessage() {} func (x *UpdateReq_Invite) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[215] 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 UpdateReq_Invite.ProtoReflect.Descriptor instead. func (*UpdateReq_Invite) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 57} } func (x *UpdateReq_Invite) GetInviteType() int32 { if x != nil { return x.InviteType } return 0 } func (x *UpdateReq_Invite) GetInviteGet() int32 { if x != nil { return x.InviteGet } return 0 } func (x *UpdateReq_Invite) GetRewardSelected() int32 { if x != nil { return x.RewardSelected } return 0 } func (x *UpdateReq_Invite) GetFeedThird() int32 { if x != nil { return x.FeedThird } return 0 } func (x *UpdateReq_Invite) GetDayFirstInvite() int32 { if x != nil { return x.DayFirstInvite } return 0 } func (x *UpdateReq_Invite) GetDayFirstGet() int32 { if x != nil { return x.DayFirstGet } return 0 } func (x *UpdateReq_Invite) GetDayFirstSelected() int32 { if x != nil { return x.DayFirstSelected } return 0 } func (x *UpdateReq_Invite) GetDayFirstThird() int32 { if x != nil { return x.DayFirstThird } return 0 } func (x *UpdateReq_Invite) GetInviteMaxGet() int32 { if x != nil { return x.InviteMaxGet } return 0 } type UpdateReq_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *UpdateReq_Talk) Reset() { *x = UpdateReq_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Talk) ProtoMessage() {} func (x *UpdateReq_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[216] 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 UpdateReq_Talk.ProtoReflect.Descriptor instead. func (*UpdateReq_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 58} } func (x *UpdateReq_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *UpdateReq_Talk) GetContent() string { if x != nil { return x.Content } return "" } type UpdateReq_KeepStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"` //阶段 Percent int32 `protobuf:"varint,2,opt,name=percent,proto3" json:"percent,omitempty"` //对应的进度条数值 RewardType int32 `protobuf:"varint,3,opt,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"` //奖品类型(1-成长道具,2-奖品) Reward *UpdateReq_Reward `protobuf:"bytes,4,opt,name=reward,proto3" json:"reward,omitempty"` //奖品数据时 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //发放道具数量 } func (x *UpdateReq_KeepStep) Reset() { *x = UpdateReq_KeepStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_KeepStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_KeepStep) ProtoMessage() {} func (x *UpdateReq_KeepStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[217] 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 UpdateReq_KeepStep.ProtoReflect.Descriptor instead. func (*UpdateReq_KeepStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 59} } func (x *UpdateReq_KeepStep) GetStep() int32 { if x != nil { return x.Step } return 0 } func (x *UpdateReq_KeepStep) GetPercent() int32 { if x != nil { return x.Percent } return 0 } func (x *UpdateReq_KeepStep) GetRewardType() int32 { if x != nil { return x.RewardType } return 0 } func (x *UpdateReq_KeepStep) GetReward() *UpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *UpdateReq_KeepStep) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } type UpdateReq_Push struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskReset *UpdateReq_PushOne `protobuf:"bytes,1,opt,name=task_reset,json=taskReset,proto3" json:"task_reset,omitempty"` //重制提醒 Active *UpdateReq_PushOne `protobuf:"bytes,2,opt,name=active,proto3" json:"active,omitempty"` //活跃提醒 Offline *UpdateReq_PushOne `protobuf:"bytes,3,opt,name=offline,proto3" json:"offline,omitempty"` //离线提醒 Visit *UpdateReq_PushOne `protobuf:"bytes,4,opt,name=visit,proto3" json:"visit,omitempty"` //访问提醒 } func (x *UpdateReq_Push) Reset() { *x = UpdateReq_Push{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Push) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Push) ProtoMessage() {} func (x *UpdateReq_Push) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[218] 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 UpdateReq_Push.ProtoReflect.Descriptor instead. func (*UpdateReq_Push) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 60} } func (x *UpdateReq_Push) GetTaskReset() *UpdateReq_PushOne { if x != nil { return x.TaskReset } return nil } func (x *UpdateReq_Push) GetActive() *UpdateReq_PushOne { if x != nil { return x.Active } return nil } func (x *UpdateReq_Push) GetOffline() *UpdateReq_PushOne { if x != nil { return x.Offline } return nil } func (x *UpdateReq_Push) GetVisit() *UpdateReq_PushOne { if x != nil { return x.Visit } return nil } type UpdateReq_PushOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 PushCond []*UpdateReq_PushCond `protobuf:"bytes,2,rep,name=push_cond,json=pushCond,proto3" json:"push_cond,omitempty"` //条件内容 } func (x *UpdateReq_PushOne) Reset() { *x = UpdateReq_PushOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_PushOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_PushOne) ProtoMessage() {} func (x *UpdateReq_PushOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[219] 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 UpdateReq_PushOne.ProtoReflect.Descriptor instead. func (*UpdateReq_PushOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 61} } func (x *UpdateReq_PushOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *UpdateReq_PushOne) GetPushCond() []*UpdateReq_PushCond { if x != nil { return x.PushCond } return nil } type UpdateReq_PushCond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mark string `protobuf:"bytes,1,opt,name=mark,proto3" json:"mark,omitempty"` //条件标识 Val string `protobuf:"bytes,2,opt,name=val,proto3" json:"val,omitempty"` //标识值 } func (x *UpdateReq_PushCond) Reset() { *x = UpdateReq_PushCond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_PushCond) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_PushCond) ProtoMessage() {} func (x *UpdateReq_PushCond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[220] 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 UpdateReq_PushCond.ProtoReflect.Descriptor instead. func (*UpdateReq_PushCond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 62} } func (x *UpdateReq_PushCond) GetMark() string { if x != nil { return x.Mark } return "" } func (x *UpdateReq_PushCond) GetVal() string { if x != nil { return x.Val } return "" } type UpdateReq_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoldNum int32 `protobuf:"varint,1,opt,name=gold_num,json=goldNum,proto3" json:"gold_num,omitempty"` //任务重置天数 ExpiredDay int32 `protobuf:"varint,2,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,4,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 Currency int32 `protobuf:"varint,5,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *UpdateReq_Gold) Reset() { *x = UpdateReq_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Gold) ProtoMessage() {} func (x *UpdateReq_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[221] 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 UpdateReq_Gold.ProtoReflect.Descriptor instead. func (*UpdateReq_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 63} } func (x *UpdateReq_Gold) GetGoldNum() int32 { if x != nil { return x.GoldNum } return 0 } func (x *UpdateReq_Gold) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *UpdateReq_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *UpdateReq_Gold) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *UpdateReq_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type UpdateReq_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CoinImg string `protobuf:"bytes,1,opt,name=coin_img,json=coinImg,proto3" json:"coin_img,omitempty"` //金币图片 OpenDays int32 `protobuf:"varint,2,opt,name=open_days,json=openDays,proto3" json:"open_days,omitempty"` //开奖天数 OpenLimit int32 `protobuf:"varint,3,opt,name=open_limit,json=openLimit,proto3" json:"open_limit,omitempty"` //开奖次数限制 InitCoin int32 `protobuf:"varint,4,opt,name=init_coin,json=initCoin,proto3" json:"init_coin,omitempty"` //初始金币数 InitUse int32 `protobuf:"varint,5,opt,name=init_use,json=initUse,proto3" json:"init_use,omitempty"` //初始投放次数 UseCoin int32 `protobuf:"varint,6,opt,name=use_coin,json=useCoin,proto3" json:"use_coin,omitempty"` //单次投放消耗金币数 UseLimit int32 `protobuf:"varint,7,opt,name=use_limit,json=useLimit,proto3" json:"use_limit,omitempty"` //单次瓜分最多投放次数 UrlId int64 `protobuf:"varint,8,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id LackBtn []int32 `protobuf:"varint,9,rep,packed,name=lack_btn,json=lackBtn,proto3" json:"lack_btn,omitempty"` //金币不足展示的按钮(1-做任务,2-自定义按钮)[1,2] CustomBtnText string `protobuf:"bytes,10,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,11,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,12,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomPcParam string `protobuf:"bytes,13,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *UpdateReq_Coin) Reset() { *x = UpdateReq_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateReq_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateReq_Coin) ProtoMessage() {} func (x *UpdateReq_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[222] 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 UpdateReq_Coin.ProtoReflect.Descriptor instead. func (*UpdateReq_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{10, 64} } func (x *UpdateReq_Coin) GetCoinImg() string { if x != nil { return x.CoinImg } return "" } func (x *UpdateReq_Coin) GetOpenDays() int32 { if x != nil { return x.OpenDays } return 0 } func (x *UpdateReq_Coin) GetOpenLimit() int32 { if x != nil { return x.OpenLimit } return 0 } func (x *UpdateReq_Coin) GetInitCoin() int32 { if x != nil { return x.InitCoin } return 0 } func (x *UpdateReq_Coin) GetInitUse() int32 { if x != nil { return x.InitUse } return 0 } func (x *UpdateReq_Coin) GetUseCoin() int32 { if x != nil { return x.UseCoin } return 0 } func (x *UpdateReq_Coin) GetUseLimit() int32 { if x != nil { return x.UseLimit } return 0 } func (x *UpdateReq_Coin) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *UpdateReq_Coin) GetLackBtn() []int32 { if x != nil { return x.LackBtn } return nil } func (x *UpdateReq_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *UpdateReq_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *UpdateReq_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *UpdateReq_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type ShowRes_GashaponStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 MachineImg string `protobuf:"bytes,4,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 EggType int32 `protobuf:"varint,6,opt,name=egg_type,json=eggType,proto3" json:"egg_type,omitempty"` //类型 EggImgs []string `protobuf:"bytes,7,rep,name=egg_imgs,json=eggImgs,proto3" json:"egg_imgs,omitempty"` //扭蛋素材 } func (x *ShowRes_GashaponStyle) Reset() { *x = ShowRes_GashaponStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_GashaponStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_GashaponStyle) ProtoMessage() {} func (x *ShowRes_GashaponStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[223] 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 ShowRes_GashaponStyle.ProtoReflect.Descriptor instead. func (*ShowRes_GashaponStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 0} } func (x *ShowRes_GashaponStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *ShowRes_GashaponStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *ShowRes_GashaponStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *ShowRes_GashaponStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *ShowRes_GashaponStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *ShowRes_GashaponStyle) GetEggType() int32 { if x != nil { return x.EggType } return 0 } func (x *ShowRes_GashaponStyle) GetEggImgs() []string { if x != nil { return x.EggImgs } return nil } type ShowRes_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FirstVisit *ShowRes_EventOne `protobuf:"bytes,1,opt,name=first_visit,json=firstVisit,proto3" json:"first_visit,omitempty"` //首次访问 } func (x *ShowRes_Event) Reset() { *x = ShowRes_Event{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Event) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Event) ProtoMessage() {} func (x *ShowRes_Event) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[224] 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 ShowRes_Event.ProtoReflect.Descriptor instead. func (*ShowRes_Event) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 1} } func (x *ShowRes_Event) GetFirstVisit() *ShowRes_EventOne { if x != nil { return x.FirstVisit } return nil } type ShowRes_EventOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Rewards []*ShowRes_EventReward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖励 } func (x *ShowRes_EventOne) Reset() { *x = ShowRes_EventOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_EventOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_EventOne) ProtoMessage() {} func (x *ShowRes_EventOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[225] 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 ShowRes_EventOne.ProtoReflect.Descriptor instead. func (*ShowRes_EventOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 2} } func (x *ShowRes_EventOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_EventOne) GetRewards() []*ShowRes_EventReward { if x != nil { return x.Rewards } return nil } type ShowRes_EventReward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PropMark string `protobuf:"bytes,2,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Reward *ShowRes_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 Chance int32 `protobuf:"varint,4,opt,name=chance,proto3" json:"chance,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,5,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *ShowRes_EventReward) Reset() { *x = ShowRes_EventReward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_EventReward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_EventReward) ProtoMessage() {} func (x *ShowRes_EventReward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[226] 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 ShowRes_EventReward.ProtoReflect.Descriptor instead. func (*ShowRes_EventReward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 3} } func (x *ShowRes_EventReward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_EventReward) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ShowRes_EventReward) GetReward() *ShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ShowRes_EventReward) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_EventReward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type ShowRes_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖次数 PropMarks []string `protobuf:"bytes,2,rep,name=prop_marks,json=propMarks,proto3" json:"prop_marks,omitempty"` //道具类型(three - +3道具牌,five - +5道具牌,fix - 固定颜色道具牌) Red *ShowRes_UnoGroup `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow *ShowRes_UnoGroup `protobuf:"bytes,4,opt,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue *ShowRes_UnoGroup `protobuf:"bytes,5,opt,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green *ShowRes_UnoGroup `protobuf:"bytes,6,opt,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *ShowRes_Uno) Reset() { *x = ShowRes_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Uno) ProtoMessage() {} func (x *ShowRes_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[227] 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 ShowRes_Uno.ProtoReflect.Descriptor instead. func (*ShowRes_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 4} } func (x *ShowRes_Uno) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Uno) GetPropMarks() []string { if x != nil { return x.PropMarks } return nil } func (x *ShowRes_Uno) GetRed() *ShowRes_UnoGroup { if x != nil { return x.Red } return nil } func (x *ShowRes_Uno) GetYellow() *ShowRes_UnoGroup { if x != nil { return x.Yellow } return nil } func (x *ShowRes_Uno) GetBlue() *ShowRes_UnoGroup { if x != nil { return x.Blue } return nil } func (x *ShowRes_Uno) GetGreen() *ShowRes_UnoGroup { if x != nil { return x.Green } return nil } type ShowRes_UnoGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌型id Odds string `protobuf:"bytes,2,opt,name=odds,proto3" json:"odds,omitempty"` //获得牌型概率 Reward *ShowRes_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 OpenRule int32 `protobuf:"varint,4,opt,name=open_rule,json=openRule,proto3" json:"open_rule,omitempty"` //是否开启得牌规则(0-否,1-是) LimitRule *ShowRes_UnoLimitRule `protobuf:"bytes,5,opt,name=limit_rule,json=limitRule,proto3" json:"limit_rule,omitempty"` //得牌规则 CustomCard int32 `protobuf:"varint,6,opt,name=custom_card,json=customCard,proto3" json:"custom_card,omitempty"` //自定义卡牌(0-否,1-是) Cards []*ShowRes_UnoCard `protobuf:"bytes,7,rep,name=cards,proto3" json:"cards,omitempty"` //自定义卡牌 } func (x *ShowRes_UnoGroup) Reset() { *x = ShowRes_UnoGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_UnoGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_UnoGroup) ProtoMessage() {} func (x *ShowRes_UnoGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[228] 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 ShowRes_UnoGroup.ProtoReflect.Descriptor instead. func (*ShowRes_UnoGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 5} } func (x *ShowRes_UnoGroup) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_UnoGroup) GetOdds() string { if x != nil { return x.Odds } return "" } func (x *ShowRes_UnoGroup) GetReward() *ShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ShowRes_UnoGroup) GetOpenRule() int32 { if x != nil { return x.OpenRule } return 0 } func (x *ShowRes_UnoGroup) GetLimitRule() *ShowRes_UnoLimitRule { if x != nil { return x.LimitRule } return nil } func (x *ShowRes_UnoGroup) GetCustomCard() int32 { if x != nil { return x.CustomCard } return 0 } func (x *ShowRes_UnoGroup) GetCards() []*ShowRes_UnoCard { if x != nil { return x.Cards } return nil } type ShowRes_UnoLimitRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitNum int32 `protobuf:"varint,1,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始的最大可获得牌型数 SignDay int32 `protobuf:"varint,2,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddNum int32 `protobuf:"varint,3,opt,name=add_num,json=addNum,proto3" json:"add_num,omitempty"` //完成条件可获得最大牌型数 ResetType int32 `protobuf:"varint,4,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置规则(1-不重置,2-获奖后重置) } func (x *ShowRes_UnoLimitRule) Reset() { *x = ShowRes_UnoLimitRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_UnoLimitRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_UnoLimitRule) ProtoMessage() {} func (x *ShowRes_UnoLimitRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[229] 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 ShowRes_UnoLimitRule.ProtoReflect.Descriptor instead. func (*ShowRes_UnoLimitRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 6} } func (x *ShowRes_UnoLimitRule) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } func (x *ShowRes_UnoLimitRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ShowRes_UnoLimitRule) GetAddNum() int32 { if x != nil { return x.AddNum } return 0 } func (x *ShowRes_UnoLimitRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type ShowRes_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,5,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 CardNo int32 `protobuf:"varint,7,opt,name=card_no,json=cardNo,proto3" json:"card_no,omitempty"` //牌号 } func (x *ShowRes_UnoCard) Reset() { *x = ShowRes_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_UnoCard) ProtoMessage() {} func (x *ShowRes_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[230] 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 ShowRes_UnoCard.ProtoReflect.Descriptor instead. func (*ShowRes_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 7} } func (x *ShowRes_UnoCard) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRes_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ShowRes_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *ShowRes_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *ShowRes_UnoCard) GetCardNo() int32 { if x != nil { return x.CardNo } return 0 } type ShowRes_Vs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始投票次数 EachLimitNum int32 `protobuf:"varint,2,opt,name=each_limit_num,json=eachLimitNum,proto3" json:"each_limit_num,omitempty"` //每场可投票次数 OpenPoint int32 `protobuf:"varint,3,opt,name=open_point,json=openPoint,proto3" json:"open_point,omitempty"` //是否开启积分(0-否,1-是) PointsNum int32 `protobuf:"varint,4,opt,name=points_num,json=pointsNum,proto3" json:"points_num,omitempty"` //投票扣除积分数 MallOpen int32 `protobuf:"varint,5,opt,name=mall_open,json=mallOpen,proto3" json:"mall_open,omitempty"` //是否使用积分商城(0-否,1-是) MallId int64 `protobuf:"varint,6,opt,name=mall_id,json=mallId,proto3" json:"mall_id,omitempty"` //兑换商城id VsTz int32 `protobuf:"varint,7,opt,name=vs_tz,json=vsTz,proto3" json:"vs_tz,omitempty"` //比赛时区 ClaimType int32 `protobuf:"varint,8,opt,name=claim_type,json=claimType,proto3" json:"claim_type,omitempty"` //领奖方式(1-结算后自动发奖,2-结算后进入活动后发奖,3-结算后手动领奖) Schedules []*ShowRes_Schedule `protobuf:"bytes,9,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 IconMall string `protobuf:"bytes,10,opt,name=icon_mall,json=iconMall,proto3" json:"icon_mall,omitempty"` //商城图标 IconReward string `protobuf:"bytes,11,opt,name=icon_reward,json=iconReward,proto3" json:"icon_reward,omitempty"` //奖励记录图标 IconSchedule string `protobuf:"bytes,12,opt,name=icon_schedule,json=iconSchedule,proto3" json:"icon_schedule,omitempty"` //赛程图标 } func (x *ShowRes_Vs) Reset() { *x = ShowRes_Vs{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Vs) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Vs) ProtoMessage() {} func (x *ShowRes_Vs) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[231] 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 ShowRes_Vs.ProtoReflect.Descriptor instead. func (*ShowRes_Vs) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 8} } func (x *ShowRes_Vs) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Vs) GetEachLimitNum() int32 { if x != nil { return x.EachLimitNum } return 0 } func (x *ShowRes_Vs) GetOpenPoint() int32 { if x != nil { return x.OpenPoint } return 0 } func (x *ShowRes_Vs) GetPointsNum() int32 { if x != nil { return x.PointsNum } return 0 } func (x *ShowRes_Vs) GetMallOpen() int32 { if x != nil { return x.MallOpen } return 0 } func (x *ShowRes_Vs) GetMallId() int64 { if x != nil { return x.MallId } return 0 } func (x *ShowRes_Vs) GetVsTz() int32 { if x != nil { return x.VsTz } return 0 } func (x *ShowRes_Vs) GetClaimType() int32 { if x != nil { return x.ClaimType } return 0 } func (x *ShowRes_Vs) GetSchedules() []*ShowRes_Schedule { if x != nil { return x.Schedules } return nil } func (x *ShowRes_Vs) GetIconMall() string { if x != nil { return x.IconMall } return "" } func (x *ShowRes_Vs) GetIconReward() string { if x != nil { return x.IconReward } return "" } func (x *ShowRes_Vs) GetIconSchedule() string { if x != nil { return x.IconSchedule } return "" } type ShowRes_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PkTeams []*ShowRes_PkTeam `protobuf:"bytes,2,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *ShowRes_Schedule) Reset() { *x = ShowRes_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Schedule) ProtoMessage() {} func (x *ShowRes_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[232] 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 ShowRes_Schedule.ProtoReflect.Descriptor instead. func (*ShowRes_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 9} } func (x *ShowRes_Schedule) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *ShowRes_Schedule) GetPkTeams() []*ShowRes_PkTeam { if x != nil { return x.PkTeams } return nil } type ShowRes_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id Teams []*ShowRes_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VoteStart int64 `protobuf:"varint,3,opt,name=vote_start,json=voteStart,proto3" json:"vote_start,omitempty"` //开始时间 VoteEnd int64 `protobuf:"varint,4,opt,name=vote_end,json=voteEnd,proto3" json:"vote_end,omitempty"` //结束时间 VsAt int64 `protobuf:"varint,5,opt,name=vs_at,json=vsAt,proto3" json:"vs_at,omitempty"` //比赛开始时间 VsImg string `protobuf:"bytes,6,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,7,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 PropMark string `protobuf:"bytes,8,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(reward-奖品,point-积分) RewardId int64 `protobuf:"varint,9,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库奖品id PropNum int32 `protobuf:"varint,10,opt,name=prop_num,json=propNum,proto3" json:"prop_num,omitempty"` //道具数量 ExpiredDay string `protobuf:"bytes,11,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 IsSettlement int32 `protobuf:"varint,12,opt,name=is_settlement,json=isSettlement,proto3" json:"is_settlement,omitempty"` //是否结算(0-否,1-是) OtherVote []string `protobuf:"bytes,13,rep,name=other_vote,json=otherVote,proto3" json:"other_vote,omitempty"` //其他投票方式 OpenOdds int32 `protobuf:"varint,14,opt,name=open_odds,json=openOdds,proto3" json:"open_odds,omitempty"` //是否开启赔率(0-否,1-是) OddsLeft string `protobuf:"bytes,15,opt,name=odds_left,json=oddsLeft,proto3" json:"odds_left,omitempty"` //左边赔率 OddsRight string `protobuf:"bytes,16,opt,name=odds_right,json=oddsRight,proto3" json:"odds_right,omitempty"` //右边赔率 OddsDraw string `protobuf:"bytes,17,opt,name=odds_draw,json=oddsDraw,proto3" json:"odds_draw,omitempty"` //平局赔率 Status int32 `protobuf:"varint,18,opt,name=status,proto3" json:"status,omitempty"` //投票状态(1-即将投票,2-投票中,3-待结算,4-已结算) } func (x *ShowRes_PkTeam) Reset() { *x = ShowRes_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_PkTeam) ProtoMessage() {} func (x *ShowRes_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[233] 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 ShowRes_PkTeam.ProtoReflect.Descriptor instead. func (*ShowRes_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 10} } func (x *ShowRes_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_PkTeam) GetTeams() []*ShowRes_Team { if x != nil { return x.Teams } return nil } func (x *ShowRes_PkTeam) GetVoteStart() int64 { if x != nil { return x.VoteStart } return 0 } func (x *ShowRes_PkTeam) GetVoteEnd() int64 { if x != nil { return x.VoteEnd } return 0 } func (x *ShowRes_PkTeam) GetVsAt() int64 { if x != nil { return x.VsAt } return 0 } func (x *ShowRes_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *ShowRes_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *ShowRes_PkTeam) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ShowRes_PkTeam) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ShowRes_PkTeam) GetPropNum() int32 { if x != nil { return x.PropNum } return 0 } func (x *ShowRes_PkTeam) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *ShowRes_PkTeam) GetIsSettlement() int32 { if x != nil { return x.IsSettlement } return 0 } func (x *ShowRes_PkTeam) GetOtherVote() []string { if x != nil { return x.OtherVote } return nil } func (x *ShowRes_PkTeam) GetOpenOdds() int32 { if x != nil { return x.OpenOdds } return 0 } func (x *ShowRes_PkTeam) GetOddsLeft() string { if x != nil { return x.OddsLeft } return "" } func (x *ShowRes_PkTeam) GetOddsRight() string { if x != nil { return x.OddsRight } return "" } func (x *ShowRes_PkTeam) GetOddsDraw() string { if x != nil { return x.OddsDraw } return "" } func (x *ShowRes_PkTeam) GetStatus() int32 { if x != nil { return x.Status } return 0 } type ShowRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *ShowRes_Team) Reset() { *x = ShowRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Team) ProtoMessage() {} func (x *ShowRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[234] 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 ShowRes_Team.ProtoReflect.Descriptor instead. func (*ShowRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 11} } func (x *ShowRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *ShowRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type ShowRes_Chat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启ai陪伴(0-关闭,1-开启) HeaderImg string `protobuf:"bytes,2,opt,name=header_img,json=headerImg,proto3" json:"header_img,omitempty"` //宠物头像 ChatBg string `protobuf:"bytes,3,opt,name=chat_bg,json=chatBg,proto3" json:"chat_bg,omitempty"` //聊天背景 DayLimit int32 `protobuf:"varint,4,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日聊天上限 } func (x *ShowRes_Chat) Reset() { *x = ShowRes_Chat{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Chat) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Chat) ProtoMessage() {} func (x *ShowRes_Chat) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[235] 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 ShowRes_Chat.ProtoReflect.Descriptor instead. func (*ShowRes_Chat) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 12} } func (x *ShowRes_Chat) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_Chat) GetHeaderImg() string { if x != nil { return x.HeaderImg } return "" } func (x *ShowRes_Chat) GetChatBg() string { if x != nil { return x.ChatBg } return "" } func (x *ShowRes_Chat) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } type ShowRes_PointsUse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启积分消耗(0-否,1-是) Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` //积分icon图 UrlId int64 `protobuf:"varint,3,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id UseNum int32 `protobuf:"varint,4,opt,name=use_num,json=useNum,proto3" json:"use_num,omitempty"` //单次兑换使用积分数量 DayLimit int32 `protobuf:"varint,5,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日可兑换次数 TotalLimit int32 `protobuf:"varint,6,opt,name=total_limit,json=totalLimit,proto3" json:"total_limit,omitempty"` //总兑换次数 } func (x *ShowRes_PointsUse) Reset() { *x = ShowRes_PointsUse{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_PointsUse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_PointsUse) ProtoMessage() {} func (x *ShowRes_PointsUse) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[236] 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 ShowRes_PointsUse.ProtoReflect.Descriptor instead. func (*ShowRes_PointsUse) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 13} } func (x *ShowRes_PointsUse) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_PointsUse) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *ShowRes_PointsUse) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *ShowRes_PointsUse) GetUseNum() int32 { if x != nil { return x.UseNum } return 0 } func (x *ShowRes_PointsUse) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ShowRes_PointsUse) GetTotalLimit() int32 { if x != nil { return x.TotalLimit } return 0 } type ShowRes_FlipStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 CardImg string `protobuf:"bytes,6,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡片素材 } func (x *ShowRes_FlipStyle) Reset() { *x = ShowRes_FlipStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_FlipStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_FlipStyle) ProtoMessage() {} func (x *ShowRes_FlipStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[237] 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 ShowRes_FlipStyle.ProtoReflect.Descriptor instead. func (*ShowRes_FlipStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 14} } func (x *ShowRes_FlipStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *ShowRes_FlipStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *ShowRes_FlipStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *ShowRes_FlipStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *ShowRes_FlipStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *ShowRes_FlipStyle) GetCardImg() string { if x != nil { return x.CardImg } return "" } type ShowRes_GridStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 ButtonColor string `protobuf:"bytes,4,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 PlayImg string `protobuf:"bytes,5,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //Go按钮图 DisablePlayImg string `protobuf:"bytes,6,opt,name=disable_play_img,json=disablePlayImg,proto3" json:"disable_play_img,omitempty"` //Go按钮禁用 MachineImg string `protobuf:"bytes,7,opt,name=machine_img,json=machineImg,proto3" json:"machine_img,omitempty"` //机器图 GridImg string `protobuf:"bytes,8,opt,name=grid_img,json=gridImg,proto3" json:"grid_img,omitempty"` //方格图 ActivateImg string `protobuf:"bytes,9,opt,name=activate_img,json=activateImg,proto3" json:"activate_img,omitempty"` //方格激活图 } func (x *ShowRes_GridStyle) Reset() { *x = ShowRes_GridStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_GridStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_GridStyle) ProtoMessage() {} func (x *ShowRes_GridStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[238] 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 ShowRes_GridStyle.ProtoReflect.Descriptor instead. func (*ShowRes_GridStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 15} } func (x *ShowRes_GridStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *ShowRes_GridStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *ShowRes_GridStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *ShowRes_GridStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *ShowRes_GridStyle) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *ShowRes_GridStyle) GetDisablePlayImg() string { if x != nil { return x.DisablePlayImg } return "" } func (x *ShowRes_GridStyle) GetMachineImg() string { if x != nil { return x.MachineImg } return "" } func (x *ShowRes_GridStyle) GetGridImg() string { if x != nil { return x.GridImg } return "" } func (x *ShowRes_GridStyle) GetActivateImg() string { if x != nil { return x.ActivateImg } return "" } type ShowRes_WheelStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TopicMark string `protobuf:"bytes,1,opt,name=topic_mark,json=topicMark,proto3" json:"topic_mark,omitempty"` //主题标识 MainImg string `protobuf:"bytes,2,opt,name=main_img,json=mainImg,proto3" json:"main_img,omitempty"` //活动背景图 BgColor string `protobuf:"bytes,3,opt,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"` //背景颜色 Bottom1 string `protobuf:"bytes,4,opt,name=bottom1,proto3" json:"bottom1,omitempty"` //底部颜色1 Bottom2 string `protobuf:"bytes,5,opt,name=bottom2,proto3" json:"bottom2,omitempty"` //底部颜色2 Bottom3 string `protobuf:"bytes,6,opt,name=bottom3,proto3" json:"bottom3,omitempty"` //底部颜色3 Pointer string `protobuf:"bytes,7,opt,name=pointer,proto3" json:"pointer,omitempty"` //指针图片 PlayBtn string `protobuf:"bytes,8,opt,name=play_btn,json=playBtn,proto3" json:"play_btn,omitempty"` //玩法按钮图片 BorderImg string `protobuf:"bytes,9,opt,name=border_img,json=borderImg,proto3" json:"border_img,omitempty"` //边框图片 ButtonColor string `protobuf:"bytes,10,opt,name=button_color,json=buttonColor,proto3" json:"button_color,omitempty"` //按钮颜色 WheelTextColor string `protobuf:"bytes,11,opt,name=wheel_text_color,json=wheelTextColor,proto3" json:"wheel_text_color,omitempty"` //转盘文字颜色 } func (x *ShowRes_WheelStyle) Reset() { *x = ShowRes_WheelStyle{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_WheelStyle) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_WheelStyle) ProtoMessage() {} func (x *ShowRes_WheelStyle) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[239] 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 ShowRes_WheelStyle.ProtoReflect.Descriptor instead. func (*ShowRes_WheelStyle) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 16} } func (x *ShowRes_WheelStyle) GetTopicMark() string { if x != nil { return x.TopicMark } return "" } func (x *ShowRes_WheelStyle) GetMainImg() string { if x != nil { return x.MainImg } return "" } func (x *ShowRes_WheelStyle) GetBgColor() string { if x != nil { return x.BgColor } return "" } func (x *ShowRes_WheelStyle) GetBottom1() string { if x != nil { return x.Bottom1 } return "" } func (x *ShowRes_WheelStyle) GetBottom2() string { if x != nil { return x.Bottom2 } return "" } func (x *ShowRes_WheelStyle) GetBottom3() string { if x != nil { return x.Bottom3 } return "" } func (x *ShowRes_WheelStyle) GetPointer() string { if x != nil { return x.Pointer } return "" } func (x *ShowRes_WheelStyle) GetPlayBtn() string { if x != nil { return x.PlayBtn } return "" } func (x *ShowRes_WheelStyle) GetBorderImg() string { if x != nil { return x.BorderImg } return "" } func (x *ShowRes_WheelStyle) GetButtonColor() string { if x != nil { return x.ButtonColor } return "" } func (x *ShowRes_WheelStyle) GetWheelTextColor() string { if x != nil { return x.WheelTextColor } return "" } type ShowRes_Child struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动hash_id ChildType int32 `protobuf:"varint,2,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 } func (x *ShowRes_Child) Reset() { *x = ShowRes_Child{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Child) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Child) ProtoMessage() {} func (x *ShowRes_Child) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[240] 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 ShowRes_Child.ProtoReflect.Descriptor instead. func (*ShowRes_Child) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 17} } func (x *ShowRes_Child) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ShowRes_Child) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } type ShowRes_Share struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //标题 Logo string `protobuf:"bytes,3,opt,name=logo,proto3" json:"logo,omitempty"` //图标 Scheme string `protobuf:"bytes,4,opt,name=scheme,proto3" json:"scheme,omitempty"` //Scheme IosScheme string `protobuf:"bytes,5,opt,name=ios_scheme,json=iosScheme,proto3" json:"ios_scheme,omitempty"` //ios Scheme } func (x *ShowRes_Share) Reset() { *x = ShowRes_Share{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Share) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Share) ProtoMessage() {} func (x *ShowRes_Share) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[241] 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 ShowRes_Share.ProtoReflect.Descriptor instead. func (*ShowRes_Share) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 18} } func (x *ShowRes_Share) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_Share) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_Share) GetLogo() string { if x != nil { return x.Logo } return "" } func (x *ShowRes_Share) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *ShowRes_Share) GetIosScheme() string { if x != nil { return x.IosScheme } return "" } type ShowRes_Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RuleTextColor string `protobuf:"bytes,1,opt,name=rule_text_color,json=ruleTextColor,proto3" json:"rule_text_color,omitempty"` //规则文字颜色 RuleBgColor string `protobuf:"bytes,2,opt,name=rule_bg_color,json=ruleBgColor,proto3" json:"rule_bg_color,omitempty"` //规则背景颜色 ShareText string `protobuf:"bytes,3,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,4,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 HasRank int32 `protobuf:"varint,5,opt,name=has_rank,json=hasRank,proto3" json:"has_rank,omitempty"` //是否展示中奖纪录(1-是,0-否) RankBackgroundColor string `protobuf:"bytes,6,opt,name=rank_background_color,json=rankBackgroundColor,proto3" json:"rank_background_color,omitempty"` //排行榜背景颜色 RankTextColor string `protobuf:"bytes,7,opt,name=rank_text_color,json=rankTextColor,proto3" json:"rank_text_color,omitempty"` //排行榜背景颜色 DownloadPageImage string `protobuf:"bytes,8,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 IsDefaultDownload int32 `protobuf:"varint,9,opt,name=is_default_download,json=isDefaultDownload,proto3" json:"is_default_download,omitempty"` //是否使用默认下载图(1-是,0-否) WechatPageImage string `protobuf:"bytes,10,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 IsDefaultWechat int32 `protobuf:"varint,11,opt,name=is_default_wechat,json=isDefaultWechat,proto3" json:"is_default_wechat,omitempty"` //是否使用默认微信引导图(1-是,0-否) ImageMain string `protobuf:"bytes,12,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 IsDefaultMain int32 `protobuf:"varint,13,opt,name=is_default_main,json=isDefaultMain,proto3" json:"is_default_main,omitempty"` //是否使用默认活动主图(1-是,0-否) ImagePreview string `protobuf:"bytes,14,opt,name=image_preview,json=imagePreview,proto3" json:"image_preview,omitempty"` //问题页背景图 LinkBtnTextColor string `protobuf:"bytes,15,opt,name=link_btn_text_color,json=linkBtnTextColor,proto3" json:"link_btn_text_color,omitempty"` //分享链接按钮文字颜色 LinkBtnBgColor string `protobuf:"bytes,16,opt,name=link_btn_bg_color,json=linkBtnBgColor,proto3" json:"link_btn_bg_color,omitempty"` //分享链接按钮背景颜色 LinkTextColor string `protobuf:"bytes,17,opt,name=link_text_color,json=linkTextColor,proto3" json:"link_text_color,omitempty"` //分享链接文字颜色 ShowShare int32 `protobuf:"varint,18,opt,name=show_share,json=showShare,proto3" json:"show_share,omitempty"` //是否显示分享社交媒体(0-否,1-是) Share []int64 `protobuf:"varint,19,rep,packed,name=share,proto3" json:"share,omitempty"` //要分享的社交媒体,例如[1,2,3] PlayRule string `protobuf:"bytes,20,opt,name=play_rule,json=playRule,proto3" json:"play_rule,omitempty"` //玩法规则 PageTitle string `protobuf:"bytes,21,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 DmShow int32 `protobuf:"varint,22,opt,name=dm_show,json=dmShow,proto3" json:"dm_show,omitempty"` //是否显示弹幕(0-否,1-是) WebBgImg string `protobuf:"bytes,23,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外活动背景图 HasWeb int32 `protobuf:"varint,24,opt,name=has_web,json=hasWeb,proto3" json:"has_web,omitempty"` //是否有站外活动(0-否,1-是) HasWarmUp int32 `protobuf:"varint,25,opt,name=has_warm_up,json=hasWarmUp,proto3" json:"has_warm_up,omitempty"` //是否预热(0-否,1-是) WarmUpImg string `protobuf:"bytes,26,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 WarmUpEnd int32 `protobuf:"varint,27,opt,name=warm_up_end,json=warmUpEnd,proto3" json:"warm_up_end,omitempty"` //活动开始前多少分钟结束预热 IconType int32 `protobuf:"varint,28,opt,name=icon_type,json=iconType,proto3" json:"icon_type,omitempty"` //活动挂件类型(用于前端挂件选用判断) IconBgColor string `protobuf:"bytes,29,opt,name=icon_bg_color,json=iconBgColor,proto3" json:"icon_bg_color,omitempty"` //活动挂件背景色 DlType int32 `protobuf:"varint,30,opt,name=dl_type,json=dlType,proto3" json:"dl_type,omitempty"` //下载引导页类型(1-通用,2-自定义多媒体) DlBannerType int32 `protobuf:"varint,31,opt,name=dl_banner_type,json=dlBannerType,proto3" json:"dl_banner_type,omitempty"` //下载页横幅类型(1-默认,2-自定义) DlBannerImg string `protobuf:"bytes,32,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,33,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,34,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,35,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 DlBannerPosition int32 `protobuf:"varint,36,opt,name=dl_banner_position,json=dlBannerPosition,proto3" json:"dl_banner_position,omitempty"` //下载页横幅位置(1-顶部,2-底部) TopicColor string `protobuf:"bytes,37,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 WindowCover int32 `protobuf:"varint,38,opt,name=window_cover,json=windowCover,proto3" json:"window_cover,omitempty"` //是否全屏展示(0-否,1-是) OpenAd int32 `protobuf:"varint,39,opt,name=open_ad,json=openAd,proto3" json:"open_ad,omitempty"` //是否开启广告(0-否,1-是) CloseCopyShare int32 `protobuf:"varint,40,opt,name=close_copy_share,json=closeCopyShare,proto3" json:"close_copy_share,omitempty"` //关闭复制分享文案(0-否,1-是) IconOpen []int32 `protobuf:"varint,41,rep,packed,name=icon_open,json=iconOpen,proto3" json:"icon_open,omitempty"` //开启的挂件(1-奖品列表,2-邀请记录,3-奖励记录,4-邀请好友),例如[1,3] HasWhite int32 `protobuf:"varint,42,opt,name=has_white,json=hasWhite,proto3" json:"has_white,omitempty"` //是否开启白名单(0-否,1-是) WhiteList string `protobuf:"bytes,43,opt,name=white_list,json=whiteList,proto3" json:"white_list,omitempty"` //白名单列表(多个用英文;分割) PcBg string `protobuf:"bytes,44,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc适配背景图 AdsType int32 `protobuf:"varint,45,opt,name=ads_type,json=adsType,proto3" json:"ads_type,omitempty"` //广告状态(0-不启用广告,1-跟随项目配置,2-活动开启) LinkTempId string `protobuf:"bytes,46,opt,name=link_temp_id,json=linkTempId,proto3" json:"link_temp_id,omitempty"` //链接模板id RuleTimeOpen int32 `protobuf:"varint,47,opt,name=rule_time_open,json=ruleTimeOpen,proto3" json:"rule_time_open,omitempty"` //是否展示规则中的活动时间(0-否,1-是) OutsideTask int32 `protobuf:"varint,48,opt,name=outside_task,json=outsideTask,proto3" json:"outside_task,omitempty"` //是否外显任务(0-否,1-是) IconTextColor string `protobuf:"bytes,49,opt,name=icon_text_color,json=iconTextColor,proto3" json:"icon_text_color,omitempty"` //活动挂件字体色 OpenShare int32 `protobuf:"varint,50,opt,name=open_share,json=openShare,proto3" json:"open_share,omitempty"` //是否启用分享模块(0-否,1-是) ShowToUse int32 `protobuf:"varint,51,opt,name=show_to_use,json=showToUse,proto3" json:"show_to_use,omitempty"` //是否展示奖品弹窗的去使用(0-不展示,1-展示) RuleType int32 `protobuf:"varint,52,opt,name=rule_type,json=ruleType,proto3" json:"rule_type,omitempty"` //规则展示类型(0-文本,1-图片) RuleImg string `protobuf:"bytes,53,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 RuleOutside int32 `protobuf:"varint,54,opt,name=rule_outside,json=ruleOutside,proto3" json:"rule_outside,omitempty"` //规则是否外显(0-否,1-是) DeviceOnce int32 `protobuf:"varint,55,opt,name=device_once,json=deviceOnce,proto3" json:"device_once,omitempty"` //设备唯一(0-否,1-是) } func (x *ShowRes_Config) Reset() { *x = ShowRes_Config{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Config) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Config) ProtoMessage() {} func (x *ShowRes_Config) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[242] 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 ShowRes_Config.ProtoReflect.Descriptor instead. func (*ShowRes_Config) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 19} } func (x *ShowRes_Config) GetRuleTextColor() string { if x != nil { return x.RuleTextColor } return "" } func (x *ShowRes_Config) GetRuleBgColor() string { if x != nil { return x.RuleBgColor } return "" } func (x *ShowRes_Config) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *ShowRes_Config) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *ShowRes_Config) GetHasRank() int32 { if x != nil { return x.HasRank } return 0 } func (x *ShowRes_Config) GetRankBackgroundColor() string { if x != nil { return x.RankBackgroundColor } return "" } func (x *ShowRes_Config) GetRankTextColor() string { if x != nil { return x.RankTextColor } return "" } func (x *ShowRes_Config) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *ShowRes_Config) GetIsDefaultDownload() int32 { if x != nil { return x.IsDefaultDownload } return 0 } func (x *ShowRes_Config) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *ShowRes_Config) GetIsDefaultWechat() int32 { if x != nil { return x.IsDefaultWechat } return 0 } func (x *ShowRes_Config) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *ShowRes_Config) GetIsDefaultMain() int32 { if x != nil { return x.IsDefaultMain } return 0 } func (x *ShowRes_Config) GetImagePreview() string { if x != nil { return x.ImagePreview } return "" } func (x *ShowRes_Config) GetLinkBtnTextColor() string { if x != nil { return x.LinkBtnTextColor } return "" } func (x *ShowRes_Config) GetLinkBtnBgColor() string { if x != nil { return x.LinkBtnBgColor } return "" } func (x *ShowRes_Config) GetLinkTextColor() string { if x != nil { return x.LinkTextColor } return "" } func (x *ShowRes_Config) GetShowShare() int32 { if x != nil { return x.ShowShare } return 0 } func (x *ShowRes_Config) GetShare() []int64 { if x != nil { return x.Share } return nil } func (x *ShowRes_Config) GetPlayRule() string { if x != nil { return x.PlayRule } return "" } func (x *ShowRes_Config) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *ShowRes_Config) GetDmShow() int32 { if x != nil { return x.DmShow } return 0 } func (x *ShowRes_Config) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *ShowRes_Config) GetHasWeb() int32 { if x != nil { return x.HasWeb } return 0 } func (x *ShowRes_Config) GetHasWarmUp() int32 { if x != nil { return x.HasWarmUp } return 0 } func (x *ShowRes_Config) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *ShowRes_Config) GetWarmUpEnd() int32 { if x != nil { return x.WarmUpEnd } return 0 } func (x *ShowRes_Config) GetIconType() int32 { if x != nil { return x.IconType } return 0 } func (x *ShowRes_Config) GetIconBgColor() string { if x != nil { return x.IconBgColor } return "" } func (x *ShowRes_Config) GetDlType() int32 { if x != nil { return x.DlType } return 0 } func (x *ShowRes_Config) GetDlBannerType() int32 { if x != nil { return x.DlBannerType } return 0 } func (x *ShowRes_Config) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *ShowRes_Config) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *ShowRes_Config) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *ShowRes_Config) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *ShowRes_Config) GetDlBannerPosition() int32 { if x != nil { return x.DlBannerPosition } return 0 } func (x *ShowRes_Config) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *ShowRes_Config) GetWindowCover() int32 { if x != nil { return x.WindowCover } return 0 } func (x *ShowRes_Config) GetOpenAd() int32 { if x != nil { return x.OpenAd } return 0 } func (x *ShowRes_Config) GetCloseCopyShare() int32 { if x != nil { return x.CloseCopyShare } return 0 } func (x *ShowRes_Config) GetIconOpen() []int32 { if x != nil { return x.IconOpen } return nil } func (x *ShowRes_Config) GetHasWhite() int32 { if x != nil { return x.HasWhite } return 0 } func (x *ShowRes_Config) GetWhiteList() string { if x != nil { return x.WhiteList } return "" } func (x *ShowRes_Config) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *ShowRes_Config) GetAdsType() int32 { if x != nil { return x.AdsType } return 0 } func (x *ShowRes_Config) GetLinkTempId() string { if x != nil { return x.LinkTempId } return "" } func (x *ShowRes_Config) GetRuleTimeOpen() int32 { if x != nil { return x.RuleTimeOpen } return 0 } func (x *ShowRes_Config) GetOutsideTask() int32 { if x != nil { return x.OutsideTask } return 0 } func (x *ShowRes_Config) GetIconTextColor() string { if x != nil { return x.IconTextColor } return "" } func (x *ShowRes_Config) GetOpenShare() int32 { if x != nil { return x.OpenShare } return 0 } func (x *ShowRes_Config) GetShowToUse() int32 { if x != nil { return x.ShowToUse } return 0 } func (x *ShowRes_Config) GetRuleType() int32 { if x != nil { return x.RuleType } return 0 } func (x *ShowRes_Config) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *ShowRes_Config) GetRuleOutside() int32 { if x != nil { return x.RuleOutside } return 0 } func (x *ShowRes_Config) GetDeviceOnce() int32 { if x != nil { return x.DeviceOnce } return 0 } type ShowRes_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 Id int64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` //长图id ClickType int32 `protobuf:"varint,5,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*ShowRes_HotZone `protobuf:"bytes,6,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id TargetUrl string `protobuf:"bytes,9,opt,name=target_url,json=targetUrl,proto3" json:"target_url,omitempty"` //目标地址 PcParam string `protobuf:"bytes,10,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *ShowRes_LongImg) Reset() { *x = ShowRes_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_LongImg) ProtoMessage() {} func (x *ShowRes_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[243] 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 ShowRes_LongImg.ProtoReflect.Descriptor instead. func (*ShowRes_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 20} } func (x *ShowRes_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRes_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ShowRes_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *ShowRes_LongImg) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *ShowRes_LongImg) GetHotZone() []*ShowRes_HotZone { if x != nil { return x.HotZone } return nil } func (x *ShowRes_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *ShowRes_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *ShowRes_LongImg) GetTargetUrl() string { if x != nil { return x.TargetUrl } return "" } func (x *ShowRes_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } type ShowRes_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //热区id WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,4,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,5,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,6,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,7,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,8,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id TargetUrl string `protobuf:"bytes,10,opt,name=target_url,json=targetUrl,proto3" json:"target_url,omitempty"` //目标地址 PcParam string `protobuf:"bytes,11,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *ShowRes_HotZone) Reset() { *x = ShowRes_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[244] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_HotZone) ProtoMessage() {} func (x *ShowRes_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[244] 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 ShowRes_HotZone.ProtoReflect.Descriptor instead. func (*ShowRes_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 21} } func (x *ShowRes_HotZone) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ShowRes_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *ShowRes_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *ShowRes_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *ShowRes_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *ShowRes_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *ShowRes_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *ShowRes_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *ShowRes_HotZone) GetTargetUrl() string { if x != nil { return x.TargetUrl } return "" } func (x *ShowRes_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type ShowRes_Target struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Option int32 `protobuf:"varint,2,opt,name=option,proto3" json:"option,omitempty"` //标选择类型(1-app下载/注册;2-好友完成指定事件;3-指定事件达标;4-拉充值/积分消耗;5-用户指定事件达标) AppEvent int32 `protobuf:"varint,3,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //目标选择类型为1(option=1)的选项(1-安装;2-注册) BothType int32 `protobuf:"varint,4,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*ShowRes_Cond `protobuf:"bytes,5,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *ShowRes_BothAll `protobuf:"bytes,6,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 NormalData *ShowRes_NormalData `protobuf:"bytes,7,opt,name=normal_data,json=normalData,proto3" json:"normal_data,omitempty"` //通用事件的数据 } func (x *ShowRes_Target) Reset() { *x = ShowRes_Target{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Target) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Target) ProtoMessage() {} func (x *ShowRes_Target) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[245] 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 ShowRes_Target.ProtoReflect.Descriptor instead. func (*ShowRes_Target) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 22} } func (x *ShowRes_Target) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *ShowRes_Target) GetOption() int32 { if x != nil { return x.Option } return 0 } func (x *ShowRes_Target) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *ShowRes_Target) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *ShowRes_Target) GetCond() []*ShowRes_Cond { if x != nil { return x.Cond } return nil } func (x *ShowRes_Target) GetBothAll() *ShowRes_BothAll { if x != nil { return x.BothAll } return nil } func (x *ShowRes_Target) GetNormalData() *ShowRes_NormalData { if x != nil { return x.NormalData } return nil } type ShowRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //条件id Event string `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,3,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,4,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,6,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,7,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,8,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,9,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,10,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,11,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,12,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,13,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,14,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,15,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,16,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,17,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,18,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,19,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,20,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,21,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,22,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id AdsStrategyTitle string `protobuf:"bytes,23,opt,name=ads_strategy_title,json=adsStrategyTitle,proto3" json:"ads_strategy_title,omitempty"` //策略标题 IsSuper int32 `protobuf:"varint,24,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,25,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,26,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,27,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *ShowRes_Reward `protobuf:"bytes,28,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,29,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品,point-积分) Sort int32 `protobuf:"varint,30,opt,name=sort,proto3" json:"sort,omitempty"` //排序 OpenPush int32 `protobuf:"varint,31,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) PcParam string `protobuf:"bytes,32,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 AwardMode int32 `protobuf:"varint,33,opt,name=award_mode,json=awardMode,proto3" json:"award_mode,omitempty"` //领奖模式(1-自动领奖,2-手动领奖) GoText string `protobuf:"bytes,34,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 ClickEffectOpen int32 `protobuf:"varint,35,opt,name=click_effect_open,json=clickEffectOpen,proto3" json:"click_effect_open,omitempty"` //是否开启点击有效(0-否,1-是) ClickEffect int32 `protobuf:"varint,36,opt,name=click_effect,json=clickEffect,proto3" json:"click_effect,omitempty"` //点击有效值 ClickEffectUnit string `protobuf:"bytes,37,opt,name=click_effect_unit,json=clickEffectUnit,proto3" json:"click_effect_unit,omitempty"` //点击有效单位(min-分钟,hour-小时,day-天) ExpiredDay string `protobuf:"bytes,38,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 PullInvite int32 `protobuf:"varint,39,opt,name=pull_invite,json=pullInvite,proto3" json:"pull_invite,omitempty"` //是否拉起邀请(0-否,1-是) } func (x *ShowRes_Cond) Reset() { *x = ShowRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Cond) ProtoMessage() {} func (x *ShowRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[246] 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 ShowRes_Cond.ProtoReflect.Descriptor instead. func (*ShowRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 23} } func (x *ShowRes_Cond) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ShowRes_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *ShowRes_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *ShowRes_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *ShowRes_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *ShowRes_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *ShowRes_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *ShowRes_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ShowRes_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *ShowRes_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *ShowRes_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *ShowRes_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ShowRes_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *ShowRes_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *ShowRes_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *ShowRes_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *ShowRes_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ShowRes_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *ShowRes_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *ShowRes_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *ShowRes_Cond) GetAdsStrategyTitle() string { if x != nil { return x.AdsStrategyTitle } return "" } func (x *ShowRes_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ShowRes_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *ShowRes_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *ShowRes_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *ShowRes_Cond) GetReward() *ShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ShowRes_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ShowRes_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *ShowRes_Cond) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } func (x *ShowRes_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *ShowRes_Cond) GetAwardMode() int32 { if x != nil { return x.AwardMode } return 0 } func (x *ShowRes_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } func (x *ShowRes_Cond) GetClickEffectOpen() int32 { if x != nil { return x.ClickEffectOpen } return 0 } func (x *ShowRes_Cond) GetClickEffect() int32 { if x != nil { return x.ClickEffect } return 0 } func (x *ShowRes_Cond) GetClickEffectUnit() string { if x != nil { return x.ClickEffectUnit } return "" } func (x *ShowRes_Cond) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *ShowRes_Cond) GetPullInvite() int32 { if x != nil { return x.PullInvite } return 0 } type ShowRes_BothAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskLimit int32 `protobuf:"varint,1,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) DayLimit int32 `protobuf:"varint,3,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,4,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 LangMarks []string `protobuf:"bytes,5,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WeekLimit int32 `protobuf:"varint,6,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,7,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 Reward *ShowRes_Reward `protobuf:"bytes,8,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,9,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) ExpiredDay string `protobuf:"bytes,10,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 } func (x *ShowRes_BothAll) Reset() { *x = ShowRes_BothAll{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[247] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_BothAll) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_BothAll) ProtoMessage() {} func (x *ShowRes_BothAll) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[247] 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 ShowRes_BothAll.ProtoReflect.Descriptor instead. func (*ShowRes_BothAll) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 24} } func (x *ShowRes_BothAll) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *ShowRes_BothAll) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_BothAll) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ShowRes_BothAll) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *ShowRes_BothAll) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ShowRes_BothAll) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *ShowRes_BothAll) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *ShowRes_BothAll) GetReward() *ShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ShowRes_BothAll) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ShowRes_BothAll) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } type ShowRes_NormalData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,3,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) } func (x *ShowRes_NormalData) Reset() { *x = ShowRes_NormalData{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_NormalData) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_NormalData) ProtoMessage() {} func (x *ShowRes_NormalData) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[248] 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 ShowRes_NormalData.ProtoReflect.Descriptor instead. func (*ShowRes_NormalData) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 25} } func (x *ShowRes_NormalData) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_NormalData) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_NormalData) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } type ShowRes_TargetOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Target int32 `protobuf:"varint,1,opt,name=target,proto3" json:"target,omitempty"` //活动目标(1-app下载/注册;2-提升关键指标转换率;3-app活跃/留存) Fixed *ShowRes_Fixed `protobuf:"bytes,2,opt,name=fixed,proto3" json:"fixed,omitempty"` //固定事件 Custom *ShowRes_Custom `protobuf:"bytes,3,opt,name=custom,proto3" json:"custom,omitempty"` //自定义事件 Option int32 `protobuf:"varint,4,opt,name=option,proto3" json:"option,omitempty"` //标选择类型(1-app下载/注册;2-好友完成指定事件;3-指定事件达标;4-拉充值/积分消耗;5-用户指定事件达标) } func (x *ShowRes_TargetOption) Reset() { *x = ShowRes_TargetOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_TargetOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_TargetOption) ProtoMessage() {} func (x *ShowRes_TargetOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[249] 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 ShowRes_TargetOption.ProtoReflect.Descriptor instead. func (*ShowRes_TargetOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 26} } func (x *ShowRes_TargetOption) GetTarget() int32 { if x != nil { return x.Target } return 0 } func (x *ShowRes_TargetOption) GetFixed() *ShowRes_Fixed { if x != nil { return x.Fixed } return nil } func (x *ShowRes_TargetOption) GetCustom() *ShowRes_Custom { if x != nil { return x.Custom } return nil } func (x *ShowRes_TargetOption) GetOption() int32 { if x != nil { return x.Option } return 0 } type ShowRes_Fixed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) AppEvent int32 `protobuf:"varint,2,opt,name=app_event,json=appEvent,proto3" json:"app_event,omitempty"` //固定事件类型(1-安装;2-注册) TargetNum int32 `protobuf:"varint,3,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,4,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的数量(如:骰子数) ChanceLimit int32 `protobuf:"varint,5,opt,name=chance_limit,json=chanceLimit,proto3" json:"chance_limit,omitempty"` //最大获得数量(如:最大骰子数) Percent float64 `protobuf:"fixed64,6,opt,name=percent,proto3" json:"percent,omitempty"` //百分比值(如:获得的能量点) } func (x *ShowRes_Fixed) Reset() { *x = ShowRes_Fixed{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[250] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Fixed) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Fixed) ProtoMessage() {} func (x *ShowRes_Fixed) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[250] 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 ShowRes_Fixed.ProtoReflect.Descriptor instead. func (*ShowRes_Fixed) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 27} } func (x *ShowRes_Fixed) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_Fixed) GetAppEvent() int32 { if x != nil { return x.AppEvent } return 0 } func (x *ShowRes_Fixed) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_Fixed) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_Fixed) GetChanceLimit() int32 { if x != nil { return x.ChanceLimit } return 0 } func (x *ShowRes_Fixed) GetPercent() float64 { if x != nil { return x.Percent } return 0 } type ShowRes_Custom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) BothType int32 `protobuf:"varint,2,opt,name=both_type,json=bothType,proto3" json:"both_type,omitempty"` //满足条件(1-所有条件满足,2-任一条件满足) Cond []*ShowRes_Cond `protobuf:"bytes,3,rep,name=cond,proto3" json:"cond,omitempty"` //达标条件 BothAll *ShowRes_BothAll `protobuf:"bytes,4,opt,name=both_all,json=bothAll,proto3" json:"both_all,omitempty"` //满足条件为所有条件满足要提交的数据 PreEvent int32 `protobuf:"varint,5,opt,name=pre_event,json=preEvent,proto3" json:"pre_event,omitempty"` //自定义事件前置事件(0-任意事件;1-安装;2-注册) } func (x *ShowRes_Custom) Reset() { *x = ShowRes_Custom{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Custom) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Custom) ProtoMessage() {} func (x *ShowRes_Custom) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[251] 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 ShowRes_Custom.ProtoReflect.Descriptor instead. func (*ShowRes_Custom) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 28} } func (x *ShowRes_Custom) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_Custom) GetBothType() int32 { if x != nil { return x.BothType } return 0 } func (x *ShowRes_Custom) GetCond() []*ShowRes_Cond { if x != nil { return x.Cond } return nil } func (x *ShowRes_Custom) GetBothAll() *ShowRes_BothAll { if x != nil { return x.BothAll } return nil } func (x *ShowRes_Custom) GetPreEvent() int32 { if x != nil { return x.PreEvent } return 0 } type ShowRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //对应字段名 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //对应字段值 } func (x *ShowRes_KV) Reset() { *x = ShowRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_KV) ProtoMessage() {} func (x *ShowRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[252] 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 ShowRes_KV.ProtoReflect.Descriptor instead. func (*ShowRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 29} } func (x *ShowRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *ShowRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type ShowRes_WebReward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片(相对路径) KvData []*ShowRes_KV `protobuf:"bytes,4,rep,name=kv_data,json=kvData,proto3" json:"kv_data,omitempty"` //奖品自定义参数数据 } func (x *ShowRes_WebReward) Reset() { *x = ShowRes_WebReward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_WebReward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_WebReward) ProtoMessage() {} func (x *ShowRes_WebReward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[253] 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 ShowRes_WebReward.ProtoReflect.Descriptor instead. func (*ShowRes_WebReward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 30} } func (x *ShowRes_WebReward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_WebReward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_WebReward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRes_WebReward) GetKvData() []*ShowRes_KV { if x != nil { return x.KvData } return nil } type ShowRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,3,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,6,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,7,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,8,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,9,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,10,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) KvData []*ShowRes_KV `protobuf:"bytes,11,rep,name=kv_data,json=kvData,proto3" json:"kv_data,omitempty"` //奖品自定义参数数据 Title string `protobuf:"bytes,12,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,13,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片 ReceiveType int32 `protobuf:"varint,14,opt,name=receive_type,json=receiveType,proto3" json:"receive_type,omitempty"` //发放类型(1-系统发放,2-联系客服,3-客户端发放,4-提交表单) Contact string `protobuf:"bytes,15,opt,name=contact,proto3" json:"contact,omitempty"` //联系方式 Url string `protobuf:"bytes,16,opt,name=url,proto3" json:"url,omitempty"` //回调地址 Help int32 `protobuf:"varint,17,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,18,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,19,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,20,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,21,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,22,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,23,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,24,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 LangMark string `protobuf:"bytes,25,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //奖品语言标识 Odds int32 `protobuf:"varint,26,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,27,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 FormTitle string `protobuf:"bytes,28,opt,name=form_title,json=formTitle,proto3" json:"form_title,omitempty"` //表单标题 CampaignLimit int32 `protobuf:"varint,29,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,30,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,31,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,32,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 CollectRule *ShowRes_CollectRule `protobuf:"bytes,33,opt,name=collect_rule,json=collectRule,proto3" json:"collect_rule,omitempty"` //收集规则 ExpiredDay string `protobuf:"bytes,34,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //过期天数 OpenAdd *ShowRes_OpenAdd `protobuf:"bytes,35,opt,name=open_add,json=openAdd,proto3" json:"open_add,omitempty"` //库存增加规则 RewardTask *ShowRes_RewardTask `protobuf:"bytes,36,opt,name=reward_task,json=rewardTask,proto3" json:"reward_task,omitempty"` //解锁任务 } func (x *ShowRes_Reward) Reset() { *x = ShowRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Reward) ProtoMessage() {} func (x *ShowRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[254] 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 ShowRes_Reward.ProtoReflect.Descriptor instead. func (*ShowRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 31} } func (x *ShowRes_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ShowRes_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *ShowRes_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ShowRes_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *ShowRes_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *ShowRes_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ShowRes_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ShowRes_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *ShowRes_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ShowRes_Reward) GetKvData() []*ShowRes_KV { if x != nil { return x.KvData } return nil } func (x *ShowRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_Reward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRes_Reward) GetReceiveType() int32 { if x != nil { return x.ReceiveType } return 0 } func (x *ShowRes_Reward) GetContact() string { if x != nil { return x.Contact } return "" } func (x *ShowRes_Reward) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ShowRes_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *ShowRes_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *ShowRes_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *ShowRes_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *ShowRes_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *ShowRes_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *ShowRes_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *ShowRes_Reward) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ShowRes_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *ShowRes_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *ShowRes_Reward) GetFormTitle() string { if x != nil { return x.FormTitle } return "" } func (x *ShowRes_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *ShowRes_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *ShowRes_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *ShowRes_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *ShowRes_Reward) GetCollectRule() *ShowRes_CollectRule { if x != nil { return x.CollectRule } return nil } func (x *ShowRes_Reward) GetExpiredDay() string { if x != nil { return x.ExpiredDay } return "" } func (x *ShowRes_Reward) GetOpenAdd() *ShowRes_OpenAdd { if x != nil { return x.OpenAdd } return nil } func (x *ShowRes_Reward) GetRewardTask() *ShowRes_RewardTask { if x != nil { return x.RewardTask } return nil } type ShowRes_RewardTask struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启(0-否,1-是) Event string `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,3,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,4,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TriggerType int32 `protobuf:"varint,6,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) EventType int32 `protobuf:"varint,7,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) OpenPush int32 `protobuf:"varint,8,opt,name=open_push,json=openPush,proto3" json:"open_push,omitempty"` //是否开启完成推送(0-否,1-是) } func (x *ShowRes_RewardTask) Reset() { *x = ShowRes_RewardTask{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[255] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_RewardTask) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_RewardTask) ProtoMessage() {} func (x *ShowRes_RewardTask) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[255] 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 ShowRes_RewardTask.ProtoReflect.Descriptor instead. func (*ShowRes_RewardTask) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 32} } func (x *ShowRes_RewardTask) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_RewardTask) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ShowRes_RewardTask) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *ShowRes_RewardTask) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *ShowRes_RewardTask) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *ShowRes_RewardTask) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *ShowRes_RewardTask) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *ShowRes_RewardTask) GetOpenPush() int32 { if x != nil { return x.OpenPush } return 0 } type ShowRes_OpenAdd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启动态库存规则(0-否,1-是) Start int64 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` //开始时间 End int64 `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"` //结束时间 DayNum int32 `protobuf:"varint,4,opt,name=day_num,json=dayNum,proto3" json:"day_num,omitempty"` //天数 DayAdd int32 `protobuf:"varint,5,opt,name=day_add,json=dayAdd,proto3" json:"day_add,omitempty"` //增加的库存量 } func (x *ShowRes_OpenAdd) Reset() { *x = ShowRes_OpenAdd{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[256] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_OpenAdd) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_OpenAdd) ProtoMessage() {} func (x *ShowRes_OpenAdd) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[256] 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 ShowRes_OpenAdd.ProtoReflect.Descriptor instead. func (*ShowRes_OpenAdd) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 33} } func (x *ShowRes_OpenAdd) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_OpenAdd) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *ShowRes_OpenAdd) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *ShowRes_OpenAdd) GetDayNum() int32 { if x != nil { return x.DayNum } return 0 } func (x *ShowRes_OpenAdd) GetDayAdd() int32 { if x != nil { return x.DayAdd } return 0 } type ShowRes_CollectRule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //开启碎片规则(0-否,1-是) InitCollect int32 `protobuf:"varint,2,opt,name=init_collect,json=initCollect,proto3" json:"init_collect,omitempty"` //初始的最大可获得碎片数 SignDay int32 `protobuf:"varint,3,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 AddCollect int32 `protobuf:"varint,4,opt,name=add_collect,json=addCollect,proto3" json:"add_collect,omitempty"` //完成条件可获得最大碎片数 ResetType int32 `protobuf:"varint,5,opt,name=reset_type,json=resetType,proto3" json:"reset_type,omitempty"` //重置碎片规则(1-不重置,2-获奖后重置) } func (x *ShowRes_CollectRule) Reset() { *x = ShowRes_CollectRule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[257] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_CollectRule) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_CollectRule) ProtoMessage() {} func (x *ShowRes_CollectRule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[257] 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 ShowRes_CollectRule.ProtoReflect.Descriptor instead. func (*ShowRes_CollectRule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 34} } func (x *ShowRes_CollectRule) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_CollectRule) GetInitCollect() int32 { if x != nil { return x.InitCollect } return 0 } func (x *ShowRes_CollectRule) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ShowRes_CollectRule) GetAddCollect() int32 { if x != nil { return x.AddCollect } return 0 } func (x *ShowRes_CollectRule) GetResetType() int32 { if x != nil { return x.ResetType } return 0 } type ShowRes_Rewards struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardGroup int32 `protobuf:"varint,1,opt,name=reward_group,json=rewardGroup,proto3" json:"reward_group,omitempty"` //奖品分组类型(1-常规奖品,2-用户类型奖品,3-语言奖品,4-语言+用户类型奖品,5-国家奖品) Normal []*ShowRes_Reward `protobuf:"bytes,2,rep,name=normal,proto3" json:"normal,omitempty"` //常规奖品 UserLevel *ShowRes_UserLevel `protobuf:"bytes,3,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` //用户类型奖品 Langs []*ShowRes_Lang `protobuf:"bytes,4,rep,name=langs,proto3" json:"langs,omitempty"` //语言奖品 LangUserLevel []*ShowRes_LangUserLevel `protobuf:"bytes,5,rep,name=lang_user_level,json=langUserLevel,proto3" json:"lang_user_level,omitempty"` //语言+用户类型奖品 Country *ShowRes_Country `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` //国家奖品 } func (x *ShowRes_Rewards) Reset() { *x = ShowRes_Rewards{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[258] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Rewards) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Rewards) ProtoMessage() {} func (x *ShowRes_Rewards) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[258] 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 ShowRes_Rewards.ProtoReflect.Descriptor instead. func (*ShowRes_Rewards) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 35} } func (x *ShowRes_Rewards) GetRewardGroup() int32 { if x != nil { return x.RewardGroup } return 0 } func (x *ShowRes_Rewards) GetNormal() []*ShowRes_Reward { if x != nil { return x.Normal } return nil } func (x *ShowRes_Rewards) GetUserLevel() *ShowRes_UserLevel { if x != nil { return x.UserLevel } return nil } func (x *ShowRes_Rewards) GetLangs() []*ShowRes_Lang { if x != nil { return x.Langs } return nil } func (x *ShowRes_Rewards) GetLangUserLevel() []*ShowRes_LangUserLevel { if x != nil { return x.LangUserLevel } return nil } func (x *ShowRes_Rewards) GetCountry() *ShowRes_Country { if x != nil { return x.Country } return nil } type ShowRes_UserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultLevelId int64 `protobuf:"varint,1,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id DefaultLevelTitle string `protobuf:"bytes,2,opt,name=default_level_title,json=defaultLevelTitle,proto3" json:"default_level_title,omitempty"` //默认用户类型标题 LevelList []*ShowRes_UserLevelOne `protobuf:"bytes,3,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *ShowRes_UserLevel) Reset() { *x = ShowRes_UserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_UserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_UserLevel) ProtoMessage() {} func (x *ShowRes_UserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[259] 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 ShowRes_UserLevel.ProtoReflect.Descriptor instead. func (*ShowRes_UserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 36} } func (x *ShowRes_UserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *ShowRes_UserLevel) GetDefaultLevelTitle() string { if x != nil { return x.DefaultLevelTitle } return "" } func (x *ShowRes_UserLevel) GetLevelList() []*ShowRes_UserLevelOne { if x != nil { return x.LevelList } return nil } type ShowRes_UserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LevelId int64 `protobuf:"varint,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` //用户类型id LevelTitle string `protobuf:"bytes,2,opt,name=level_title,json=levelTitle,proto3" json:"level_title,omitempty"` //用户类型标题 Rewards []*ShowRes_Reward `protobuf:"bytes,3,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *ShowRes_UserLevelOne) Reset() { *x = ShowRes_UserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[260] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_UserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_UserLevelOne) ProtoMessage() {} func (x *ShowRes_UserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[260] 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 ShowRes_UserLevelOne.ProtoReflect.Descriptor instead. func (*ShowRes_UserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 37} } func (x *ShowRes_UserLevelOne) GetLevelId() int64 { if x != nil { return x.LevelId } return 0 } func (x *ShowRes_UserLevelOne) GetLevelTitle() string { if x != nil { return x.LevelTitle } return "" } func (x *ShowRes_UserLevelOne) GetRewards() []*ShowRes_Reward { if x != nil { return x.Rewards } return nil } type ShowRes_Lang struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangType int32 `protobuf:"varint,1,opt,name=lang_type,json=langType,proto3" json:"lang_type,omitempty"` //语言标识数字 LangMark string `protobuf:"bytes,2,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 DefaultLang bool `protobuf:"varint,3,opt,name=default_lang,json=defaultLang,proto3" json:"default_lang,omitempty"` //是否默认语言 Rewards []*ShowRes_Reward `protobuf:"bytes,4,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *ShowRes_Lang) Reset() { *x = ShowRes_Lang{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Lang) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Lang) ProtoMessage() {} func (x *ShowRes_Lang) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[261] 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 ShowRes_Lang.ProtoReflect.Descriptor instead. func (*ShowRes_Lang) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 38} } func (x *ShowRes_Lang) GetLangType() int32 { if x != nil { return x.LangType } return 0 } func (x *ShowRes_Lang) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ShowRes_Lang) GetDefaultLang() bool { if x != nil { return x.DefaultLang } return false } func (x *ShowRes_Lang) GetRewards() []*ShowRes_Reward { if x != nil { return x.Rewards } return nil } type ShowRes_LangUserLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 LangType int32 `protobuf:"varint,2,opt,name=lang_type,json=langType,proto3" json:"lang_type,omitempty"` //语言标识数字 DefaultLang bool `protobuf:"varint,3,opt,name=default_lang,json=defaultLang,proto3" json:"default_lang,omitempty"` //是否默认语言 DefaultLevelId int64 `protobuf:"varint,4,opt,name=default_level_id,json=defaultLevelId,proto3" json:"default_level_id,omitempty"` //默认用户类型id DefaultLevelTitle string `protobuf:"bytes,5,opt,name=default_level_title,json=defaultLevelTitle,proto3" json:"default_level_title,omitempty"` //默认用户类型标题 LevelList []*ShowRes_UserLevelOne `protobuf:"bytes,6,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //用户类型奖品 } func (x *ShowRes_LangUserLevel) Reset() { *x = ShowRes_LangUserLevel{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_LangUserLevel) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_LangUserLevel) ProtoMessage() {} func (x *ShowRes_LangUserLevel) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[262] 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 ShowRes_LangUserLevel.ProtoReflect.Descriptor instead. func (*ShowRes_LangUserLevel) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 39} } func (x *ShowRes_LangUserLevel) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ShowRes_LangUserLevel) GetLangType() int32 { if x != nil { return x.LangType } return 0 } func (x *ShowRes_LangUserLevel) GetDefaultLang() bool { if x != nil { return x.DefaultLang } return false } func (x *ShowRes_LangUserLevel) GetDefaultLevelId() int64 { if x != nil { return x.DefaultLevelId } return 0 } func (x *ShowRes_LangUserLevel) GetDefaultLevelTitle() string { if x != nil { return x.DefaultLevelTitle } return "" } func (x *ShowRes_LangUserLevel) GetLevelList() []*ShowRes_UserLevelOne { if x != nil { return x.LevelList } return nil } type ShowRes_Country struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultCountryMark string `protobuf:"bytes,1,opt,name=default_country_mark,json=defaultCountryMark,proto3" json:"default_country_mark,omitempty"` //默认国家 CountryList []*ShowRes_CountryOne `protobuf:"bytes,2,rep,name=country_list,json=countryList,proto3" json:"country_list,omitempty"` //国家的奖品 } func (x *ShowRes_Country) Reset() { *x = ShowRes_Country{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Country) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Country) ProtoMessage() {} func (x *ShowRes_Country) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[263] 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 ShowRes_Country.ProtoReflect.Descriptor instead. func (*ShowRes_Country) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 40} } func (x *ShowRes_Country) GetDefaultCountryMark() string { if x != nil { return x.DefaultCountryMark } return "" } func (x *ShowRes_Country) GetCountryList() []*ShowRes_CountryOne { if x != nil { return x.CountryList } return nil } type ShowRes_CountryOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CountryMark string `protobuf:"bytes,1,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 Rewards []*ShowRes_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *ShowRes_CountryOne) Reset() { *x = ShowRes_CountryOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_CountryOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_CountryOne) ProtoMessage() {} func (x *ShowRes_CountryOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[264] 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 ShowRes_CountryOne.ProtoReflect.Descriptor instead. func (*ShowRes_CountryOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 41} } func (x *ShowRes_CountryOne) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *ShowRes_CountryOne) GetRewards() []*ShowRes_Reward { if x != nil { return x.Rewards } return nil } type ShowRes_QaQuestion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //题目id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //题目 Score int32 `protobuf:"varint,3,opt,name=score,proto3" json:"score,omitempty"` //得分 Options []*ShowRes_QaOption `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` //选项 } func (x *ShowRes_QaQuestion) Reset() { *x = ShowRes_QaQuestion{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_QaQuestion) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_QaQuestion) ProtoMessage() {} func (x *ShowRes_QaQuestion) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[265] 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 ShowRes_QaQuestion.ProtoReflect.Descriptor instead. func (*ShowRes_QaQuestion) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 42} } func (x *ShowRes_QaQuestion) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_QaQuestion) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_QaQuestion) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ShowRes_QaQuestion) GetOptions() []*ShowRes_QaOption { if x != nil { return x.Options } return nil } type ShowRes_QaOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //答案id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //答案内容 IsRight int32 `protobuf:"varint,3,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确答案(1-是,0-否) } func (x *ShowRes_QaOption) Reset() { *x = ShowRes_QaOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_QaOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_QaOption) ProtoMessage() {} func (x *ShowRes_QaOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[266] 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 ShowRes_QaOption.ProtoReflect.Descriptor instead. func (*ShowRes_QaOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 43} } func (x *ShowRes_QaOption) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_QaOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_QaOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } type ShowRes_QuizOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 IsRight int32 `protobuf:"varint,4,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确选项(1-是,0-否) VoteNum int64 `protobuf:"varint,5,opt,name=vote_num,json=voteNum,proto3" json:"vote_num,omitempty"` //投票人数 } func (x *ShowRes_QuizOption) Reset() { *x = ShowRes_QuizOption{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_QuizOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_QuizOption) ProtoMessage() {} func (x *ShowRes_QuizOption) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[267] 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 ShowRes_QuizOption.ProtoReflect.Descriptor instead. func (*ShowRes_QuizOption) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 44} } func (x *ShowRes_QuizOption) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_QuizOption) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_QuizOption) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRes_QuizOption) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } func (x *ShowRes_QuizOption) GetVoteNum() int64 { if x != nil { return x.VoteNum } return 0 } type ShowRes_Quiz struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的答题机会次数 RewardRule int32 `protobuf:"varint,4,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //奖励规则(1-投票结果排名,2-自定义竞猜结果) OpenPrize int64 `protobuf:"varint,5,opt,name=open_prize,json=openPrize,proto3" json:"open_prize,omitempty"` //开奖时间 Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` //选择标题 OpenType int32 `protobuf:"varint,7,opt,name=open_type,json=openType,proto3" json:"open_type,omitempty"` //开奖状态(1-未开奖,2-已开奖,3-不开奖) Options []*ShowRes_QuizOption `protobuf:"bytes,8,rep,name=options,proto3" json:"options,omitempty"` //有奖竞猜选项 TOpen int64 `protobuf:"varint,9,opt,name=t_open,json=tOpen,proto3" json:"t_open,omitempty"` //偏移对比的开奖北京时间 } func (x *ShowRes_Quiz) Reset() { *x = ShowRes_Quiz{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Quiz) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Quiz) ProtoMessage() {} func (x *ShowRes_Quiz) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[268] 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 ShowRes_Quiz.ProtoReflect.Descriptor instead. func (*ShowRes_Quiz) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 45} } func (x *ShowRes_Quiz) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_Quiz) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Quiz) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_Quiz) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *ShowRes_Quiz) GetOpenPrize() int64 { if x != nil { return x.OpenPrize } return 0 } func (x *ShowRes_Quiz) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRes_Quiz) GetOpenType() int32 { if x != nil { return x.OpenType } return 0 } func (x *ShowRes_Quiz) GetOptions() []*ShowRes_QuizOption { if x != nil { return x.Options } return nil } func (x *ShowRes_Quiz) GetTOpen() int64 { if x != nil { return x.TOpen } return 0 } type ShowRes_QuestionAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //达标条件后可获取的答题次数 InitChance int32 `protobuf:"varint,3,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始答题机会次数 QuestionAskTime int32 `protobuf:"varint,4,opt,name=question_ask_time,json=questionAskTime,proto3" json:"question_ask_time,omitempty"` //答题时间限制(单位:S,如:1 就是1秒) Questions []*ShowRes_QaQuestion `protobuf:"bytes,5,rep,name=questions,proto3" json:"questions,omitempty"` //题目 GroupHashId string `protobuf:"bytes,6,opt,name=group_hash_id,json=groupHashId,proto3" json:"group_hash_id,omitempty"` //题库对外id QaNum int32 `protobuf:"varint,7,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 DayChance int32 `protobuf:"varint,8,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日签到获得的答题数 OpenGuide int32 `protobuf:"varint,9,opt,name=open_guide,json=openGuide,proto3" json:"open_guide,omitempty"` //是否开启引导(0-否,1-是) GuideGroupHashId string `protobuf:"bytes,10,opt,name=guide_group_hash_id,json=guideGroupHashId,proto3" json:"guide_group_hash_id,omitempty"` //引导组hash_id } func (x *ShowRes_QuestionAnswer) Reset() { *x = ShowRes_QuestionAnswer{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_QuestionAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_QuestionAnswer) ProtoMessage() {} func (x *ShowRes_QuestionAnswer) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[269] 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 ShowRes_QuestionAnswer.ProtoReflect.Descriptor instead. func (*ShowRes_QuestionAnswer) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 46} } func (x *ShowRes_QuestionAnswer) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_QuestionAnswer) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_QuestionAnswer) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_QuestionAnswer) GetQuestionAskTime() int32 { if x != nil { return x.QuestionAskTime } return 0 } func (x *ShowRes_QuestionAnswer) GetQuestions() []*ShowRes_QaQuestion { if x != nil { return x.Questions } return nil } func (x *ShowRes_QuestionAnswer) GetGroupHashId() string { if x != nil { return x.GroupHashId } return "" } func (x *ShowRes_QuestionAnswer) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *ShowRes_QuestionAnswer) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *ShowRes_QuestionAnswer) GetOpenGuide() int32 { if x != nil { return x.OpenGuide } return 0 } func (x *ShowRes_QuestionAnswer) GetGuideGroupHashId() string { if x != nil { return x.GuideGroupHashId } return "" } type ShowRes_LotteryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TargetNum int32 `protobuf:"varint,1,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //达标条件需要的新用户个数 InitChance int32 `protobuf:"varint,2,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 Chance int32 `protobuf:"varint,3,opt,name=chance,proto3" json:"chance,omitempty"` //达标获得的抽奖机会次数 DayChance int32 `protobuf:"varint,4,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *ShowRes_LotteryConfig) Reset() { *x = ShowRes_LotteryConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_LotteryConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_LotteryConfig) ProtoMessage() {} func (x *ShowRes_LotteryConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[270] 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 ShowRes_LotteryConfig.ProtoReflect.Descriptor instead. func (*ShowRes_LotteryConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 47} } func (x *ShowRes_LotteryConfig) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_LotteryConfig) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_LotteryConfig) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ShowRes_LotteryConfig) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type ShowRes_InviteConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardLimit int32 `protobuf:"varint,1,opt,name=reward_limit,json=rewardLimit,proto3" json:"reward_limit,omitempty"` //活动总奖励上限 RewardRule int32 `protobuf:"varint,2,opt,name=reward_rule,json=rewardRule,proto3" json:"reward_rule,omitempty"` //用户奖励规则(1-阶梯,2-非阶梯) InviteLimit int32 `protobuf:"varint,3,opt,name=invite_limit,json=inviteLimit,proto3" json:"invite_limit,omitempty"` //邀请超过多少人不能再获得奖励 NewcomerCond int32 `protobuf:"varint,4,opt,name=newcomer_cond,json=newcomerCond,proto3" json:"newcomer_cond,omitempty"` //新人条件(1-新安装,2-助力成功,3-新安装且助力成功) StepLoop int32 `protobuf:"varint,5,opt,name=step_loop,json=stepLoop,proto3" json:"step_loop,omitempty"` //阶梯是否支持循环(0-不支持,1-支持) } func (x *ShowRes_InviteConfig) Reset() { *x = ShowRes_InviteConfig{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[271] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_InviteConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_InviteConfig) ProtoMessage() {} func (x *ShowRes_InviteConfig) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[271] 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 ShowRes_InviteConfig.ProtoReflect.Descriptor instead. func (*ShowRes_InviteConfig) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 48} } func (x *ShowRes_InviteConfig) GetRewardLimit() int32 { if x != nil { return x.RewardLimit } return 0 } func (x *ShowRes_InviteConfig) GetRewardRule() int32 { if x != nil { return x.RewardRule } return 0 } func (x *ShowRes_InviteConfig) GetInviteLimit() int32 { if x != nil { return x.InviteLimit } return 0 } func (x *ShowRes_InviteConfig) GetNewcomerCond() int32 { if x != nil { return x.NewcomerCond } return 0 } func (x *ShowRes_InviteConfig) GetStepLoop() int32 { if x != nil { return x.StepLoop } return 0 } type ShowRes_Sign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SignType int32 `protobuf:"varint,1,opt,name=sign_type,json=signType,proto3" json:"sign_type,omitempty"` //签到类型(1-普通签到,2-阶梯签到) IsContinue int32 `protobuf:"varint,2,opt,name=is_continue,json=isContinue,proto3" json:"is_continue,omitempty"` //是否连续签到(1-是,0-否) HasCard int32 `protobuf:"varint,3,opt,name=has_card,json=hasCard,proto3" json:"has_card,omitempty"` //是否开启签到卡(1-开启,0-不开启) InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //邀请好友数可获得的1张签到卡 LimitCardNum int32 `protobuf:"varint,5,opt,name=limit_card_num,json=limitCardNum,proto3" json:"limit_card_num,omitempty"` //可获得幸运卡的最大张数 IsLoop int32 `protobuf:"varint,6,opt,name=is_loop,json=isLoop,proto3" json:"is_loop,omitempty"` //是否支持循环(0-否,1-是) SignCycle int32 `protobuf:"varint,7,opt,name=sign_cycle,json=signCycle,proto3" json:"sign_cycle,omitempty"` //签到周期 RecycleType int32 `protobuf:"varint,8,opt,name=recycle_type,json=recycleType,proto3" json:"recycle_type,omitempty"` //重新签到模式(1-断签重签,2-周期重签) Color string `protobuf:"bytes,9,opt,name=color,proto3" json:"color,omitempty"` //签到主题颜色 } func (x *ShowRes_Sign) Reset() { *x = ShowRes_Sign{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Sign) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Sign) ProtoMessage() {} func (x *ShowRes_Sign) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[272] 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 ShowRes_Sign.ProtoReflect.Descriptor instead. func (*ShowRes_Sign) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 49} } func (x *ShowRes_Sign) GetSignType() int32 { if x != nil { return x.SignType } return 0 } func (x *ShowRes_Sign) GetIsContinue() int32 { if x != nil { return x.IsContinue } return 0 } func (x *ShowRes_Sign) GetHasCard() int32 { if x != nil { return x.HasCard } return 0 } func (x *ShowRes_Sign) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ShowRes_Sign) GetLimitCardNum() int32 { if x != nil { return x.LimitCardNum } return 0 } func (x *ShowRes_Sign) GetIsLoop() int32 { if x != nil { return x.IsLoop } return 0 } func (x *ShowRes_Sign) GetSignCycle() int32 { if x != nil { return x.SignCycle } return 0 } func (x *ShowRes_Sign) GetRecycleType() int32 { if x != nil { return x.RecycleType } return 0 } func (x *ShowRes_Sign) GetColor() string { if x != nil { return x.Color } return "" } type ShowRes_Dice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始骰子数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的骰子数 FixDice int32 `protobuf:"varint,3,opt,name=fix_dice,json=fixDice,proto3" json:"fix_dice,omitempty"` //开启固定骰子(0-不开启,1-开启) FixDiceTarget int32 `protobuf:"varint,4,opt,name=fix_dice_target,json=fixDiceTarget,proto3" json:"fix_dice_target,omitempty"` //获得固定骰子需要邀请的人数 FixDiceLimit int32 `protobuf:"varint,5,opt,name=fix_dice_limit,json=fixDiceLimit,proto3" json:"fix_dice_limit,omitempty"` //固定骰子限制获取数 CustomDice string `protobuf:"bytes,6,opt,name=custom_dice,json=customDice,proto3" json:"custom_dice,omitempty"` //自定义骰子图片 OpenMapPoint int32 `protobuf:"varint,7,opt,name=open_map_point,json=openMapPoint,proto3" json:"open_map_point,omitempty"` //开启自定义底座(0-不开启,1-开启) MapPoint *ShowRes_MapPoint `protobuf:"bytes,8,opt,name=map_point,json=mapPoint,proto3" json:"map_point,omitempty"` //自定义底座数据 AwardType int32 `protobuf:"varint,9,opt,name=award_type,json=awardType,proto3" json:"award_type,omitempty"` //奖品碎片收集方式(1-随机收集,2-概率收集) OpenInvite int32 `protobuf:"varint,10,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请挂件(0-关闭,1-开启) RollAgain int32 `protobuf:"varint,11,opt,name=roll_again,json=rollAgain,proto3" json:"roll_again,omitempty"` //开启再摇一次(0-关闭,1-开启) FixDiceCond int32 `protobuf:"varint,12,opt,name=fix_dice_cond,json=fixDiceCond,proto3" json:"fix_dice_cond,omitempty"` //邀请事件(1-安装,2-注册) Odds int32 `protobuf:"varint,13,opt,name=odds,proto3" json:"odds,omitempty"` //概率收集方式的中奖概率 PlayImg string `protobuf:"bytes,14,opt,name=play_img,json=playImg,proto3" json:"play_img,omitempty"` //play按钮图 CloudImg string `protobuf:"bytes,15,opt,name=cloud_img,json=cloudImg,proto3" json:"cloud_img,omitempty"` //云朵图 } func (x *ShowRes_Dice) Reset() { *x = ShowRes_Dice{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[273] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Dice) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Dice) ProtoMessage() {} func (x *ShowRes_Dice) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[273] 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 ShowRes_Dice.ProtoReflect.Descriptor instead. func (*ShowRes_Dice) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 50} } func (x *ShowRes_Dice) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Dice) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } func (x *ShowRes_Dice) GetFixDice() int32 { if x != nil { return x.FixDice } return 0 } func (x *ShowRes_Dice) GetFixDiceTarget() int32 { if x != nil { return x.FixDiceTarget } return 0 } func (x *ShowRes_Dice) GetFixDiceLimit() int32 { if x != nil { return x.FixDiceLimit } return 0 } func (x *ShowRes_Dice) GetCustomDice() string { if x != nil { return x.CustomDice } return "" } func (x *ShowRes_Dice) GetOpenMapPoint() int32 { if x != nil { return x.OpenMapPoint } return 0 } func (x *ShowRes_Dice) GetMapPoint() *ShowRes_MapPoint { if x != nil { return x.MapPoint } return nil } func (x *ShowRes_Dice) GetAwardType() int32 { if x != nil { return x.AwardType } return 0 } func (x *ShowRes_Dice) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *ShowRes_Dice) GetRollAgain() int32 { if x != nil { return x.RollAgain } return 0 } func (x *ShowRes_Dice) GetFixDiceCond() int32 { if x != nil { return x.FixDiceCond } return 0 } func (x *ShowRes_Dice) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *ShowRes_Dice) GetPlayImg() string { if x != nil { return x.PlayImg } return "" } func (x *ShowRes_Dice) GetCloudImg() string { if x != nil { return x.CloudImg } return "" } type ShowRes_MapPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Blank string `protobuf:"bytes,1,opt,name=blank,proto3" json:"blank,omitempty"` //空白底座 Again string `protobuf:"bytes,2,opt,name=again,proto3" json:"again,omitempty"` //再摇一次底座 Normal string `protobuf:"bytes,3,opt,name=normal,proto3" json:"normal,omitempty"` //普通奖品底座 Supper string `protobuf:"bytes,4,opt,name=supper,proto3" json:"supper,omitempty"` //超级大奖底座 } func (x *ShowRes_MapPoint) Reset() { *x = ShowRes_MapPoint{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_MapPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_MapPoint) ProtoMessage() {} func (x *ShowRes_MapPoint) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[274] 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 ShowRes_MapPoint.ProtoReflect.Descriptor instead. func (*ShowRes_MapPoint) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 51} } func (x *ShowRes_MapPoint) GetBlank() string { if x != nil { return x.Blank } return "" } func (x *ShowRes_MapPoint) GetAgain() string { if x != nil { return x.Again } return "" } func (x *ShowRes_MapPoint) GetNormal() string { if x != nil { return x.Normal } return "" } func (x *ShowRes_MapPoint) GetSupper() string { if x != nil { return x.Supper } return "" } type ShowRes_Grow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AutoHour int32 `protobuf:"varint,1,opt,name=auto_hour,json=autoHour,proto3" json:"auto_hour,omitempty"` //自动生产成长道具小时数 AutoNum int32 `protobuf:"varint,2,opt,name=auto_num,json=autoNum,proto3" json:"auto_num,omitempty"` //生产的成长道具数 GrowNum int32 `protobuf:"varint,3,opt,name=grow_num,json=growNum,proto3" json:"grow_num,omitempty"` //邀请可获得的成长道具数量 TargetNum int32 `protobuf:"varint,4,opt,name=target_num,json=targetNum,proto3" json:"target_num,omitempty"` //获得成长道具需要邀请的人数 Revive int32 `protobuf:"varint,5,opt,name=revive,proto3" json:"revive,omitempty"` //是否支持复活(0-否,1-是) ReviveNum int32 `protobuf:"varint,6,opt,name=revive_num,json=reviveNum,proto3" json:"revive_num,omitempty"` //复活需要邀请的好友数 DieHour int32 `protobuf:"varint,7,opt,name=die_hour,json=dieHour,proto3" json:"die_hour,omitempty"` //未获得成长道具导致的死亡时间 Steps []*ShowRes_GrowStep `protobuf:"bytes,8,rep,name=steps,proto3" json:"steps,omitempty"` //成长阶段 InitNum int32 `protobuf:"varint,9,opt,name=init_num,json=initNum,proto3" json:"init_num,omitempty"` //初始成长道具数量 } func (x *ShowRes_Grow) Reset() { *x = ShowRes_Grow{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Grow) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Grow) ProtoMessage() {} func (x *ShowRes_Grow) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[275] 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 ShowRes_Grow.ProtoReflect.Descriptor instead. func (*ShowRes_Grow) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 52} } func (x *ShowRes_Grow) GetAutoHour() int32 { if x != nil { return x.AutoHour } return 0 } func (x *ShowRes_Grow) GetAutoNum() int32 { if x != nil { return x.AutoNum } return 0 } func (x *ShowRes_Grow) GetGrowNum() int32 { if x != nil { return x.GrowNum } return 0 } func (x *ShowRes_Grow) GetTargetNum() int32 { if x != nil { return x.TargetNum } return 0 } func (x *ShowRes_Grow) GetRevive() int32 { if x != nil { return x.Revive } return 0 } func (x *ShowRes_Grow) GetReviveNum() int32 { if x != nil { return x.ReviveNum } return 0 } func (x *ShowRes_Grow) GetDieHour() int32 { if x != nil { return x.DieHour } return 0 } func (x *ShowRes_Grow) GetSteps() []*ShowRes_GrowStep { if x != nil { return x.Steps } return nil } func (x *ShowRes_Grow) GetInitNum() int32 { if x != nil { return x.InitNum } return 0 } type ShowRes_GrowStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` //需要的养成道具数量 } func (x *ShowRes_GrowStep) Reset() { *x = ShowRes_GrowStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_GrowStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_GrowStep) ProtoMessage() {} func (x *ShowRes_GrowStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[276] 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 ShowRes_GrowStep.ProtoReflect.Descriptor instead. func (*ShowRes_GrowStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 53} } func (x *ShowRes_GrowStep) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_GrowStep) GetNum() int32 { if x != nil { return x.Num } return 0 } type ShowRes_Ballot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽签数 DayChance int32 `protobuf:"varint,2,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽签数 } func (x *ShowRes_Ballot) Reset() { *x = ShowRes_Ballot{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[277] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Ballot) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Ballot) ProtoMessage() {} func (x *ShowRes_Ballot) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[277] 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 ShowRes_Ballot.ProtoReflect.Descriptor instead. func (*ShowRes_Ballot) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 54} } func (x *ShowRes_Ballot) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Ballot) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type ShowRes_Chop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ShowBar int32 `protobuf:"varint,1,opt,name=show_bar,json=showBar,proto3" json:"show_bar,omitempty"` //是否展示进度条(0-否,1-是) } func (x *ShowRes_Chop) Reset() { *x = ShowRes_Chop{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[278] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Chop) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Chop) ProtoMessage() {} func (x *ShowRes_Chop) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[278] 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 ShowRes_Chop.ProtoReflect.Descriptor instead. func (*ShowRes_Chop) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 55} } func (x *ShowRes_Chop) GetShowBar() int32 { if x != nil { return x.ShowBar } return 0 } type ShowRes_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ExpiredDay int32 `protobuf:"varint,1,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price int32 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,3,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 SpinCash []*ShowRes_SpinCash `protobuf:"bytes,4,rep,name=spin_cash,json=spinCash,proto3" json:"spin_cash,omitempty"` //金额 Lack int32 `protobuf:"varint,5,opt,name=lack,proto3" json:"lack,omitempty"` //是否缺乏库存(0-否,1-是) Currency int32 `protobuf:"varint,6,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 LoopNum int32 `protobuf:"varint,7,opt,name=loop_num,json=loopNum,proto3" json:"loop_num,omitempty"` //支持循环次数 } func (x *ShowRes_Cash) Reset() { *x = ShowRes_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Cash) ProtoMessage() {} func (x *ShowRes_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[279] 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 ShowRes_Cash.ProtoReflect.Descriptor instead. func (*ShowRes_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 56} } func (x *ShowRes_Cash) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *ShowRes_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *ShowRes_Cash) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *ShowRes_Cash) GetSpinCash() []*ShowRes_SpinCash { if x != nil { return x.SpinCash } return nil } func (x *ShowRes_Cash) GetLack() int32 { if x != nil { return x.Lack } return 0 } func (x *ShowRes_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } func (x *ShowRes_Cash) GetLoopNum() int32 { if x != nil { return x.LoopNum } return 0 } type ShowRes_SpinCash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //唯一id Cash float64 `protobuf:"fixed64,2,opt,name=cash,proto3" json:"cash,omitempty"` //单位奖品总价值 } func (x *ShowRes_SpinCash) Reset() { *x = ShowRes_SpinCash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_SpinCash) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_SpinCash) ProtoMessage() {} func (x *ShowRes_SpinCash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[280] 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 ShowRes_SpinCash.ProtoReflect.Descriptor instead. func (*ShowRes_SpinCash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 57} } func (x *ShowRes_SpinCash) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRes_SpinCash) GetCash() float64 { if x != nil { return x.Cash } return 0 } type ShowRes_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InitChance int32 `protobuf:"varint,1,opt,name=init_chance,json=initChance,proto3" json:"init_chance,omitempty"` //初始抽奖机会次数 CardImg string `protobuf:"bytes,2,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 DayChance int32 `protobuf:"varint,3,opt,name=day_chance,json=dayChance,proto3" json:"day_chance,omitempty"` //每日获得的抽奖机会次数 } func (x *ShowRes_Flip) Reset() { *x = ShowRes_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Flip) ProtoMessage() {} func (x *ShowRes_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[281] 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 ShowRes_Flip.ProtoReflect.Descriptor instead. func (*ShowRes_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 58} } func (x *ShowRes_Flip) GetInitChance() int32 { if x != nil { return x.InitChance } return 0 } func (x *ShowRes_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } func (x *ShowRes_Flip) GetDayChance() int32 { if x != nil { return x.DayChance } return 0 } type ShowRes_Keep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Collect int32 `protobuf:"varint,1,opt,name=collect,proto3" json:"collect,omitempty"` //获得最终奖品需要的总收集数 CollectSecond int32 `protobuf:"varint,2,opt,name=collect_second,json=collectSecond,proto3" json:"collect_second,omitempty"` //单个收集需要的二级资源数 OpenInvite int32 `protobuf:"varint,3,opt,name=open_invite,json=openInvite,proto3" json:"open_invite,omitempty"` //开启邀请(0-关闭,1-开启) Invite *ShowRes_Invite `protobuf:"bytes,4,opt,name=invite,proto3" json:"invite,omitempty"` //拉新配置 InitGet int32 `protobuf:"varint,5,opt,name=init_get,json=initGet,proto3" json:"init_get,omitempty"` //初始道具数 SecGet float64 `protobuf:"fixed64,6,opt,name=sec_get,json=secGet,proto3" json:"sec_get,omitempty"` //每秒获得道具数 FeedNum int32 `protobuf:"varint,7,opt,name=feed_num,json=feedNum,proto3" json:"feed_num,omitempty"` //每次使用道具数 FeedCycle int32 `protobuf:"varint,8,opt,name=feed_cycle,json=feedCycle,proto3" json:"feed_cycle,omitempty"` //喂养周期(单位:天) MaxFeed int32 `protobuf:"varint,9,opt,name=max_feed,json=maxFeed,proto3" json:"max_feed,omitempty"` //最大可领养次数 FeedGet int32 `protobuf:"varint,10,opt,name=feed_get,json=feedGet,proto3" json:"feed_get,omitempty"` //喂养能得到的道具数 FeedGetNum int32 `protobuf:"varint,11,opt,name=feed_get_num,json=feedGetNum,proto3" json:"feed_get_num,omitempty"` //得到喂养道具需要的喂养次数 TalkText []*ShowRes_Talk `protobuf:"bytes,12,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Steps []*ShowRes_KeepStep `protobuf:"bytes,13,rep,name=steps,proto3" json:"steps,omitempty"` //养成阶梯 SecGetDayLimit float64 `protobuf:"fixed64,14,opt,name=sec_get_day_limit,json=secGetDayLimit,proto3" json:"sec_get_day_limit,omitempty"` //每秒获得道具每日上限 MachineType int32 `protobuf:"varint,15,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` //狗粮机类型(1-在线收益,2-离线收益) OfflineMin int32 `protobuf:"varint,16,opt,name=offline_min,json=offlineMin,proto3" json:"offline_min,omitempty"` //离线分钟时长 OfflineGet int32 `protobuf:"varint,17,opt,name=offline_get,json=offlineGet,proto3" json:"offline_get,omitempty"` //离线收益最大值 OfflineLimit int32 `protobuf:"varint,18,opt,name=offline_limit,json=offlineLimit,proto3" json:"offline_limit,omitempty"` //离线收益最大领取次数 } func (x *ShowRes_Keep) Reset() { *x = ShowRes_Keep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Keep) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Keep) ProtoMessage() {} func (x *ShowRes_Keep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[282] 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 ShowRes_Keep.ProtoReflect.Descriptor instead. func (*ShowRes_Keep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 59} } func (x *ShowRes_Keep) GetCollect() int32 { if x != nil { return x.Collect } return 0 } func (x *ShowRes_Keep) GetCollectSecond() int32 { if x != nil { return x.CollectSecond } return 0 } func (x *ShowRes_Keep) GetOpenInvite() int32 { if x != nil { return x.OpenInvite } return 0 } func (x *ShowRes_Keep) GetInvite() *ShowRes_Invite { if x != nil { return x.Invite } return nil } func (x *ShowRes_Keep) GetInitGet() int32 { if x != nil { return x.InitGet } return 0 } func (x *ShowRes_Keep) GetSecGet() float64 { if x != nil { return x.SecGet } return 0 } func (x *ShowRes_Keep) GetFeedNum() int32 { if x != nil { return x.FeedNum } return 0 } func (x *ShowRes_Keep) GetFeedCycle() int32 { if x != nil { return x.FeedCycle } return 0 } func (x *ShowRes_Keep) GetMaxFeed() int32 { if x != nil { return x.MaxFeed } return 0 } func (x *ShowRes_Keep) GetFeedGet() int32 { if x != nil { return x.FeedGet } return 0 } func (x *ShowRes_Keep) GetFeedGetNum() int32 { if x != nil { return x.FeedGetNum } return 0 } func (x *ShowRes_Keep) GetTalkText() []*ShowRes_Talk { if x != nil { return x.TalkText } return nil } func (x *ShowRes_Keep) GetSteps() []*ShowRes_KeepStep { if x != nil { return x.Steps } return nil } func (x *ShowRes_Keep) GetSecGetDayLimit() float64 { if x != nil { return x.SecGetDayLimit } return 0 } func (x *ShowRes_Keep) GetMachineType() int32 { if x != nil { return x.MachineType } return 0 } func (x *ShowRes_Keep) GetOfflineMin() int32 { if x != nil { return x.OfflineMin } return 0 } func (x *ShowRes_Keep) GetOfflineGet() int32 { if x != nil { return x.OfflineGet } return 0 } func (x *ShowRes_Keep) GetOfflineLimit() int32 { if x != nil { return x.OfflineLimit } return 0 } type ShowRes_Invite struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InviteType int32 `protobuf:"varint,1,opt,name=invite_type,json=inviteType,proto3" json:"invite_type,omitempty"` //邀请类型(1-下载,2-安装) InviteGet int32 `protobuf:"varint,2,opt,name=invite_get,json=inviteGet,proto3" json:"invite_get,omitempty"` //邀请可获得的道具数量 RewardSelected int32 `protobuf:"varint,3,opt,name=reward_selected,json=rewardSelected,proto3" json:"reward_selected,omitempty"` //选择礼品可获得的道具数 FeedThird int32 `protobuf:"varint,4,opt,name=feed_third,json=feedThird,proto3" json:"feed_third,omitempty"` //喂养3次可获得的道具数 DayFirstInvite int32 `protobuf:"varint,5,opt,name=day_first_invite,json=dayFirstInvite,proto3" json:"day_first_invite,omitempty"` //是否开启每日首次拉新(0-否,1-是) DayFirstGet int32 `protobuf:"varint,6,opt,name=day_first_get,json=dayFirstGet,proto3" json:"day_first_get,omitempty"` //每日首次拉新可获得的道具数 DayFirstSelected int32 `protobuf:"varint,7,opt,name=day_first_selected,json=dayFirstSelected,proto3" json:"day_first_selected,omitempty"` //每日首日选择礼物可获得的道具数 DayFirstThird int32 `protobuf:"varint,8,opt,name=day_first_third,json=dayFirstThird,proto3" json:"day_first_third,omitempty"` //每日首次喂养三次可获得的道具数 InviteMaxGet int32 `protobuf:"varint,9,opt,name=invite_max_get,json=inviteMaxGet,proto3" json:"invite_max_get,omitempty"` //邀请人可获得的最大道具数 } func (x *ShowRes_Invite) Reset() { *x = ShowRes_Invite{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Invite) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Invite) ProtoMessage() {} func (x *ShowRes_Invite) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[283] 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 ShowRes_Invite.ProtoReflect.Descriptor instead. func (*ShowRes_Invite) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 60} } func (x *ShowRes_Invite) GetInviteType() int32 { if x != nil { return x.InviteType } return 0 } func (x *ShowRes_Invite) GetInviteGet() int32 { if x != nil { return x.InviteGet } return 0 } func (x *ShowRes_Invite) GetRewardSelected() int32 { if x != nil { return x.RewardSelected } return 0 } func (x *ShowRes_Invite) GetFeedThird() int32 { if x != nil { return x.FeedThird } return 0 } func (x *ShowRes_Invite) GetDayFirstInvite() int32 { if x != nil { return x.DayFirstInvite } return 0 } func (x *ShowRes_Invite) GetDayFirstGet() int32 { if x != nil { return x.DayFirstGet } return 0 } func (x *ShowRes_Invite) GetDayFirstSelected() int32 { if x != nil { return x.DayFirstSelected } return 0 } func (x *ShowRes_Invite) GetDayFirstThird() int32 { if x != nil { return x.DayFirstThird } return 0 } func (x *ShowRes_Invite) GetInviteMaxGet() int32 { if x != nil { return x.InviteMaxGet } return 0 } type ShowRes_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *ShowRes_Talk) Reset() { *x = ShowRes_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Talk) ProtoMessage() {} func (x *ShowRes_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[284] 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 ShowRes_Talk.ProtoReflect.Descriptor instead. func (*ShowRes_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 61} } func (x *ShowRes_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *ShowRes_Talk) GetContent() string { if x != nil { return x.Content } return "" } type ShowRes_KeepStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"` //阶段 Percent int32 `protobuf:"varint,2,opt,name=percent,proto3" json:"percent,omitempty"` //对应的进度条数值 RewardType int32 `protobuf:"varint,3,opt,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"` //奖品类型(1-成长道具,2-奖品) Reward *ShowRes_Reward `protobuf:"bytes,4,opt,name=reward,proto3" json:"reward,omitempty"` //奖品数据时 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //发放道具数量 } func (x *ShowRes_KeepStep) Reset() { *x = ShowRes_KeepStep{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_KeepStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_KeepStep) ProtoMessage() {} func (x *ShowRes_KeepStep) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[285] 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 ShowRes_KeepStep.ProtoReflect.Descriptor instead. func (*ShowRes_KeepStep) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 62} } func (x *ShowRes_KeepStep) GetStep() int32 { if x != nil { return x.Step } return 0 } func (x *ShowRes_KeepStep) GetPercent() int32 { if x != nil { return x.Percent } return 0 } func (x *ShowRes_KeepStep) GetRewardType() int32 { if x != nil { return x.RewardType } return 0 } func (x *ShowRes_KeepStep) GetReward() *ShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ShowRes_KeepStep) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } type ShowRes_Push struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskReset *ShowRes_PushOne `protobuf:"bytes,1,opt,name=task_reset,json=taskReset,proto3" json:"task_reset,omitempty"` //重制提醒 Active *ShowRes_PushOne `protobuf:"bytes,2,opt,name=active,proto3" json:"active,omitempty"` //活跃提醒 Offline *ShowRes_PushOne `protobuf:"bytes,3,opt,name=offline,proto3" json:"offline,omitempty"` //离线提醒 Visit *ShowRes_PushOne `protobuf:"bytes,4,opt,name=visit,proto3" json:"visit,omitempty"` //访问提醒 } func (x *ShowRes_Push) Reset() { *x = ShowRes_Push{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Push) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Push) ProtoMessage() {} func (x *ShowRes_Push) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[286] 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 ShowRes_Push.ProtoReflect.Descriptor instead. func (*ShowRes_Push) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 63} } func (x *ShowRes_Push) GetTaskReset() *ShowRes_PushOne { if x != nil { return x.TaskReset } return nil } func (x *ShowRes_Push) GetActive() *ShowRes_PushOne { if x != nil { return x.Active } return nil } func (x *ShowRes_Push) GetOffline() *ShowRes_PushOne { if x != nil { return x.Offline } return nil } func (x *ShowRes_Push) GetVisit() *ShowRes_PushOne { if x != nil { return x.Visit } return nil } type ShowRes_PushOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 PushCond []*ShowRes_PushCond `protobuf:"bytes,2,rep,name=push_cond,json=pushCond,proto3" json:"push_cond,omitempty"` //条件内容 } func (x *ShowRes_PushOne) Reset() { *x = ShowRes_PushOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_PushOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_PushOne) ProtoMessage() {} func (x *ShowRes_PushOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[287] 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 ShowRes_PushOne.ProtoReflect.Descriptor instead. func (*ShowRes_PushOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 64} } func (x *ShowRes_PushOne) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRes_PushOne) GetPushCond() []*ShowRes_PushCond { if x != nil { return x.PushCond } return nil } type ShowRes_PushCond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mark string `protobuf:"bytes,1,opt,name=mark,proto3" json:"mark,omitempty"` //条件标识 Val string `protobuf:"bytes,2,opt,name=val,proto3" json:"val,omitempty"` //标识值 } func (x *ShowRes_PushCond) Reset() { *x = ShowRes_PushCond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_PushCond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_PushCond) ProtoMessage() {} func (x *ShowRes_PushCond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[288] 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 ShowRes_PushCond.ProtoReflect.Descriptor instead. func (*ShowRes_PushCond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 65} } func (x *ShowRes_PushCond) GetMark() string { if x != nil { return x.Mark } return "" } func (x *ShowRes_PushCond) GetVal() string { if x != nil { return x.Val } return "" } type ShowRes_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoldNum int32 `protobuf:"varint,1,opt,name=gold_num,json=goldNum,proto3" json:"gold_num,omitempty"` //任务重置天数 ExpiredDay int32 `protobuf:"varint,2,opt,name=expired_day,json=expiredDay,proto3" json:"expired_day,omitempty"` //任务重置天数 Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 PriceNum int32 `protobuf:"varint,4,opt,name=price_num,json=priceNum,proto3" json:"price_num,omitempty"` //奖品总份额 Currency int32 `protobuf:"varint,5,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 SpinCash []*ShowRes_SpinCash `protobuf:"bytes,6,rep,name=spin_cash,json=spinCash,proto3" json:"spin_cash,omitempty"` //金额 Lack int32 `protobuf:"varint,7,opt,name=lack,proto3" json:"lack,omitempty"` //是否缺乏库存(0-否,1-是) } func (x *ShowRes_Gold) Reset() { *x = ShowRes_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Gold) ProtoMessage() {} func (x *ShowRes_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[289] 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 ShowRes_Gold.ProtoReflect.Descriptor instead. func (*ShowRes_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 66} } func (x *ShowRes_Gold) GetGoldNum() int32 { if x != nil { return x.GoldNum } return 0 } func (x *ShowRes_Gold) GetExpiredDay() int32 { if x != nil { return x.ExpiredDay } return 0 } func (x *ShowRes_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *ShowRes_Gold) GetPriceNum() int32 { if x != nil { return x.PriceNum } return 0 } func (x *ShowRes_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } func (x *ShowRes_Gold) GetSpinCash() []*ShowRes_SpinCash { if x != nil { return x.SpinCash } return nil } func (x *ShowRes_Gold) GetLack() int32 { if x != nil { return x.Lack } return 0 } type ShowRes_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CoinImg string `protobuf:"bytes,1,opt,name=coin_img,json=coinImg,proto3" json:"coin_img,omitempty"` //金币图片 OpenDays int32 `protobuf:"varint,2,opt,name=open_days,json=openDays,proto3" json:"open_days,omitempty"` //开奖天数 OpenLimit int32 `protobuf:"varint,3,opt,name=open_limit,json=openLimit,proto3" json:"open_limit,omitempty"` //开奖次数限制 InitCoin int32 `protobuf:"varint,4,opt,name=init_coin,json=initCoin,proto3" json:"init_coin,omitempty"` //初始金币数 InitUse int32 `protobuf:"varint,5,opt,name=init_use,json=initUse,proto3" json:"init_use,omitempty"` //初始投放次数 UseCoin int32 `protobuf:"varint,6,opt,name=use_coin,json=useCoin,proto3" json:"use_coin,omitempty"` //单次投放消耗金币数 UseLimit int32 `protobuf:"varint,7,opt,name=use_limit,json=useLimit,proto3" json:"use_limit,omitempty"` //单次瓜分最多投放次数 UrlId int64 `protobuf:"varint,8,opt,name=url_id,json=urlId,proto3" json:"url_id,omitempty"` //回调地址id LackBtn []int32 `protobuf:"varint,9,rep,packed,name=lack_btn,json=lackBtn,proto3" json:"lack_btn,omitempty"` //金币不足展示的按钮(1-做任务,2-自定义按钮)[1,2] CustomBtnText string `protobuf:"bytes,10,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,11,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,12,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomBtnId int64 `protobuf:"varint,13,opt,name=custom_btn_id,json=customBtnId,proto3" json:"custom_btn_id,omitempty"` //自定义按钮ID CustomPcParam string `protobuf:"bytes,14,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *ShowRes_Coin) Reset() { *x = ShowRes_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRes_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRes_Coin) ProtoMessage() {} func (x *ShowRes_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[290] 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 ShowRes_Coin.ProtoReflect.Descriptor instead. func (*ShowRes_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{13, 67} } func (x *ShowRes_Coin) GetCoinImg() string { if x != nil { return x.CoinImg } return "" } func (x *ShowRes_Coin) GetOpenDays() int32 { if x != nil { return x.OpenDays } return 0 } func (x *ShowRes_Coin) GetOpenLimit() int32 { if x != nil { return x.OpenLimit } return 0 } func (x *ShowRes_Coin) GetInitCoin() int32 { if x != nil { return x.InitCoin } return 0 } func (x *ShowRes_Coin) GetInitUse() int32 { if x != nil { return x.InitUse } return 0 } func (x *ShowRes_Coin) GetUseCoin() int32 { if x != nil { return x.UseCoin } return 0 } func (x *ShowRes_Coin) GetUseLimit() int32 { if x != nil { return x.UseLimit } return 0 } func (x *ShowRes_Coin) GetUrlId() int64 { if x != nil { return x.UrlId } return 0 } func (x *ShowRes_Coin) GetLackBtn() []int32 { if x != nil { return x.LackBtn } return nil } func (x *ShowRes_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *ShowRes_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *ShowRes_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *ShowRes_Coin) GetCustomBtnId() int64 { if x != nil { return x.CustomBtnId } return 0 } func (x *ShowRes_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type ChannelListRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //渠道id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //渠道标题 IsDefault int32 `protobuf:"varint,3,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"` //是否是默认值(0-否,1-是) Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` //渠道链接 Code string `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"` //口令码 } func (x *ChannelListRes_One) Reset() { *x = ChannelListRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChannelListRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChannelListRes_One) ProtoMessage() {} func (x *ChannelListRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[291] 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 ChannelListRes_One.ProtoReflect.Descriptor instead. func (*ChannelListRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{15, 0} } func (x *ChannelListRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChannelListRes_One) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChannelListRes_One) GetIsDefault() int32 { if x != nil { return x.IsDefault } return 0 } func (x *ChannelListRes_One) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ChannelListRes_One) GetCode() string { if x != nil { return x.Code } return "" } type KvDataRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //对应字段名 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //对应字段值 } func (x *KvDataRes_KV) Reset() { *x = KvDataRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[292] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KvDataRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*KvDataRes_KV) ProtoMessage() {} func (x *KvDataRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[292] 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 KvDataRes_KV.ProtoReflect.Descriptor instead. func (*KvDataRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{23, 0} } func (x *KvDataRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *KvDataRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type BarrageRes_TranContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mark string `protobuf:"bytes,1,opt,name=mark,proto3" json:"mark,omitempty"` //语言包标识 ReplaceKv []*BarrageRes_KV `protobuf:"bytes,2,rep,name=replace_kv,json=replaceKv,proto3" json:"replace_kv,omitempty"` //是否是默认值(0-否,1-是) RewardImg string `protobuf:"bytes,3,opt,name=reward_img,json=rewardImg,proto3" json:"reward_img,omitempty"` //奖品图片 } func (x *BarrageRes_TranContent) Reset() { *x = BarrageRes_TranContent{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[293] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BarrageRes_TranContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*BarrageRes_TranContent) ProtoMessage() {} func (x *BarrageRes_TranContent) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[293] 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 BarrageRes_TranContent.ProtoReflect.Descriptor instead. func (*BarrageRes_TranContent) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{27, 0} } func (x *BarrageRes_TranContent) GetMark() string { if x != nil { return x.Mark } return "" } func (x *BarrageRes_TranContent) GetReplaceKv() []*BarrageRes_KV { if x != nil { return x.ReplaceKv } return nil } func (x *BarrageRes_TranContent) GetRewardImg() string { if x != nil { return x.RewardImg } return "" } type BarrageRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //语言包中变量的替换关键字 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //replace的值 } func (x *BarrageRes_KV) Reset() { *x = BarrageRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[294] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BarrageRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*BarrageRes_KV) ProtoMessage() {} func (x *BarrageRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[294] 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 BarrageRes_KV.ProtoReflect.Descriptor instead. func (*BarrageRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{27, 1} } func (x *BarrageRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *BarrageRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type OptionRes_Option struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 IsRight int32 `protobuf:"varint,4,opt,name=is_right,json=isRight,proto3" json:"is_right,omitempty"` //是否正确选项(1-是,0-否) VoteNum int64 `protobuf:"varint,5,opt,name=vote_num,json=voteNum,proto3" json:"vote_num,omitempty"` //投票人数 } func (x *OptionRes_Option) Reset() { *x = OptionRes_Option{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[295] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OptionRes_Option) String() string { return protoimpl.X.MessageStringOf(x) } func (*OptionRes_Option) ProtoMessage() {} func (x *OptionRes_Option) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[295] 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 OptionRes_Option.ProtoReflect.Descriptor instead. func (*OptionRes_Option) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{29, 0} } func (x *OptionRes_Option) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *OptionRes_Option) GetTitle() string { if x != nil { return x.Title } return "" } func (x *OptionRes_Option) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *OptionRes_Option) GetIsRight() int32 { if x != nil { return x.IsRight } return 0 } func (x *OptionRes_Option) GetVoteNum() int64 { if x != nil { return x.VoteNum } return 0 } type LangsRes_Lang struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HashId string `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //语言配置信息ID IsDefault bool `protobuf:"varint,2,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"` //是否默认配置语言 LangMark string `protobuf:"bytes,3,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言对应的唯一标识 LangType int32 `protobuf:"varint,4,opt,name=lang_type,json=langType,proto3" json:"lang_type,omitempty"` //语言数字类型唯一标识 PageTitle string `protobuf:"bytes,5,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"` //页面标题 ImageMain string `protobuf:"bytes,6,opt,name=image_main,json=imageMain,proto3" json:"image_main,omitempty"` //活动主图 DownloadPageImage string `protobuf:"bytes,7,opt,name=download_page_image,json=downloadPageImage,proto3" json:"download_page_image,omitempty"` //下载引导页的图片 WechatPageImage string `protobuf:"bytes,8,opt,name=wechat_page_image,json=wechatPageImage,proto3" json:"wechat_page_image,omitempty"` //微信引导页的图片 ContentImg string `protobuf:"bytes,9,opt,name=content_img,json=contentImg,proto3" json:"content_img,omitempty"` //内容背景图 WebBgImg string `protobuf:"bytes,10,opt,name=web_bg_img,json=webBgImg,proto3" json:"web_bg_img,omitempty"` //站外背景图地址 WarmUpImg string `protobuf:"bytes,11,opt,name=warm_up_img,json=warmUpImg,proto3" json:"warm_up_img,omitempty"` //预热海报图 DlBgImg string `protobuf:"bytes,12,opt,name=dl_bg_img,json=dlBgImg,proto3" json:"dl_bg_img,omitempty"` //引导页背景图 DlBannerImg string `protobuf:"bytes,13,opt,name=dl_banner_img,json=dlBannerImg,proto3" json:"dl_banner_img,omitempty"` //下载页横幅自定义图 DlBannerAppLogo string `protobuf:"bytes,14,opt,name=dl_banner_app_logo,json=dlBannerAppLogo,proto3" json:"dl_banner_app_logo,omitempty"` //下载页横幅applogo图片 DlBannerAppName string `protobuf:"bytes,15,opt,name=dl_banner_app_name,json=dlBannerAppName,proto3" json:"dl_banner_app_name,omitempty"` //下载页横幅app名称 DlBannerAppBtn string `protobuf:"bytes,16,opt,name=dl_banner_app_btn,json=dlBannerAppBtn,proto3" json:"dl_banner_app_btn,omitempty"` //下载页横幅app按钮文案 ShareText string `protobuf:"bytes,17,opt,name=share_text,json=shareText,proto3" json:"share_text,omitempty"` //分享文案 ShareImg string `protobuf:"bytes,18,opt,name=share_img,json=shareImg,proto3" json:"share_img,omitempty"` //分享图片 Rule string `protobuf:"bytes,19,opt,name=rule,proto3" json:"rule,omitempty"` //活动规则 Conds []*LangsRes_Cond `protobuf:"bytes,20,rep,name=conds,proto3" json:"conds,omitempty"` //事件驱动的条件描述 Quit *LangsRes_Quit `protobuf:"bytes,21,opt,name=quit,proto3" json:"quit,omitempty"` //赛事竞猜选项翻译 Questions []*LangsRes_Question `protobuf:"bytes,22,rep,name=questions,proto3" json:"questions,omitempty"` //问题翻译 Wait bool `protobuf:"varint,23,opt,name=wait,proto3" json:"wait,omitempty"` //是否待配置 Rewards *LangsRes_Rewards `protobuf:"bytes,24,opt,name=rewards,proto3" json:"rewards,omitempty"` //站内奖品 RewardsWeb []*LangsRes_Reward `protobuf:"bytes,25,rep,name=rewards_web,json=rewardsWeb,proto3" json:"rewards_web,omitempty"` //站外奖品 RewardsExtra []*LangsRes_Reward `protobuf:"bytes,26,rep,name=rewards_extra,json=rewardsExtra,proto3" json:"rewards_extra,omitempty"` //额外奖品 RewardsNewcomer []*LangsRes_Reward `protobuf:"bytes,27,rep,name=rewards_newcomer,json=rewardsNewcomer,proto3" json:"rewards_newcomer,omitempty"` //新人奖 LongImgs []*LangsRes_LongImg `protobuf:"bytes,28,rep,name=long_imgs,json=longImgs,proto3" json:"long_imgs,omitempty"` //长图配置 Cash *LangsRes_Cash `protobuf:"bytes,29,opt,name=cash,proto3" json:"cash,omitempty"` //现金抽奖配置 TOffset int32 `protobuf:"varint,30,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //时区偏移值 TStart int64 `protobuf:"varint,31,opt,name=t_start,json=tStart,proto3" json:"t_start,omitempty"` //开始时间 TEnd int64 `protobuf:"varint,32,opt,name=t_end,json=tEnd,proto3" json:"t_end,omitempty"` //结束时间 QaGroup *LangsRes_QaGroup `protobuf:"bytes,33,opt,name=qa_group,json=qaGroup,proto3" json:"qa_group,omitempty"` //题库数据 TalkText []*LangsRes_Talk `protobuf:"bytes,34,rep,name=talk_text,json=talkText,proto3" json:"talk_text,omitempty"` //对话文案 Gold *LangsRes_Gold `protobuf:"bytes,35,opt,name=gold,proto3" json:"gold,omitempty"` //金币任务配置 Coin *LangsRes_Coin `protobuf:"bytes,36,opt,name=coin,proto3" json:"coin,omitempty"` //金币池配置 TopicColor string `protobuf:"bytes,37,opt,name=topic_color,json=topicColor,proto3" json:"topic_color,omitempty"` //主题色 PcBg string `protobuf:"bytes,38,opt,name=pc_bg,json=pcBg,proto3" json:"pc_bg,omitempty"` //pc背景 RuleImg string `protobuf:"bytes,39,opt,name=rule_img,json=ruleImg,proto3" json:"rule_img,omitempty"` //规则展示图 Schedules []*LangsRes_Schedule `protobuf:"bytes,40,rep,name=schedules,proto3" json:"schedules,omitempty"` //赛事时间表 Uno *LangsRes_Uno `protobuf:"bytes,41,opt,name=uno,proto3" json:"uno,omitempty"` //uno卡牌配置 } func (x *LangsRes_Lang) Reset() { *x = LangsRes_Lang{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[296] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Lang) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Lang) ProtoMessage() {} func (x *LangsRes_Lang) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[296] 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 LangsRes_Lang.ProtoReflect.Descriptor instead. func (*LangsRes_Lang) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 0} } func (x *LangsRes_Lang) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *LangsRes_Lang) GetIsDefault() bool { if x != nil { return x.IsDefault } return false } func (x *LangsRes_Lang) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *LangsRes_Lang) GetLangType() int32 { if x != nil { return x.LangType } return 0 } func (x *LangsRes_Lang) GetPageTitle() string { if x != nil { return x.PageTitle } return "" } func (x *LangsRes_Lang) GetImageMain() string { if x != nil { return x.ImageMain } return "" } func (x *LangsRes_Lang) GetDownloadPageImage() string { if x != nil { return x.DownloadPageImage } return "" } func (x *LangsRes_Lang) GetWechatPageImage() string { if x != nil { return x.WechatPageImage } return "" } func (x *LangsRes_Lang) GetContentImg() string { if x != nil { return x.ContentImg } return "" } func (x *LangsRes_Lang) GetWebBgImg() string { if x != nil { return x.WebBgImg } return "" } func (x *LangsRes_Lang) GetWarmUpImg() string { if x != nil { return x.WarmUpImg } return "" } func (x *LangsRes_Lang) GetDlBgImg() string { if x != nil { return x.DlBgImg } return "" } func (x *LangsRes_Lang) GetDlBannerImg() string { if x != nil { return x.DlBannerImg } return "" } func (x *LangsRes_Lang) GetDlBannerAppLogo() string { if x != nil { return x.DlBannerAppLogo } return "" } func (x *LangsRes_Lang) GetDlBannerAppName() string { if x != nil { return x.DlBannerAppName } return "" } func (x *LangsRes_Lang) GetDlBannerAppBtn() string { if x != nil { return x.DlBannerAppBtn } return "" } func (x *LangsRes_Lang) GetShareText() string { if x != nil { return x.ShareText } return "" } func (x *LangsRes_Lang) GetShareImg() string { if x != nil { return x.ShareImg } return "" } func (x *LangsRes_Lang) GetRule() string { if x != nil { return x.Rule } return "" } func (x *LangsRes_Lang) GetConds() []*LangsRes_Cond { if x != nil { return x.Conds } return nil } func (x *LangsRes_Lang) GetQuit() *LangsRes_Quit { if x != nil { return x.Quit } return nil } func (x *LangsRes_Lang) GetQuestions() []*LangsRes_Question { if x != nil { return x.Questions } return nil } func (x *LangsRes_Lang) GetWait() bool { if x != nil { return x.Wait } return false } func (x *LangsRes_Lang) GetRewards() *LangsRes_Rewards { if x != nil { return x.Rewards } return nil } func (x *LangsRes_Lang) GetRewardsWeb() []*LangsRes_Reward { if x != nil { return x.RewardsWeb } return nil } func (x *LangsRes_Lang) GetRewardsExtra() []*LangsRes_Reward { if x != nil { return x.RewardsExtra } return nil } func (x *LangsRes_Lang) GetRewardsNewcomer() []*LangsRes_Reward { if x != nil { return x.RewardsNewcomer } return nil } func (x *LangsRes_Lang) GetLongImgs() []*LangsRes_LongImg { if x != nil { return x.LongImgs } return nil } func (x *LangsRes_Lang) GetCash() *LangsRes_Cash { if x != nil { return x.Cash } return nil } func (x *LangsRes_Lang) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } func (x *LangsRes_Lang) GetTStart() int64 { if x != nil { return x.TStart } return 0 } func (x *LangsRes_Lang) GetTEnd() int64 { if x != nil { return x.TEnd } return 0 } func (x *LangsRes_Lang) GetQaGroup() *LangsRes_QaGroup { if x != nil { return x.QaGroup } return nil } func (x *LangsRes_Lang) GetTalkText() []*LangsRes_Talk { if x != nil { return x.TalkText } return nil } func (x *LangsRes_Lang) GetGold() *LangsRes_Gold { if x != nil { return x.Gold } return nil } func (x *LangsRes_Lang) GetCoin() *LangsRes_Coin { if x != nil { return x.Coin } return nil } func (x *LangsRes_Lang) GetTopicColor() string { if x != nil { return x.TopicColor } return "" } func (x *LangsRes_Lang) GetPcBg() string { if x != nil { return x.PcBg } return "" } func (x *LangsRes_Lang) GetRuleImg() string { if x != nil { return x.RuleImg } return "" } func (x *LangsRes_Lang) GetSchedules() []*LangsRes_Schedule { if x != nil { return x.Schedules } return nil } func (x *LangsRes_Lang) GetUno() *LangsRes_Uno { if x != nil { return x.Uno } return nil } type LangsRes_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Red []*LangsRes_UnoCard `protobuf:"bytes,1,rep,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow []*LangsRes_UnoCard `protobuf:"bytes,2,rep,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue []*LangsRes_UnoCard `protobuf:"bytes,3,rep,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green []*LangsRes_UnoCard `protobuf:"bytes,4,rep,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *LangsRes_Uno) Reset() { *x = LangsRes_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[297] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Uno) ProtoMessage() {} func (x *LangsRes_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[297] 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 LangsRes_Uno.ProtoReflect.Descriptor instead. func (*LangsRes_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 1} } func (x *LangsRes_Uno) GetRed() []*LangsRes_UnoCard { if x != nil { return x.Red } return nil } func (x *LangsRes_Uno) GetYellow() []*LangsRes_UnoCard { if x != nil { return x.Yellow } return nil } func (x *LangsRes_Uno) GetBlue() []*LangsRes_UnoCard { if x != nil { return x.Blue } return nil } func (x *LangsRes_Uno) GetGreen() []*LangsRes_UnoCard { if x != nil { return x.Green } return nil } type LangsRes_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,5,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 } func (x *LangsRes_UnoCard) Reset() { *x = LangsRes_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_UnoCard) ProtoMessage() {} func (x *LangsRes_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[298] 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 LangsRes_UnoCard.ProtoReflect.Descriptor instead. func (*LangsRes_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 2} } func (x *LangsRes_UnoCard) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangsRes_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *LangsRes_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangsRes_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangsRes_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangsRes_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PkTeams []*LangsRes_PkTeam `protobuf:"bytes,2,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *LangsRes_Schedule) Reset() { *x = LangsRes_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Schedule) ProtoMessage() {} func (x *LangsRes_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[299] 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 LangsRes_Schedule.ProtoReflect.Descriptor instead. func (*LangsRes_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 3} } func (x *LangsRes_Schedule) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *LangsRes_Schedule) GetPkTeams() []*LangsRes_PkTeam { if x != nil { return x.PkTeams } return nil } type LangsRes_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id Teams []*LangsRes_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VsImg string `protobuf:"bytes,3,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 } func (x *LangsRes_PkTeam) Reset() { *x = LangsRes_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_PkTeam) ProtoMessage() {} func (x *LangsRes_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[300] 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 LangsRes_PkTeam.ProtoReflect.Descriptor instead. func (*LangsRes_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 4} } func (x *LangsRes_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangsRes_PkTeam) GetTeams() []*LangsRes_Team { if x != nil { return x.Teams } return nil } func (x *LangsRes_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *LangsRes_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } type LangsRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *LangsRes_Team) Reset() { *x = LangsRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Team) ProtoMessage() {} func (x *LangsRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[301] 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 LangsRes_Team.ProtoReflect.Descriptor instead. func (*LangsRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 5} } func (x *LangsRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangsRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *LangsRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type LangsRes_QaGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaGroupId string `protobuf:"bytes,1,opt,name=qa_group_id,json=qaGroupId,proto3" json:"qa_group_id,omitempty"` //题库hash_id QaNum int32 `protobuf:"varint,2,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //题库标题 OpenGuide int32 `protobuf:"varint,4,opt,name=open_guide,json=openGuide,proto3" json:"open_guide,omitempty"` //是否开启引导(0-否,1-是) GuideGroupId string `protobuf:"bytes,5,opt,name=guide_group_id,json=guideGroupId,proto3" json:"guide_group_id,omitempty"` //引导组hash_id } func (x *LangsRes_QaGroup) Reset() { *x = LangsRes_QaGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_QaGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_QaGroup) ProtoMessage() {} func (x *LangsRes_QaGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[302] 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 LangsRes_QaGroup.ProtoReflect.Descriptor instead. func (*LangsRes_QaGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 6} } func (x *LangsRes_QaGroup) GetQaGroupId() string { if x != nil { return x.QaGroupId } return "" } func (x *LangsRes_QaGroup) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *LangsRes_QaGroup) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_QaGroup) GetOpenGuide() int32 { if x != nil { return x.OpenGuide } return 0 } func (x *LangsRes_QaGroup) GetGuideGroupId() string { if x != nil { return x.GuideGroupId } return "" } type LangsRes_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *LangsRes_Talk) Reset() { *x = LangsRes_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Talk) ProtoMessage() {} func (x *LangsRes_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[303] 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 LangsRes_Talk.ProtoReflect.Descriptor instead. func (*LangsRes_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 7} } func (x *LangsRes_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *LangsRes_Talk) GetContent() string { if x != nil { return x.Content } return "" } type LangsRes_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price int32 `protobuf:"varint,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *LangsRes_Cash) Reset() { *x = LangsRes_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Cash) ProtoMessage() {} func (x *LangsRes_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[304] 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 LangsRes_Cash.ProtoReflect.Descriptor instead. func (*LangsRes_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 8} } func (x *LangsRes_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *LangsRes_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type LangsRes_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price float64 `protobuf:"fixed64,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *LangsRes_Gold) Reset() { *x = LangsRes_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Gold) ProtoMessage() {} func (x *LangsRes_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[305] 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 LangsRes_Gold.ProtoReflect.Descriptor instead. func (*LangsRes_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 9} } func (x *LangsRes_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *LangsRes_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type LangsRes_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomBtnText string `protobuf:"bytes,1,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,2,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,3,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomPcParam string `protobuf:"bytes,4,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *LangsRes_Coin) Reset() { *x = LangsRes_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Coin) ProtoMessage() {} func (x *LangsRes_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[306] 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 LangsRes_Coin.ProtoReflect.Descriptor instead. func (*LangsRes_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 10} } func (x *LangsRes_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *LangsRes_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *LangsRes_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *LangsRes_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type LangsRes_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 Id int64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` //长图id ClickType int32 `protobuf:"varint,5,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*LangsRes_HotZone `protobuf:"bytes,6,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,9,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 LangSourceId int64 `protobuf:"varint,10,opt,name=lang_source_id,json=langSourceId,proto3" json:"lang_source_id,omitempty"` //语言长图源ID } func (x *LangsRes_LongImg) Reset() { *x = LangsRes_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[307] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_LongImg) ProtoMessage() {} func (x *LangsRes_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[307] 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 LangsRes_LongImg.ProtoReflect.Descriptor instead. func (*LangsRes_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 11} } func (x *LangsRes_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *LangsRes_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangsRes_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangsRes_LongImg) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangsRes_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *LangsRes_LongImg) GetHotZone() []*LangsRes_HotZone { if x != nil { return x.HotZone } return nil } func (x *LangsRes_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *LangsRes_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *LangsRes_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *LangsRes_LongImg) GetLangSourceId() int64 { if x != nil { return x.LangSourceId } return 0 } type LangsRes_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //热区id WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,4,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,5,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,6,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,7,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,8,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,10,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *LangsRes_HotZone) Reset() { *x = LangsRes_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[308] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_HotZone) ProtoMessage() {} func (x *LangsRes_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[308] 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 LangsRes_HotZone.ProtoReflect.Descriptor instead. func (*LangsRes_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 12} } func (x *LangsRes_HotZone) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangsRes_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangsRes_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangsRes_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *LangsRes_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *LangsRes_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *LangsRes_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *LangsRes_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *LangsRes_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *LangsRes_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangsRes_Rewards struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Normal []*LangsRes_Reward `protobuf:"bytes,1,rep,name=normal,proto3" json:"normal,omitempty"` //常规奖品 UserLevel []*LangsRes_UserLevelOne `protobuf:"bytes,2,rep,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` //用户类型奖品 Langs []*LangsRes_Reward `protobuf:"bytes,3,rep,name=langs,proto3" json:"langs,omitempty"` //语言奖品 LangUserLevel []*LangsRes_UserLevelOne `protobuf:"bytes,4,rep,name=lang_user_level,json=langUserLevel,proto3" json:"lang_user_level,omitempty"` //语言+用户类型奖品 Country []*LangsRes_CountryOne `protobuf:"bytes,5,rep,name=country,proto3" json:"country,omitempty"` //国家奖品 } func (x *LangsRes_Rewards) Reset() { *x = LangsRes_Rewards{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[309] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Rewards) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Rewards) ProtoMessage() {} func (x *LangsRes_Rewards) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[309] 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 LangsRes_Rewards.ProtoReflect.Descriptor instead. func (*LangsRes_Rewards) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 13} } func (x *LangsRes_Rewards) GetNormal() []*LangsRes_Reward { if x != nil { return x.Normal } return nil } func (x *LangsRes_Rewards) GetUserLevel() []*LangsRes_UserLevelOne { if x != nil { return x.UserLevel } return nil } func (x *LangsRes_Rewards) GetLangs() []*LangsRes_Reward { if x != nil { return x.Langs } return nil } func (x *LangsRes_Rewards) GetLangUserLevel() []*LangsRes_UserLevelOne { if x != nil { return x.LangUserLevel } return nil } func (x *LangsRes_Rewards) GetCountry() []*LangsRes_CountryOne { if x != nil { return x.Country } return nil } type LangsRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardId int64 `protobuf:"varint,1,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库奖品id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片 FindDefault bool `protobuf:"varint,4,opt,name=find_default,json=findDefault,proto3" json:"find_default,omitempty"` //是否只能显示默认奖品 } func (x *LangsRes_Reward) Reset() { *x = LangsRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[310] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Reward) ProtoMessage() {} func (x *LangsRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[310] 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 LangsRes_Reward.ProtoReflect.Descriptor instead. func (*LangsRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 14} } func (x *LangsRes_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *LangsRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_Reward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *LangsRes_Reward) GetFindDefault() bool { if x != nil { return x.FindDefault } return false } type LangsRes_UserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LevelId int64 `protobuf:"varint,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` //用户类型id LevelTitle string `protobuf:"bytes,2,opt,name=level_title,json=levelTitle,proto3" json:"level_title,omitempty"` //用户等级名称 Rewards []*LangsRes_Reward `protobuf:"bytes,3,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *LangsRes_UserLevelOne) Reset() { *x = LangsRes_UserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_UserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_UserLevelOne) ProtoMessage() {} func (x *LangsRes_UserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[311] 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 LangsRes_UserLevelOne.ProtoReflect.Descriptor instead. func (*LangsRes_UserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 15} } func (x *LangsRes_UserLevelOne) GetLevelId() int64 { if x != nil { return x.LevelId } return 0 } func (x *LangsRes_UserLevelOne) GetLevelTitle() string { if x != nil { return x.LevelTitle } return "" } func (x *LangsRes_UserLevelOne) GetRewards() []*LangsRes_Reward { if x != nil { return x.Rewards } return nil } type LangsRes_CountryOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CountryMark string `protobuf:"bytes,1,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家类型标识 Rewards []*LangsRes_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *LangsRes_CountryOne) Reset() { *x = LangsRes_CountryOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_CountryOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_CountryOne) ProtoMessage() {} func (x *LangsRes_CountryOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[312] 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 LangsRes_CountryOne.ProtoReflect.Descriptor instead. func (*LangsRes_CountryOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 16} } func (x *LangsRes_CountryOne) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *LangsRes_CountryOne) GetRewards() []*LangsRes_Reward { if x != nil { return x.Rewards } return nil } type LangsRes_Quit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //标题 Options []*LangsRes_Option `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *LangsRes_Quit) Reset() { *x = LangsRes_Quit{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Quit) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Quit) ProtoMessage() {} func (x *LangsRes_Quit) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[313] 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 LangsRes_Quit.ProtoReflect.Descriptor instead. func (*LangsRes_Quit) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 17} } func (x *LangsRes_Quit) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_Quit) GetOptions() []*LangsRes_Option { if x != nil { return x.Options } return nil } type LangsRes_Option struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OptionId int64 `protobuf:"varint,1,opt,name=option_id,json=optionId,proto3" json:"option_id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 } func (x *LangsRes_Option) Reset() { *x = LangsRes_Option{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Option) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Option) ProtoMessage() {} func (x *LangsRes_Option) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[314] 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 LangsRes_Option.ProtoReflect.Descriptor instead. func (*LangsRes_Option) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 18} } func (x *LangsRes_Option) GetOptionId() int64 { if x != nil { return x.OptionId } return 0 } func (x *LangsRes_Option) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_Option) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } type LangsRes_Question struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaId int64 `protobuf:"varint,1,opt,name=qa_id,json=qaId,proto3" json:"qa_id,omitempty"` //问题id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //题目 Options []*LangsRes_Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *LangsRes_Question) Reset() { *x = LangsRes_Question{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Question) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Question) ProtoMessage() {} func (x *LangsRes_Question) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[315] 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 LangsRes_Question.ProtoReflect.Descriptor instead. func (*LangsRes_Question) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 19} } func (x *LangsRes_Question) GetQaId() int64 { if x != nil { return x.QaId } return 0 } func (x *LangsRes_Question) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangsRes_Question) GetOptions() []*LangsRes_Option { if x != nil { return x.Options } return nil } type LangsRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CondId int64 `protobuf:"varint,1,opt,name=cond_id,json=condId,proto3" json:"cond_id,omitempty"` //条件id Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` //对应的语言描述 OpenJump int32 `protobuf:"varint,3,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,5,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 GoText string `protobuf:"bytes,7,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 } func (x *LangsRes_Cond) Reset() { *x = LangsRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangsRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangsRes_Cond) ProtoMessage() {} func (x *LangsRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[316] 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 LangsRes_Cond.ProtoReflect.Descriptor instead. func (*LangsRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{35, 20} } func (x *LangsRes_Cond) GetCondId() int64 { if x != nil { return x.CondId } return 0 } func (x *LangsRes_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *LangsRes_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *LangsRes_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangsRes_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *LangsRes_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *LangsRes_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } type LangRes_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Red []*LangRes_UnoCard `protobuf:"bytes,1,rep,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow []*LangRes_UnoCard `protobuf:"bytes,2,rep,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue []*LangRes_UnoCard `protobuf:"bytes,3,rep,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green []*LangRes_UnoCard `protobuf:"bytes,4,rep,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *LangRes_Uno) Reset() { *x = LangRes_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[317] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Uno) ProtoMessage() {} func (x *LangRes_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[317] 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 LangRes_Uno.ProtoReflect.Descriptor instead. func (*LangRes_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 0} } func (x *LangRes_Uno) GetRed() []*LangRes_UnoCard { if x != nil { return x.Red } return nil } func (x *LangRes_Uno) GetYellow() []*LangRes_UnoCard { if x != nil { return x.Yellow } return nil } func (x *LangRes_Uno) GetBlue() []*LangRes_UnoCard { if x != nil { return x.Blue } return nil } func (x *LangRes_Uno) GetGreen() []*LangRes_UnoCard { if x != nil { return x.Green } return nil } type LangRes_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CardNo int32 `protobuf:"varint,1,opt,name=card_no,json=cardNo,proto3" json:"card_no,omitempty"` //牌号 Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,5,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 } func (x *LangRes_UnoCard) Reset() { *x = LangRes_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[318] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_UnoCard) ProtoMessage() {} func (x *LangRes_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[318] 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 LangRes_UnoCard.ProtoReflect.Descriptor instead. func (*LangRes_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 1} } func (x *LangRes_UnoCard) GetCardNo() int32 { if x != nil { return x.CardNo } return 0 } func (x *LangRes_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangRes_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *LangRes_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangRes_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangRes_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangRes_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PkTeams []*LangRes_PkTeam `protobuf:"bytes,2,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *LangRes_Schedule) Reset() { *x = LangRes_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Schedule) ProtoMessage() {} func (x *LangRes_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[319] 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 LangRes_Schedule.ProtoReflect.Descriptor instead. func (*LangRes_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 2} } func (x *LangRes_Schedule) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *LangRes_Schedule) GetPkTeams() []*LangRes_PkTeam { if x != nil { return x.PkTeams } return nil } type LangRes_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id Teams []*LangRes_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VsImg string `protobuf:"bytes,3,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 } func (x *LangRes_PkTeam) Reset() { *x = LangRes_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_PkTeam) ProtoMessage() {} func (x *LangRes_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[320] 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 LangRes_PkTeam.ProtoReflect.Descriptor instead. func (*LangRes_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 3} } func (x *LangRes_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangRes_PkTeam) GetTeams() []*LangRes_Team { if x != nil { return x.Teams } return nil } func (x *LangRes_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *LangRes_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } type LangRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *LangRes_Team) Reset() { *x = LangRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[321] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Team) ProtoMessage() {} func (x *LangRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[321] 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 LangRes_Team.ProtoReflect.Descriptor instead. func (*LangRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 4} } func (x *LangRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *LangRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type LangRes_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *LangRes_Talk) Reset() { *x = LangRes_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[322] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Talk) ProtoMessage() {} func (x *LangRes_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[322] 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 LangRes_Talk.ProtoReflect.Descriptor instead. func (*LangRes_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 5} } func (x *LangRes_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *LangRes_Talk) GetContent() string { if x != nil { return x.Content } return "" } type LangRes_QaGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaGroupId string `protobuf:"bytes,1,opt,name=qa_group_id,json=qaGroupId,proto3" json:"qa_group_id,omitempty"` //题库hash_id QaNum int32 `protobuf:"varint,2,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //题库标题 GuideGroupId string `protobuf:"bytes,4,opt,name=guide_group_id,json=guideGroupId,proto3" json:"guide_group_id,omitempty"` //引导组hash_id } func (x *LangRes_QaGroup) Reset() { *x = LangRes_QaGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[323] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_QaGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_QaGroup) ProtoMessage() {} func (x *LangRes_QaGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[323] 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 LangRes_QaGroup.ProtoReflect.Descriptor instead. func (*LangRes_QaGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 6} } func (x *LangRes_QaGroup) GetQaGroupId() string { if x != nil { return x.QaGroupId } return "" } func (x *LangRes_QaGroup) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *LangRes_QaGroup) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangRes_QaGroup) GetGuideGroupId() string { if x != nil { return x.GuideGroupId } return "" } type LangRes_Quit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //标题 Options []*LangRes_Option `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *LangRes_Quit) Reset() { *x = LangRes_Quit{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Quit) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Quit) ProtoMessage() {} func (x *LangRes_Quit) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[324] 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 LangRes_Quit.ProtoReflect.Descriptor instead. func (*LangRes_Quit) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 7} } func (x *LangRes_Quit) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangRes_Quit) GetOptions() []*LangRes_Option { if x != nil { return x.Options } return nil } type LangRes_Option struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OptionId int64 `protobuf:"varint,1,opt,name=option_id,json=optionId,proto3" json:"option_id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 } func (x *LangRes_Option) Reset() { *x = LangRes_Option{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Option) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Option) ProtoMessage() {} func (x *LangRes_Option) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[325] 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 LangRes_Option.ProtoReflect.Descriptor instead. func (*LangRes_Option) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 8} } func (x *LangRes_Option) GetOptionId() int64 { if x != nil { return x.OptionId } return 0 } func (x *LangRes_Option) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangRes_Option) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } type LangRes_Question struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaId int64 `protobuf:"varint,1,opt,name=qa_id,json=qaId,proto3" json:"qa_id,omitempty"` //问题id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //题目 Options []*LangRes_Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *LangRes_Question) Reset() { *x = LangRes_Question{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Question) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Question) ProtoMessage() {} func (x *LangRes_Question) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[326] 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 LangRes_Question.ProtoReflect.Descriptor instead. func (*LangRes_Question) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 9} } func (x *LangRes_Question) GetQaId() int64 { if x != nil { return x.QaId } return 0 } func (x *LangRes_Question) GetTitle() string { if x != nil { return x.Title } return "" } func (x *LangRes_Question) GetOptions() []*LangRes_Option { if x != nil { return x.Options } return nil } type LangRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CondId int64 `protobuf:"varint,1,opt,name=cond_id,json=condId,proto3" json:"cond_id,omitempty"` //条件id Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` //对应的语言描述 WebUrl string `protobuf:"bytes,3,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,4,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 PcParam string `protobuf:"bytes,5,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 GoText string `protobuf:"bytes,6,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 } func (x *LangRes_Cond) Reset() { *x = LangRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[327] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Cond) ProtoMessage() {} func (x *LangRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[327] 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 LangRes_Cond.ProtoReflect.Descriptor instead. func (*LangRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 10} } func (x *LangRes_Cond) GetCondId() int64 { if x != nil { return x.CondId } return 0 } func (x *LangRes_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *LangRes_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangRes_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *LangRes_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *LangRes_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } type LangRes_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 Id int64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` //长图id ClickType int32 `protobuf:"varint,5,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*LangRes_HotZone `protobuf:"bytes,6,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id TargetUrl string `protobuf:"bytes,9,opt,name=target_url,json=targetUrl,proto3" json:"target_url,omitempty"` //目标地址 PcParam string `protobuf:"bytes,10,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *LangRes_LongImg) Reset() { *x = LangRes_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[328] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_LongImg) ProtoMessage() {} func (x *LangRes_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[328] 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 LangRes_LongImg.ProtoReflect.Descriptor instead. func (*LangRes_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 11} } func (x *LangRes_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *LangRes_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangRes_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangRes_LongImg) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangRes_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *LangRes_LongImg) GetHotZone() []*LangRes_HotZone { if x != nil { return x.HotZone } return nil } func (x *LangRes_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *LangRes_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *LangRes_LongImg) GetTargetUrl() string { if x != nil { return x.TargetUrl } return "" } func (x *LangRes_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangRes_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //热区id WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,4,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,5,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,6,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,7,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,8,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id TargetUrl string `protobuf:"bytes,10,opt,name=target_url,json=targetUrl,proto3" json:"target_url,omitempty"` //目标地址 PcParam string `protobuf:"bytes,11,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *LangRes_HotZone) Reset() { *x = LangRes_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_HotZone) ProtoMessage() {} func (x *LangRes_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[329] 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 LangRes_HotZone.ProtoReflect.Descriptor instead. func (*LangRes_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 12} } func (x *LangRes_HotZone) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *LangRes_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *LangRes_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *LangRes_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *LangRes_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *LangRes_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *LangRes_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *LangRes_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *LangRes_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *LangRes_HotZone) GetTargetUrl() string { if x != nil { return x.TargetUrl } return "" } func (x *LangRes_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangRes_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price int32 `protobuf:"varint,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *LangRes_Cash) Reset() { *x = LangRes_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[330] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Cash) ProtoMessage() {} func (x *LangRes_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[330] 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 LangRes_Cash.ProtoReflect.Descriptor instead. func (*LangRes_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 13} } func (x *LangRes_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *LangRes_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type LangRes_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price float64 `protobuf:"fixed64,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *LangRes_Gold) Reset() { *x = LangRes_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[331] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Gold) ProtoMessage() {} func (x *LangRes_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[331] 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 LangRes_Gold.ProtoReflect.Descriptor instead. func (*LangRes_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 14} } func (x *LangRes_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *LangRes_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type LangRes_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomBtnText string `protobuf:"bytes,1,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,2,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,3,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomPcParam string `protobuf:"bytes,4,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *LangRes_Coin) Reset() { *x = LangRes_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangRes_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangRes_Coin) ProtoMessage() {} func (x *LangRes_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[332] 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 LangRes_Coin.ProtoReflect.Descriptor instead. func (*LangRes_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{37, 15} } func (x *LangRes_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *LangRes_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *LangRes_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *LangRes_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type SaveLangReq_Uno struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Red []*SaveLangReq_UnoCard `protobuf:"bytes,1,rep,name=red,proto3" json:"red,omitempty"` //红牌配置 Yellow []*SaveLangReq_UnoCard `protobuf:"bytes,2,rep,name=yellow,proto3" json:"yellow,omitempty"` //黄牌配置 Blue []*SaveLangReq_UnoCard `protobuf:"bytes,3,rep,name=blue,proto3" json:"blue,omitempty"` //黑牌配置 Green []*SaveLangReq_UnoCard `protobuf:"bytes,4,rep,name=green,proto3" json:"green,omitempty"` //绿牌配置 } func (x *SaveLangReq_Uno) Reset() { *x = SaveLangReq_Uno{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[333] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Uno) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Uno) ProtoMessage() {} func (x *SaveLangReq_Uno) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[333] 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 SaveLangReq_Uno.ProtoReflect.Descriptor instead. func (*SaveLangReq_Uno) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 0} } func (x *SaveLangReq_Uno) GetRed() []*SaveLangReq_UnoCard { if x != nil { return x.Red } return nil } func (x *SaveLangReq_Uno) GetYellow() []*SaveLangReq_UnoCard { if x != nil { return x.Yellow } return nil } func (x *SaveLangReq_Uno) GetBlue() []*SaveLangReq_UnoCard { if x != nil { return x.Blue } return nil } func (x *SaveLangReq_Uno) GetGreen() []*SaveLangReq_UnoCard { if x != nil { return x.Green } return nil } type SaveLangReq_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CardNo int32 `protobuf:"varint,1,opt,name=card_no,json=cardNo,proto3" json:"card_no,omitempty"` //牌号 Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //跳转按钮文案 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web跳转地址 AppParam string `protobuf:"bytes,5,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App跳转参数 PcParam string `protobuf:"bytes,6,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc跳转参数 } func (x *SaveLangReq_UnoCard) Reset() { *x = SaveLangReq_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[334] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_UnoCard) ProtoMessage() {} func (x *SaveLangReq_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[334] 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 SaveLangReq_UnoCard.ProtoReflect.Descriptor instead. func (*SaveLangReq_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 1} } func (x *SaveLangReq_UnoCard) GetCardNo() int32 { if x != nil { return x.CardNo } return 0 } func (x *SaveLangReq_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SaveLangReq_UnoCard) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *SaveLangReq_UnoCard) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *SaveLangReq_UnoCard) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *SaveLangReq_UnoCard) GetPcParam() string { if x != nil { return x.PcParam } return "" } type SaveLangReq_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id PkTeams []*SaveLangReq_PkTeam `protobuf:"bytes,2,rep,name=pk_teams,json=pkTeams,proto3" json:"pk_teams,omitempty"` //队伍 } func (x *SaveLangReq_Schedule) Reset() { *x = SaveLangReq_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Schedule) ProtoMessage() {} func (x *SaveLangReq_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[335] 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 SaveLangReq_Schedule.ProtoReflect.Descriptor instead. func (*SaveLangReq_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 2} } func (x *SaveLangReq_Schedule) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *SaveLangReq_Schedule) GetPkTeams() []*SaveLangReq_PkTeam { if x != nil { return x.PkTeams } return nil } type SaveLangReq_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id Teams []*SaveLangReq_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍 VsImg string `protobuf:"bytes,3,opt,name=vs_img,json=vsImg,proto3" json:"vs_img,omitempty"` //比赛图 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //标题描述 } func (x *SaveLangReq_PkTeam) Reset() { *x = SaveLangReq_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[336] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_PkTeam) ProtoMessage() {} func (x *SaveLangReq_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[336] 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 SaveLangReq_PkTeam.ProtoReflect.Descriptor instead. func (*SaveLangReq_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 3} } func (x *SaveLangReq_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *SaveLangReq_PkTeam) GetTeams() []*SaveLangReq_Team { if x != nil { return x.Teams } return nil } func (x *SaveLangReq_PkTeam) GetVsImg() string { if x != nil { return x.VsImg } return "" } func (x *SaveLangReq_PkTeam) GetDesc() string { if x != nil { return x.Desc } return "" } type SaveLangReq_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *SaveLangReq_Team) Reset() { *x = SaveLangReq_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[337] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Team) ProtoMessage() {} func (x *SaveLangReq_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[337] 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 SaveLangReq_Team.ProtoReflect.Descriptor instead. func (*SaveLangReq_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 4} } func (x *SaveLangReq_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *SaveLangReq_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *SaveLangReq_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type SaveLangReq_Talk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextType int32 `protobuf:"varint,1,opt,name=text_type,json=textType,proto3" json:"text_type,omitempty"` //话术逻辑(1-进入活动时,2-20秒没有投喂时,3-50秒没有投喂时,4-存储的狗粮能投喂5次时) Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` //内容 } func (x *SaveLangReq_Talk) Reset() { *x = SaveLangReq_Talk{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[338] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Talk) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Talk) ProtoMessage() {} func (x *SaveLangReq_Talk) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[338] 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 SaveLangReq_Talk.ProtoReflect.Descriptor instead. func (*SaveLangReq_Talk) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 5} } func (x *SaveLangReq_Talk) GetTextType() int32 { if x != nil { return x.TextType } return 0 } func (x *SaveLangReq_Talk) GetContent() string { if x != nil { return x.Content } return "" } type SaveLangReq_QaGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaGroupId string `protobuf:"bytes,1,opt,name=qa_group_id,json=qaGroupId,proto3" json:"qa_group_id,omitempty"` //题库hash_id QaNum int32 `protobuf:"varint,2,opt,name=qa_num,json=qaNum,proto3" json:"qa_num,omitempty"` //题库选取数量 GuideGroupId string `protobuf:"bytes,3,opt,name=guide_group_id,json=guideGroupId,proto3" json:"guide_group_id,omitempty"` //引导组hash_id } func (x *SaveLangReq_QaGroup) Reset() { *x = SaveLangReq_QaGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[339] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_QaGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_QaGroup) ProtoMessage() {} func (x *SaveLangReq_QaGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[339] 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 SaveLangReq_QaGroup.ProtoReflect.Descriptor instead. func (*SaveLangReq_QaGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 6} } func (x *SaveLangReq_QaGroup) GetQaGroupId() string { if x != nil { return x.QaGroupId } return "" } func (x *SaveLangReq_QaGroup) GetQaNum() int32 { if x != nil { return x.QaNum } return 0 } func (x *SaveLangReq_QaGroup) GetGuideGroupId() string { if x != nil { return x.GuideGroupId } return "" } type SaveLangReq_Cash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price int32 `protobuf:"varint,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *SaveLangReq_Cash) Reset() { *x = SaveLangReq_Cash{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[340] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Cash) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Cash) ProtoMessage() {} func (x *SaveLangReq_Cash) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[340] 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 SaveLangReq_Cash.ProtoReflect.Descriptor instead. func (*SaveLangReq_Cash) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 7} } func (x *SaveLangReq_Cash) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *SaveLangReq_Cash) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type SaveLangReq_Gold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price float64 `protobuf:"fixed64,1,opt,name=price,proto3" json:"price,omitempty"` //单位奖品总价值 Currency int32 `protobuf:"varint,2,opt,name=currency,proto3" json:"currency,omitempty"` //货币id标识 } func (x *SaveLangReq_Gold) Reset() { *x = SaveLangReq_Gold{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[341] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Gold) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Gold) ProtoMessage() {} func (x *SaveLangReq_Gold) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[341] 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 SaveLangReq_Gold.ProtoReflect.Descriptor instead. func (*SaveLangReq_Gold) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 8} } func (x *SaveLangReq_Gold) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *SaveLangReq_Gold) GetCurrency() int32 { if x != nil { return x.Currency } return 0 } type SaveLangReq_Coin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CustomBtnText string `protobuf:"bytes,1,opt,name=custom_btn_text,json=customBtnText,proto3" json:"custom_btn_text,omitempty"` //自定义按钮文案 CustomWebUrl string `protobuf:"bytes,2,opt,name=custom_web_url,json=customWebUrl,proto3" json:"custom_web_url,omitempty"` //自定义web端url CustomExtraParam string `protobuf:"bytes,3,opt,name=custom_extra_param,json=customExtraParam,proto3" json:"custom_extra_param,omitempty"` //自定义app附加参数 CustomPcParam string `protobuf:"bytes,4,opt,name=custom_pc_param,json=customPcParam,proto3" json:"custom_pc_param,omitempty"` //自定义pc附加参数 } func (x *SaveLangReq_Coin) Reset() { *x = SaveLangReq_Coin{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[342] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Coin) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Coin) ProtoMessage() {} func (x *SaveLangReq_Coin) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[342] 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 SaveLangReq_Coin.ProtoReflect.Descriptor instead. func (*SaveLangReq_Coin) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 9} } func (x *SaveLangReq_Coin) GetCustomBtnText() string { if x != nil { return x.CustomBtnText } return "" } func (x *SaveLangReq_Coin) GetCustomWebUrl() string { if x != nil { return x.CustomWebUrl } return "" } func (x *SaveLangReq_Coin) GetCustomExtraParam() string { if x != nil { return x.CustomExtraParam } return "" } func (x *SaveLangReq_Coin) GetCustomPcParam() string { if x != nil { return x.CustomPcParam } return "" } type SaveLangReq_Quit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` //标题 Options []*SaveLangReq_Option `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *SaveLangReq_Quit) Reset() { *x = SaveLangReq_Quit{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[343] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Quit) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Quit) ProtoMessage() {} func (x *SaveLangReq_Quit) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[343] 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 SaveLangReq_Quit.ProtoReflect.Descriptor instead. func (*SaveLangReq_Quit) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 10} } func (x *SaveLangReq_Quit) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SaveLangReq_Quit) GetOptions() []*SaveLangReq_Option { if x != nil { return x.Options } return nil } type SaveLangReq_Option struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OptionId int64 `protobuf:"varint,1,opt,name=option_id,json=optionId,proto3" json:"option_id,omitempty"` //选项id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //选项标题 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //选项图片 } func (x *SaveLangReq_Option) Reset() { *x = SaveLangReq_Option{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[344] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Option) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Option) ProtoMessage() {} func (x *SaveLangReq_Option) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[344] 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 SaveLangReq_Option.ProtoReflect.Descriptor instead. func (*SaveLangReq_Option) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 11} } func (x *SaveLangReq_Option) GetOptionId() int64 { if x != nil { return x.OptionId } return 0 } func (x *SaveLangReq_Option) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SaveLangReq_Option) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } type SaveLangReq_Question struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields QaId int64 `protobuf:"varint,1,opt,name=qa_id,json=qaId,proto3" json:"qa_id,omitempty"` //问题id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //题目 Options []*SaveLangReq_Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` //选项集合 } func (x *SaveLangReq_Question) Reset() { *x = SaveLangReq_Question{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[345] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Question) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Question) ProtoMessage() {} func (x *SaveLangReq_Question) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[345] 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 SaveLangReq_Question.ProtoReflect.Descriptor instead. func (*SaveLangReq_Question) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 12} } func (x *SaveLangReq_Question) GetQaId() int64 { if x != nil { return x.QaId } return 0 } func (x *SaveLangReq_Question) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SaveLangReq_Question) GetOptions() []*SaveLangReq_Option { if x != nil { return x.Options } return nil } type SaveLangReq_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CondId int64 `protobuf:"varint,1,opt,name=cond_id,json=condId,proto3" json:"cond_id,omitempty"` //条件id Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` //对应的语言描述 WebUrl string `protobuf:"bytes,3,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,4,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 PcParam string `protobuf:"bytes,5,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 GoText string `protobuf:"bytes,6,opt,name=go_text,json=goText,proto3" json:"go_text,omitempty"` //去完成文案 } func (x *SaveLangReq_Cond) Reset() { *x = SaveLangReq_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[346] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_Cond) ProtoMessage() {} func (x *SaveLangReq_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[346] 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 SaveLangReq_Cond.ProtoReflect.Descriptor instead. func (*SaveLangReq_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 13} } func (x *SaveLangReq_Cond) GetCondId() int64 { if x != nil { return x.CondId } return 0 } func (x *SaveLangReq_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *SaveLangReq_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *SaveLangReq_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *SaveLangReq_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *SaveLangReq_Cond) GetGoText() string { if x != nil { return x.GoText } return "" } type SaveLangReq_LongImg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImgUrl string `protobuf:"bytes,1,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //图片地址 WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 Id int64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` //长图id ClickType int32 `protobuf:"varint,5,opt,name=click_type,json=clickType,proto3" json:"click_type,omitempty"` //点击类型(1-整图点击,2-区域点击) HotZone []*SaveLangReq_HotZone `protobuf:"bytes,6,rep,name=hot_zone,json=hotZone,proto3" json:"hot_zone,omitempty"` //点击区域 TargetType int32 `protobuf:"varint,7,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,8,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,9,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 LangSourceId int64 `protobuf:"varint,10,opt,name=lang_source_id,json=langSourceId,proto3" json:"lang_source_id,omitempty"` //语言长图源ID } func (x *SaveLangReq_LongImg) Reset() { *x = SaveLangReq_LongImg{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[347] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_LongImg) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_LongImg) ProtoMessage() {} func (x *SaveLangReq_LongImg) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[347] 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 SaveLangReq_LongImg.ProtoReflect.Descriptor instead. func (*SaveLangReq_LongImg) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 14} } func (x *SaveLangReq_LongImg) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *SaveLangReq_LongImg) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *SaveLangReq_LongImg) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *SaveLangReq_LongImg) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *SaveLangReq_LongImg) GetClickType() int32 { if x != nil { return x.ClickType } return 0 } func (x *SaveLangReq_LongImg) GetHotZone() []*SaveLangReq_HotZone { if x != nil { return x.HotZone } return nil } func (x *SaveLangReq_LongImg) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *SaveLangReq_LongImg) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *SaveLangReq_LongImg) GetPcParam() string { if x != nil { return x.PcParam } return "" } func (x *SaveLangReq_LongImg) GetLangSourceId() int64 { if x != nil { return x.LangSourceId } return 0 } type SaveLangReq_HotZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //热区id WebUrl string `protobuf:"bytes,2,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //Web端的跳转地址 AppParam string `protobuf:"bytes,3,opt,name=app_param,json=appParam,proto3" json:"app_param,omitempty"` //App端的跳转参数 ClickX float64 `protobuf:"fixed64,4,opt,name=click_x,json=clickX,proto3" json:"click_x,omitempty"` //点击区域x ClickY float64 `protobuf:"fixed64,5,opt,name=click_y,json=clickY,proto3" json:"click_y,omitempty"` //点击区域y ClickW float64 `protobuf:"fixed64,6,opt,name=click_w,json=clickW,proto3" json:"click_w,omitempty"` //点击区域w ClickH float64 `protobuf:"fixed64,7,opt,name=click_h,json=clickH,proto3" json:"click_h,omitempty"` //点击区域h TargetType int32 `protobuf:"varint,8,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"` //跳转目标(1-指定地址,2-活动) TargetId int64 `protobuf:"varint,9,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //目标id PcParam string `protobuf:"bytes,10,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端的跳转参数 } func (x *SaveLangReq_HotZone) Reset() { *x = SaveLangReq_HotZone{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[348] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SaveLangReq_HotZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*SaveLangReq_HotZone) ProtoMessage() {} func (x *SaveLangReq_HotZone) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[348] 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 SaveLangReq_HotZone.ProtoReflect.Descriptor instead. func (*SaveLangReq_HotZone) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{38, 15} } func (x *SaveLangReq_HotZone) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *SaveLangReq_HotZone) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *SaveLangReq_HotZone) GetAppParam() string { if x != nil { return x.AppParam } return "" } func (x *SaveLangReq_HotZone) GetClickX() float64 { if x != nil { return x.ClickX } return 0 } func (x *SaveLangReq_HotZone) GetClickY() float64 { if x != nil { return x.ClickY } return 0 } func (x *SaveLangReq_HotZone) GetClickW() float64 { if x != nil { return x.ClickW } return 0 } func (x *SaveLangReq_HotZone) GetClickH() float64 { if x != nil { return x.ClickH } return 0 } func (x *SaveLangReq_HotZone) GetTargetType() int32 { if x != nil { return x.TargetType } return 0 } func (x *SaveLangReq_HotZone) GetTargetId() int64 { if x != nil { return x.TargetId } return 0 } func (x *SaveLangReq_HotZone) GetPcParam() string { if x != nil { return x.PcParam } return "" } type LangSelectRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangType int32 `protobuf:"varint,1,opt,name=lang_type,json=langType,proto3" json:"lang_type,omitempty"` //语言数字类型 LangMark string `protobuf:"bytes,2,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言iso标准 Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"` //是否已经被使用 } func (x *LangSelectRes_One) Reset() { *x = LangSelectRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[349] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LangSelectRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*LangSelectRes_One) ProtoMessage() {} func (x *LangSelectRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[349] 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 LangSelectRes_One.ProtoReflect.Descriptor instead. func (*LangSelectRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{43, 0} } func (x *LangSelectRes_One) GetLangType() int32 { if x != nil { return x.LangType } return 0 } func (x *LangSelectRes_One) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *LangSelectRes_One) GetSelected() bool { if x != nil { return x.Selected } return false } type ShowRewardRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,3,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片 Stock int32 `protobuf:"varint,4,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,5,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,6,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,7,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,8,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,9,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,10,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,11,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) ReceiveType int32 `protobuf:"varint,12,opt,name=receive_type,json=receiveType,proto3" json:"receive_type,omitempty"` //发放类型(1-系统发放,2-联系客服) KvData []*ShowRewardRes_KV `protobuf:"bytes,13,rep,name=kv_data,json=kvData,proto3" json:"kv_data,omitempty"` //键值数据 Contact string `protobuf:"bytes,14,opt,name=contact,proto3" json:"contact,omitempty"` //联系方式 Url string `protobuf:"bytes,15,opt,name=url,proto3" json:"url,omitempty"` //回调地址 Help int32 `protobuf:"varint,16,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,17,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,18,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,19,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,20,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,21,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,22,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,23,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 JumpUrl string `protobuf:"bytes,24,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 RewardId int64 `protobuf:"varint,25,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库奖品id Register int32 `protobuf:"varint,26,opt,name=register,proto3" json:"register,omitempty"` //开启下载助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,27,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个下载获得的进度比率 } func (x *ShowRewardRes_Reward) Reset() { *x = ShowRewardRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[350] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRewardRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRewardRes_Reward) ProtoMessage() {} func (x *ShowRewardRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[350] 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 ShowRewardRes_Reward.ProtoReflect.Descriptor instead. func (*ShowRewardRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{47, 0} } func (x *ShowRewardRes_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ShowRewardRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ShowRewardRes_Reward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ShowRewardRes_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *ShowRewardRes_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ShowRewardRes_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *ShowRewardRes_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *ShowRewardRes_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ShowRewardRes_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ShowRewardRes_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *ShowRewardRes_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ShowRewardRes_Reward) GetReceiveType() int32 { if x != nil { return x.ReceiveType } return 0 } func (x *ShowRewardRes_Reward) GetKvData() []*ShowRewardRes_KV { if x != nil { return x.KvData } return nil } func (x *ShowRewardRes_Reward) GetContact() string { if x != nil { return x.Contact } return "" } func (x *ShowRewardRes_Reward) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ShowRewardRes_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *ShowRewardRes_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *ShowRewardRes_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *ShowRewardRes_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *ShowRewardRes_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *ShowRewardRes_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ShowRewardRes_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *ShowRewardRes_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *ShowRewardRes_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *ShowRewardRes_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ShowRewardRes_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *ShowRewardRes_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } type ShowRewardRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //键 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //值 } func (x *ShowRewardRes_KV) Reset() { *x = ShowRewardRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[351] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShowRewardRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShowRewardRes_KV) ProtoMessage() {} func (x *ShowRewardRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[351] 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 ShowRewardRes_KV.ProtoReflect.Descriptor instead. func (*ShowRewardRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{47, 1} } func (x *ShowRewardRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *ShowRewardRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type AdsStoreReq_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //键 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //值 } func (x *AdsStoreReq_KV) Reset() { *x = AdsStoreReq_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[352] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsStoreReq_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsStoreReq_KV) ProtoMessage() {} func (x *AdsStoreReq_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[352] 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 AdsStoreReq_KV.ProtoReflect.Descriptor instead. func (*AdsStoreReq_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{48, 0} } func (x *AdsStoreReq_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *AdsStoreReq_KV) GetValue() string { if x != nil { return x.Value } return "" } type AdsStoreReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardId int64 `protobuf:"varint,1,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Odds int32 `protobuf:"varint,2,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 } func (x *AdsStoreReq_Reward) Reset() { *x = AdsStoreReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[353] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsStoreReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsStoreReq_Reward) ProtoMessage() {} func (x *AdsStoreReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[353] 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 AdsStoreReq_Reward.ProtoReflect.Descriptor instead. func (*AdsStoreReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{48, 1} } func (x *AdsStoreReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *AdsStoreReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } type AdsStoreReq_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CardImg string `protobuf:"bytes,1,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 } func (x *AdsStoreReq_Flip) Reset() { *x = AdsStoreReq_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[354] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsStoreReq_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsStoreReq_Flip) ProtoMessage() {} func (x *AdsStoreReq_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[354] 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 AdsStoreReq_Flip.ProtoReflect.Descriptor instead. func (*AdsStoreReq_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{48, 2} } func (x *AdsStoreReq_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } type AdsUpdateReq_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //键 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //值 } func (x *AdsUpdateReq_KV) Reset() { *x = AdsUpdateReq_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[355] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsUpdateReq_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsUpdateReq_KV) ProtoMessage() {} func (x *AdsUpdateReq_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[355] 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 AdsUpdateReq_KV.ProtoReflect.Descriptor instead. func (*AdsUpdateReq_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{50, 0} } func (x *AdsUpdateReq_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *AdsUpdateReq_KV) GetValue() string { if x != nil { return x.Value } return "" } type AdsUpdateReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Odds int32 `protobuf:"varint,3,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 } func (x *AdsUpdateReq_Reward) Reset() { *x = AdsUpdateReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[356] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsUpdateReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsUpdateReq_Reward) ProtoMessage() {} func (x *AdsUpdateReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[356] 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 AdsUpdateReq_Reward.ProtoReflect.Descriptor instead. func (*AdsUpdateReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{50, 1} } func (x *AdsUpdateReq_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *AdsUpdateReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *AdsUpdateReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } type AdsUpdateReq_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CardImg string `protobuf:"bytes,1,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 } func (x *AdsUpdateReq_Flip) Reset() { *x = AdsUpdateReq_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[357] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsUpdateReq_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsUpdateReq_Flip) ProtoMessage() {} func (x *AdsUpdateReq_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[357] 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 AdsUpdateReq_Flip.ProtoReflect.Descriptor instead. func (*AdsUpdateReq_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{50, 2} } func (x *AdsUpdateReq_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } type AdsShowRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //键 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //值 } func (x *AdsShowRes_KV) Reset() { *x = AdsShowRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[358] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsShowRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsShowRes_KV) ProtoMessage() {} func (x *AdsShowRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[358] 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 AdsShowRes_KV.ProtoReflect.Descriptor instead. func (*AdsShowRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{53, 0} } func (x *AdsShowRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *AdsShowRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type AdsShowRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Odds int32 `protobuf:"varint,3,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,5,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片 KvData []*AdsShowRes_KV `protobuf:"bytes,6,rep,name=kv_data,json=kvData,proto3" json:"kv_data,omitempty"` //奖品自定义参数数据 ReceiveType int32 `protobuf:"varint,7,opt,name=receive_type,json=receiveType,proto3" json:"receive_type,omitempty"` //发放类型(1-系统发放,2-联系客服,3-客户端发放,4-实物) Contact string `protobuf:"bytes,8,opt,name=contact,proto3" json:"contact,omitempty"` //联系方式 Url string `protobuf:"bytes,9,opt,name=url,proto3" json:"url,omitempty"` //回调地址 } func (x *AdsShowRes_Reward) Reset() { *x = AdsShowRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[359] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsShowRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsShowRes_Reward) ProtoMessage() {} func (x *AdsShowRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[359] 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 AdsShowRes_Reward.ProtoReflect.Descriptor instead. func (*AdsShowRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{53, 1} } func (x *AdsShowRes_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *AdsShowRes_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *AdsShowRes_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *AdsShowRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *AdsShowRes_Reward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *AdsShowRes_Reward) GetKvData() []*AdsShowRes_KV { if x != nil { return x.KvData } return nil } func (x *AdsShowRes_Reward) GetReceiveType() int32 { if x != nil { return x.ReceiveType } return 0 } func (x *AdsShowRes_Reward) GetContact() string { if x != nil { return x.Contact } return "" } func (x *AdsShowRes_Reward) GetUrl() string { if x != nil { return x.Url } return "" } type AdsShowRes_Flip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CardImg string `protobuf:"bytes,1,opt,name=card_img,json=cardImg,proto3" json:"card_img,omitempty"` //卡牌图片 } func (x *AdsShowRes_Flip) Reset() { *x = AdsShowRes_Flip{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[360] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdsShowRes_Flip) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdsShowRes_Flip) ProtoMessage() {} func (x *AdsShowRes_Flip) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[360] 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 AdsShowRes_Flip.ProtoReflect.Descriptor instead. func (*AdsShowRes_Flip) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{53, 2} } func (x *AdsShowRes_Flip) GetCardImg() string { if x != nil { return x.CardImg } return "" } type CampaignSelectRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线) ChildType int32 `protobuf:"varint,5,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型(1-邀新竞赛,2-签到,3-抽奖,4-盲盒,5-超级任务) } func (x *CampaignSelectRes_One) Reset() { *x = CampaignSelectRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignSelectRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignSelectRes_One) ProtoMessage() {} func (x *CampaignSelectRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[361] 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 CampaignSelectRes_One.ProtoReflect.Descriptor instead. func (*CampaignSelectRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{55, 0} } func (x *CampaignSelectRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CampaignSelectRes_One) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *CampaignSelectRes_One) GetTitle() string { if x != nil { return x.Title } return "" } func (x *CampaignSelectRes_One) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *CampaignSelectRes_One) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } type RewardDetailRes_UnoCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //牌组id Mark string `protobuf:"bytes,2,opt,name=mark,proto3" json:"mark,omitempty"` //牌组标识 Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //奖品标题 Stock int64 `protobuf:"varint,4,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 Remain int64 `protobuf:"varint,5,opt,name=remain,proto3" json:"remain,omitempty"` //剩余库存 PreIntactNum int64 `protobuf:"varint,6,opt,name=pre_intact_num,json=preIntactNum,proto3" json:"pre_intact_num,omitempty"` //待合成奖品数 IntactNum int64 `protobuf:"varint,7,opt,name=intact_num,json=intactNum,proto3" json:"intact_num,omitempty"` //完整奖品数 } func (x *RewardDetailRes_UnoCard) Reset() { *x = RewardDetailRes_UnoCard{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_UnoCard) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_UnoCard) ProtoMessage() {} func (x *RewardDetailRes_UnoCard) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[362] 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 RewardDetailRes_UnoCard.ProtoReflect.Descriptor instead. func (*RewardDetailRes_UnoCard) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 0} } func (x *RewardDetailRes_UnoCard) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *RewardDetailRes_UnoCard) GetMark() string { if x != nil { return x.Mark } return "" } func (x *RewardDetailRes_UnoCard) GetTitle() string { if x != nil { return x.Title } return "" } func (x *RewardDetailRes_UnoCard) GetStock() int64 { if x != nil { return x.Stock } return 0 } func (x *RewardDetailRes_UnoCard) GetRemain() int64 { if x != nil { return x.Remain } return 0 } func (x *RewardDetailRes_UnoCard) GetPreIntactNum() int64 { if x != nil { return x.PreIntactNum } return 0 } func (x *RewardDetailRes_UnoCard) GetIntactNum() int64 { if x != nil { return x.IntactNum } return 0 } type RewardDetailRes_Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //赛程id VsAt int64 `protobuf:"varint,2,opt,name=vs_at,json=vsAt,proto3" json:"vs_at,omitempty"` //开赛时间 VoteStart int64 `protobuf:"varint,3,opt,name=vote_start,json=voteStart,proto3" json:"vote_start,omitempty"` //投票开始时间 VoteEnd int64 `protobuf:"varint,4,opt,name=vote_end,json=voteEnd,proto3" json:"vote_end,omitempty"` //投票结束时间 Teams []*RewardDetailRes_Team `protobuf:"bytes,5,rep,name=teams,proto3" json:"teams,omitempty"` //队伍数据 Votes []*RewardDetailRes_Vote `protobuf:"bytes,6,rep,name=votes,proto3" json:"votes,omitempty"` //投票数据 WinType int32 `protobuf:"varint,7,opt,name=win_type,json=winType,proto3" json:"win_type,omitempty"` //结算获奖类型(1-队伍胜利,2-平局) WinTeamId int64 `protobuf:"varint,8,opt,name=win_team_id,json=winTeamId,proto3" json:"win_team_id,omitempty"` //胜利队伍id PreRewardNum int64 `protobuf:"varint,9,opt,name=pre_reward_num,json=preRewardNum,proto3" json:"pre_reward_num,omitempty"` //预计发放奖励数 RewardNum int64 `protobuf:"varint,10,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //实际领取奖励数 Tz int32 `protobuf:"varint,11,opt,name=tz,proto3" json:"tz,omitempty"` //时区 } func (x *RewardDetailRes_Schedule) Reset() { *x = RewardDetailRes_Schedule{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_Schedule) ProtoMessage() {} func (x *RewardDetailRes_Schedule) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[363] 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 RewardDetailRes_Schedule.ProtoReflect.Descriptor instead. func (*RewardDetailRes_Schedule) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 1} } func (x *RewardDetailRes_Schedule) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *RewardDetailRes_Schedule) GetVsAt() int64 { if x != nil { return x.VsAt } return 0 } func (x *RewardDetailRes_Schedule) GetVoteStart() int64 { if x != nil { return x.VoteStart } return 0 } func (x *RewardDetailRes_Schedule) GetVoteEnd() int64 { if x != nil { return x.VoteEnd } return 0 } func (x *RewardDetailRes_Schedule) GetTeams() []*RewardDetailRes_Team { if x != nil { return x.Teams } return nil } func (x *RewardDetailRes_Schedule) GetVotes() []*RewardDetailRes_Vote { if x != nil { return x.Votes } return nil } func (x *RewardDetailRes_Schedule) GetWinType() int32 { if x != nil { return x.WinType } return 0 } func (x *RewardDetailRes_Schedule) GetWinTeamId() int64 { if x != nil { return x.WinTeamId } return 0 } func (x *RewardDetailRes_Schedule) GetPreRewardNum() int64 { if x != nil { return x.PreRewardNum } return 0 } func (x *RewardDetailRes_Schedule) GetRewardNum() int64 { if x != nil { return x.RewardNum } return 0 } func (x *RewardDetailRes_Schedule) GetTz() int32 { if x != nil { return x.Tz } return 0 } type RewardDetailRes_Vote struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WinType int32 `protobuf:"varint,1,opt,name=win_type,json=winType,proto3" json:"win_type,omitempty"` //结算获奖类型(1-队伍胜利,2-平局) WinTeamId int64 `protobuf:"varint,2,opt,name=win_team_id,json=winTeamId,proto3" json:"win_team_id,omitempty"` //队伍id VoteNum int64 `protobuf:"varint,3,opt,name=vote_num,json=voteNum,proto3" json:"vote_num,omitempty"` //投票数 VoteUserNum int64 `protobuf:"varint,4,opt,name=vote_user_num,json=voteUserNum,proto3" json:"vote_user_num,omitempty"` //投票数 } func (x *RewardDetailRes_Vote) Reset() { *x = RewardDetailRes_Vote{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_Vote) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_Vote) ProtoMessage() {} func (x *RewardDetailRes_Vote) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[364] 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 RewardDetailRes_Vote.ProtoReflect.Descriptor instead. func (*RewardDetailRes_Vote) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 2} } func (x *RewardDetailRes_Vote) GetWinType() int32 { if x != nil { return x.WinType } return 0 } func (x *RewardDetailRes_Vote) GetWinTeamId() int64 { if x != nil { return x.WinTeamId } return 0 } func (x *RewardDetailRes_Vote) GetVoteNum() int64 { if x != nil { return x.VoteNum } return 0 } func (x *RewardDetailRes_Vote) GetVoteUserNum() int64 { if x != nil { return x.VoteUserNum } return 0 } type RewardDetailRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *RewardDetailRes_Team) Reset() { *x = RewardDetailRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_Team) ProtoMessage() {} func (x *RewardDetailRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[365] 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 RewardDetailRes_Team.ProtoReflect.Descriptor instead. func (*RewardDetailRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 3} } func (x *RewardDetailRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *RewardDetailRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *RewardDetailRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type RewardDetailRes_Pool struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //id标识 Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //场次说明 Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` //状态(1-进行中 2-领奖中,3-已结算) InitCoin int32 `protobuf:"varint,4,opt,name=init_coin,json=initCoin,proto3" json:"init_coin,omitempty"` //奖池初始金额 UserCoin int64 `protobuf:"varint,5,opt,name=user_coin,json=userCoin,proto3" json:"user_coin,omitempty"` //用户投放金币数 InitUse int32 `protobuf:"varint,6,opt,name=init_use,json=initUse,proto3" json:"init_use,omitempty"` //初始投放次数 JoinNum int64 `protobuf:"varint,7,opt,name=join_num,json=joinNum,proto3" json:"join_num,omitempty"` //投放次数 OneUseCoin int64 `protobuf:"varint,8,opt,name=one_use_coin,json=oneUseCoin,proto3" json:"one_use_coin,omitempty"` //用户单次可领取的金币数 JoinUserNum int64 `protobuf:"varint,9,opt,name=join_user_num,json=joinUserNum,proto3" json:"join_user_num,omitempty"` //投放人数 GetNum int64 `protobuf:"varint,10,opt,name=get_num,json=getNum,proto3" json:"get_num,omitempty"` //领奖总人数 JoinAvg int64 `protobuf:"varint,11,opt,name=join_avg,json=joinAvg,proto3" json:"join_avg,omitempty"` //平均每人发放金币数 GetCoin int64 `protobuf:"varint,12,opt,name=get_coin,json=getCoin,proto3" json:"get_coin,omitempty"` //领取的总金币数 } func (x *RewardDetailRes_Pool) Reset() { *x = RewardDetailRes_Pool{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_Pool) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_Pool) ProtoMessage() {} func (x *RewardDetailRes_Pool) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[366] 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 RewardDetailRes_Pool.ProtoReflect.Descriptor instead. func (*RewardDetailRes_Pool) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 4} } func (x *RewardDetailRes_Pool) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *RewardDetailRes_Pool) GetTitle() string { if x != nil { return x.Title } return "" } func (x *RewardDetailRes_Pool) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *RewardDetailRes_Pool) GetInitCoin() int32 { if x != nil { return x.InitCoin } return 0 } func (x *RewardDetailRes_Pool) GetUserCoin() int64 { if x != nil { return x.UserCoin } return 0 } func (x *RewardDetailRes_Pool) GetInitUse() int32 { if x != nil { return x.InitUse } return 0 } func (x *RewardDetailRes_Pool) GetJoinNum() int64 { if x != nil { return x.JoinNum } return 0 } func (x *RewardDetailRes_Pool) GetOneUseCoin() int64 { if x != nil { return x.OneUseCoin } return 0 } func (x *RewardDetailRes_Pool) GetJoinUserNum() int64 { if x != nil { return x.JoinUserNum } return 0 } func (x *RewardDetailRes_Pool) GetGetNum() int64 { if x != nil { return x.GetNum } return 0 } func (x *RewardDetailRes_Pool) GetJoinAvg() int64 { if x != nil { return x.JoinAvg } return 0 } func (x *RewardDetailRes_Pool) GetGetCoin() int64 { if x != nil { return x.GetCoin } return 0 } type RewardDetailRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //奖品标题 Stock int64 `protobuf:"varint,3,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 Remain int64 `protobuf:"varint,4,opt,name=remain,proto3" json:"remain,omitempty"` //剩余库存 Given int64 `protobuf:"varint,5,opt,name=given,proto3" json:"given,omitempty"` //已发放奖品数 CanUp bool `protobuf:"varint,6,opt,name=can_up,json=canUp,proto3" json:"can_up,omitempty"` //是否可更新库存 IsThank int32 `protobuf:"varint,7,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) SelectNum int64 `protobuf:"varint,8,opt,name=select_num,json=selectNum,proto3" json:"select_num,omitempty"` //选择数 TaskTitle string `protobuf:"bytes,9,opt,name=task_title,json=taskTitle,proto3" json:"task_title,omitempty"` //任务标题 SignDay int32 `protobuf:"varint,10,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 } func (x *RewardDetailRes_Reward) Reset() { *x = RewardDetailRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_Reward) ProtoMessage() {} func (x *RewardDetailRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[367] 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 RewardDetailRes_Reward.ProtoReflect.Descriptor instead. func (*RewardDetailRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 5} } func (x *RewardDetailRes_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *RewardDetailRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *RewardDetailRes_Reward) GetStock() int64 { if x != nil { return x.Stock } return 0 } func (x *RewardDetailRes_Reward) GetRemain() int64 { if x != nil { return x.Remain } return 0 } func (x *RewardDetailRes_Reward) GetGiven() int64 { if x != nil { return x.Given } return 0 } func (x *RewardDetailRes_Reward) GetCanUp() bool { if x != nil { return x.CanUp } return false } func (x *RewardDetailRes_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *RewardDetailRes_Reward) GetSelectNum() int64 { if x != nil { return x.SelectNum } return 0 } func (x *RewardDetailRes_Reward) GetTaskTitle() string { if x != nil { return x.TaskTitle } return "" } func (x *RewardDetailRes_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } type RewardDetailRes_UserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LevelId int64 `protobuf:"varint,1,opt,name=level_id,json=levelId,proto3" json:"level_id,omitempty"` //用户类型id LevelTitle string `protobuf:"bytes,2,opt,name=level_title,json=levelTitle,proto3" json:"level_title,omitempty"` //用户类型标题 Rewards []*RewardDetailRes_Reward `protobuf:"bytes,3,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *RewardDetailRes_UserLevelOne) Reset() { *x = RewardDetailRes_UserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_UserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_UserLevelOne) ProtoMessage() {} func (x *RewardDetailRes_UserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[368] 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 RewardDetailRes_UserLevelOne.ProtoReflect.Descriptor instead. func (*RewardDetailRes_UserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 6} } func (x *RewardDetailRes_UserLevelOne) GetLevelId() int64 { if x != nil { return x.LevelId } return 0 } func (x *RewardDetailRes_UserLevelOne) GetLevelTitle() string { if x != nil { return x.LevelTitle } return "" } func (x *RewardDetailRes_UserLevelOne) GetRewards() []*RewardDetailRes_Reward { if x != nil { return x.Rewards } return nil } type RewardDetailRes_LangOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 Rewards []*RewardDetailRes_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *RewardDetailRes_LangOne) Reset() { *x = RewardDetailRes_LangOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_LangOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_LangOne) ProtoMessage() {} func (x *RewardDetailRes_LangOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[369] 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 RewardDetailRes_LangOne.ProtoReflect.Descriptor instead. func (*RewardDetailRes_LangOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 7} } func (x *RewardDetailRes_LangOne) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *RewardDetailRes_LangOne) GetRewards() []*RewardDetailRes_Reward { if x != nil { return x.Rewards } return nil } type RewardDetailRes_LangUserLevelOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LangMark string `protobuf:"bytes,1,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //语言标识 LevelList []*RewardDetailRes_UserLevelOne `protobuf:"bytes,2,rep,name=level_list,json=levelList,proto3" json:"level_list,omitempty"` //奖品 } func (x *RewardDetailRes_LangUserLevelOne) Reset() { *x = RewardDetailRes_LangUserLevelOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_LangUserLevelOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_LangUserLevelOne) ProtoMessage() {} func (x *RewardDetailRes_LangUserLevelOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[370] 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 RewardDetailRes_LangUserLevelOne.ProtoReflect.Descriptor instead. func (*RewardDetailRes_LangUserLevelOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 8} } func (x *RewardDetailRes_LangUserLevelOne) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *RewardDetailRes_LangUserLevelOne) GetLevelList() []*RewardDetailRes_UserLevelOne { if x != nil { return x.LevelList } return nil } type RewardDetailRes_CountryOne struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CountryMark string `protobuf:"bytes,1,opt,name=country_mark,json=countryMark,proto3" json:"country_mark,omitempty"` //国家标识 Rewards []*RewardDetailRes_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` //奖品 } func (x *RewardDetailRes_CountryOne) Reset() { *x = RewardDetailRes_CountryOne{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RewardDetailRes_CountryOne) String() string { return protoimpl.X.MessageStringOf(x) } func (*RewardDetailRes_CountryOne) ProtoMessage() {} func (x *RewardDetailRes_CountryOne) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[371] 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 RewardDetailRes_CountryOne.ProtoReflect.Descriptor instead. func (*RewardDetailRes_CountryOne) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{57, 9} } func (x *RewardDetailRes_CountryOne) GetCountryMark() string { if x != nil { return x.CountryMark } return "" } func (x *RewardDetailRes_CountryOne) GetRewards() []*RewardDetailRes_Reward { if x != nil { return x.Rewards } return nil } type CampaignTzRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mark string `protobuf:"bytes,1,opt,name=mark,proto3" json:"mark,omitempty"` //语言标识 TOffset int32 `protobuf:"varint,2,opt,name=t_offset,json=tOffset,proto3" json:"t_offset,omitempty"` //语言对应的时区 } func (x *CampaignTzRes_One) Reset() { *x = CampaignTzRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignTzRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignTzRes_One) ProtoMessage() {} func (x *CampaignTzRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[372] 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 CampaignTzRes_One.ProtoReflect.Descriptor instead. func (*CampaignTzRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{61, 0} } func (x *CampaignTzRes_One) GetMark() string { if x != nil { return x.Mark } return "" } func (x *CampaignTzRes_One) GetTOffset() int32 { if x != nil { return x.TOffset } return 0 } type CampaignRewardTypeRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id RewardType int32 `protobuf:"varint,2,opt,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"` //奖品类型 } func (x *CampaignRewardTypeRes_One) Reset() { *x = CampaignRewardTypeRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[373] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignRewardTypeRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignRewardTypeRes_One) ProtoMessage() {} func (x *CampaignRewardTypeRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[373] 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 CampaignRewardTypeRes_One.ProtoReflect.Descriptor instead. func (*CampaignRewardTypeRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{63, 0} } func (x *CampaignRewardTypeRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CampaignRewardTypeRes_One) GetRewardType() int32 { if x != nil { return x.RewardType } return 0 } type ChildListRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID HashId string `protobuf:"bytes,2,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"` //活动对外id Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` //活动标题 FissionId int64 `protobuf:"varint,4,opt,name=fission_id,json=fissionId,proto3" json:"fission_id,omitempty"` //玩法ID FissionMark string `protobuf:"bytes,5,opt,name=fission_mark,json=fissionMark,proto3" json:"fission_mark,omitempty"` //活动类型玩法标识 StartTime int64 `protobuf:"varint,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` //开始时间时间戳 EndTime int64 `protobuf:"varint,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` //结束时间时间戳 Status int32 `protobuf:"varint,8,opt,name=status,proto3" json:"status,omitempty"` //发布状态(1-待发布,2-已发布,3-已下线,4-预发布) ChildType int32 `protobuf:"varint,9,opt,name=child_type,json=childType,proto3" json:"child_type,omitempty"` //子活动类型 BindCampaign string `protobuf:"bytes,10,opt,name=bind_campaign,json=bindCampaign,proto3" json:"bind_campaign,omitempty"` //绑定的活动名称 HasReport int32 `protobuf:"varint,11,opt,name=has_report,json=hasReport,proto3" json:"has_report,omitempty"` //是否有报表 } func (x *ChildListRes_One) Reset() { *x = ChildListRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[374] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildListRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildListRes_One) ProtoMessage() {} func (x *ChildListRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[374] 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 ChildListRes_One.ProtoReflect.Descriptor instead. func (*ChildListRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{65, 0} } func (x *ChildListRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildListRes_One) GetHashId() string { if x != nil { return x.HashId } return "" } func (x *ChildListRes_One) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildListRes_One) GetFissionId() int64 { if x != nil { return x.FissionId } return 0 } func (x *ChildListRes_One) GetFissionMark() string { if x != nil { return x.FissionMark } return "" } func (x *ChildListRes_One) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *ChildListRes_One) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *ChildListRes_One) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ChildListRes_One) GetChildType() int32 { if x != nil { return x.ChildType } return 0 } func (x *ChildListRes_One) GetBindCampaign() string { if x != nil { return x.BindCampaign } return "" } func (x *ChildListRes_One) GetHasReport() int32 { if x != nil { return x.HasReport } return 0 } type ChildStoreReq_TaskGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) Reward *ChildStoreReq_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,4,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Conds []*ChildStoreReq_Cond `protobuf:"bytes,5,rep,name=conds,proto3" json:"conds,omitempty"` //任务 } func (x *ChildStoreReq_TaskGroup) Reset() { *x = ChildStoreReq_TaskGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[375] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildStoreReq_TaskGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildStoreReq_TaskGroup) ProtoMessage() {} func (x *ChildStoreReq_TaskGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[375] 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 ChildStoreReq_TaskGroup.ProtoReflect.Descriptor instead. func (*ChildStoreReq_TaskGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{66, 0} } func (x *ChildStoreReq_TaskGroup) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildStoreReq_TaskGroup) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildStoreReq_TaskGroup) GetReward() *ChildStoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *ChildStoreReq_TaskGroup) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildStoreReq_TaskGroup) GetConds() []*ChildStoreReq_Cond { if x != nil { return x.Conds } return nil } type ChildStoreReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RewardId int64 `protobuf:"varint,1,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,2,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,3,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,4,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,5,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,6,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,7,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,8,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,9,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) Help int32 `protobuf:"varint,10,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,11,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,12,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,13,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,14,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,15,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,16,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,17,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 Odds int32 `protobuf:"varint,18,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,19,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 CampaignLimit int32 `protobuf:"varint,20,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,21,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,22,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,23,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 PropMark string `protobuf:"bytes,24,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) } func (x *ChildStoreReq_Reward) Reset() { *x = ChildStoreReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[376] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildStoreReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildStoreReq_Reward) ProtoMessage() {} func (x *ChildStoreReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[376] 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 ChildStoreReq_Reward.ProtoReflect.Descriptor instead. func (*ChildStoreReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{66, 1} } func (x *ChildStoreReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ChildStoreReq_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *ChildStoreReq_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ChildStoreReq_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *ChildStoreReq_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *ChildStoreReq_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ChildStoreReq_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ChildStoreReq_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *ChildStoreReq_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildStoreReq_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *ChildStoreReq_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *ChildStoreReq_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *ChildStoreReq_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *ChildStoreReq_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *ChildStoreReq_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildStoreReq_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *ChildStoreReq_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *ChildStoreReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *ChildStoreReq_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *ChildStoreReq_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *ChildStoreReq_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *ChildStoreReq_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *ChildStoreReq_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *ChildStoreReq_Reward) GetPropMark() string { if x != nil { return x.PropMark } return "" } type ChildStoreReq_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event string `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,2,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,3,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,6,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,7,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,8,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,9,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,10,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,11,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,12,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,13,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,14,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,15,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,16,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,17,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,18,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,19,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,20,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,21,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id IsSuper int32 `protobuf:"varint,22,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,23,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,24,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,25,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *ChildStoreReq_Reward `protobuf:"bytes,26,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,27,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Sort int32 `protobuf:"varint,28,opt,name=sort,proto3" json:"sort,omitempty"` //排序 PcParam string `protobuf:"bytes,29,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 } func (x *ChildStoreReq_Cond) Reset() { *x = ChildStoreReq_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[377] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildStoreReq_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildStoreReq_Cond) ProtoMessage() {} func (x *ChildStoreReq_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[377] 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 ChildStoreReq_Cond.ProtoReflect.Descriptor instead. func (*ChildStoreReq_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{66, 2} } func (x *ChildStoreReq_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ChildStoreReq_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *ChildStoreReq_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *ChildStoreReq_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *ChildStoreReq_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *ChildStoreReq_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *ChildStoreReq_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildStoreReq_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *ChildStoreReq_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ChildStoreReq_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *ChildStoreReq_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *ChildStoreReq_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *ChildStoreReq_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ChildStoreReq_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *ChildStoreReq_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *ChildStoreReq_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *ChildStoreReq_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *ChildStoreReq_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ChildStoreReq_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *ChildStoreReq_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *ChildStoreReq_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *ChildStoreReq_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildStoreReq_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *ChildStoreReq_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *ChildStoreReq_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *ChildStoreReq_Cond) GetReward() *ChildStoreReq_Reward { if x != nil { return x.Reward } return nil } func (x *ChildStoreReq_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildStoreReq_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *ChildStoreReq_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } type ChildUpdateReq_TaskGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) Reward *ChildUpdateReq_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,4,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Conds []*ChildUpdateReq_Cond `protobuf:"bytes,5,rep,name=conds,proto3" json:"conds,omitempty"` //任务 } func (x *ChildUpdateReq_TaskGroup) Reset() { *x = ChildUpdateReq_TaskGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[378] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildUpdateReq_TaskGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildUpdateReq_TaskGroup) ProtoMessage() {} func (x *ChildUpdateReq_TaskGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[378] 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 ChildUpdateReq_TaskGroup.ProtoReflect.Descriptor instead. func (*ChildUpdateReq_TaskGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{68, 0} } func (x *ChildUpdateReq_TaskGroup) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildUpdateReq_TaskGroup) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildUpdateReq_TaskGroup) GetReward() *ChildUpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *ChildUpdateReq_TaskGroup) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildUpdateReq_TaskGroup) GetConds() []*ChildUpdateReq_Cond { if x != nil { return x.Conds } return nil } type ChildUpdateReq_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,3,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,6,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,7,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,8,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,9,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,10,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) Help int32 `protobuf:"varint,11,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,12,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,13,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,14,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,15,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,16,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,17,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,18,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 Odds int32 `protobuf:"varint,19,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,20,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 CampaignLimit int32 `protobuf:"varint,21,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,22,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,23,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,24,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 PropMark string `protobuf:"bytes,25,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) } func (x *ChildUpdateReq_Reward) Reset() { *x = ChildUpdateReq_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[379] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildUpdateReq_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildUpdateReq_Reward) ProtoMessage() {} func (x *ChildUpdateReq_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[379] 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 ChildUpdateReq_Reward.ProtoReflect.Descriptor instead. func (*ChildUpdateReq_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{68, 1} } func (x *ChildUpdateReq_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildUpdateReq_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ChildUpdateReq_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *ChildUpdateReq_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ChildUpdateReq_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *ChildUpdateReq_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *ChildUpdateReq_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ChildUpdateReq_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ChildUpdateReq_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *ChildUpdateReq_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildUpdateReq_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *ChildUpdateReq_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *ChildUpdateReq_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *ChildUpdateReq_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *ChildUpdateReq_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *ChildUpdateReq_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildUpdateReq_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *ChildUpdateReq_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *ChildUpdateReq_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *ChildUpdateReq_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *ChildUpdateReq_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *ChildUpdateReq_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *ChildUpdateReq_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *ChildUpdateReq_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *ChildUpdateReq_Reward) GetPropMark() string { if x != nil { return x.PropMark } return "" } type ChildUpdateReq_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event string `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,2,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,3,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,6,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,7,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,8,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,9,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,10,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,11,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,12,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,13,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,14,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,15,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,16,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,17,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,18,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,19,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,20,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,21,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id IsSuper int32 `protobuf:"varint,22,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,23,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,24,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,25,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *ChildUpdateReq_Reward `protobuf:"bytes,26,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,27,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Sort int32 `protobuf:"varint,28,opt,name=sort,proto3" json:"sort,omitempty"` //排序 PcParam string `protobuf:"bytes,29,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 } func (x *ChildUpdateReq_Cond) Reset() { *x = ChildUpdateReq_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[380] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildUpdateReq_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildUpdateReq_Cond) ProtoMessage() {} func (x *ChildUpdateReq_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[380] 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 ChildUpdateReq_Cond.ProtoReflect.Descriptor instead. func (*ChildUpdateReq_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{68, 2} } func (x *ChildUpdateReq_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ChildUpdateReq_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *ChildUpdateReq_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *ChildUpdateReq_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *ChildUpdateReq_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *ChildUpdateReq_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *ChildUpdateReq_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildUpdateReq_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *ChildUpdateReq_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ChildUpdateReq_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *ChildUpdateReq_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *ChildUpdateReq_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *ChildUpdateReq_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ChildUpdateReq_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *ChildUpdateReq_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *ChildUpdateReq_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *ChildUpdateReq_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *ChildUpdateReq_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ChildUpdateReq_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *ChildUpdateReq_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *ChildUpdateReq_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *ChildUpdateReq_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildUpdateReq_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *ChildUpdateReq_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *ChildUpdateReq_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *ChildUpdateReq_Cond) GetReward() *ChildUpdateReq_Reward { if x != nil { return x.Reward } return nil } func (x *ChildUpdateReq_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildUpdateReq_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *ChildUpdateReq_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } type ChildShowRes_TaskGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Open int32 `protobuf:"varint,1,opt,name=open,proto3" json:"open,omitempty"` //是否开启 Chance int32 `protobuf:"varint,2,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) Reward *ChildShowRes_Reward `protobuf:"bytes,3,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,4,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Conds []*ChildShowRes_Cond `protobuf:"bytes,5,rep,name=conds,proto3" json:"conds,omitempty"` //任务 } func (x *ChildShowRes_TaskGroup) Reset() { *x = ChildShowRes_TaskGroup{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[381] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowRes_TaskGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowRes_TaskGroup) ProtoMessage() {} func (x *ChildShowRes_TaskGroup) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[381] 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 ChildShowRes_TaskGroup.ProtoReflect.Descriptor instead. func (*ChildShowRes_TaskGroup) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{71, 0} } func (x *ChildShowRes_TaskGroup) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildShowRes_TaskGroup) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildShowRes_TaskGroup) GetReward() *ChildShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ChildShowRes_TaskGroup) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildShowRes_TaskGroup) GetConds() []*ChildShowRes_Cond { if x != nil { return x.Conds } return nil } type ChildShowRes_Reward struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动奖品id RewardId int64 `protobuf:"varint,2,opt,name=reward_id,json=rewardId,proto3" json:"reward_id,omitempty"` //奖品库的奖品id Stock int32 `protobuf:"varint,3,opt,name=stock,proto3" json:"stock,omitempty"` //奖品库存 InviteNum int32 `protobuf:"varint,4,opt,name=invite_num,json=inviteNum,proto3" json:"invite_num,omitempty"` //需要邀请的人数 RewardNum int32 `protobuf:"varint,5,opt,name=reward_num,json=rewardNum,proto3" json:"reward_num,omitempty"` //获得的奖品数量 IsThank int32 `protobuf:"varint,6,opt,name=is_thank,json=isThank,proto3" json:"is_thank,omitempty"` //是否谢谢参与(0-否,1-是) Score int32 `protobuf:"varint,7,opt,name=score,proto3" json:"score,omitempty"` //领取奖品的分数 SignDay int32 `protobuf:"varint,8,opt,name=sign_day,json=signDay,proto3" json:"sign_day,omitempty"` //签到天数 CollectNum int32 `protobuf:"varint,9,opt,name=collect_num,json=collectNum,proto3" json:"collect_num,omitempty"` //收集碎片数 IsSuper int32 `protobuf:"varint,10,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级大奖(0-否,1-是) KvData []*ChildShowRes_KV `protobuf:"bytes,11,rep,name=kv_data,json=kvData,proto3" json:"kv_data,omitempty"` //奖品自定义参数数据 Title string `protobuf:"bytes,12,opt,name=title,proto3" json:"title,omitempty"` //奖品名称 ImgUrl string `protobuf:"bytes,13,opt,name=img_url,json=imgUrl,proto3" json:"img_url,omitempty"` //奖品图片 ReceiveType int32 `protobuf:"varint,14,opt,name=receive_type,json=receiveType,proto3" json:"receive_type,omitempty"` //发放类型(1-系统发放,2-联系客服,3-客户端发放,4-提交表单) Contact string `protobuf:"bytes,15,opt,name=contact,proto3" json:"contact,omitempty"` //联系方式 Url string `protobuf:"bytes,16,opt,name=url,proto3" json:"url,omitempty"` //回调地址 Help int32 `protobuf:"varint,17,opt,name=help,proto3" json:"help,omitempty"` //开启下载助力(0-否,1-是) HelpPercent float64 `protobuf:"fixed64,18,opt,name=help_percent,json=helpPercent,proto3" json:"help_percent,omitempty"` //每个下载获得的进度比率 Click int32 `protobuf:"varint,19,opt,name=click,proto3" json:"click,omitempty"` //开启点击助力(0-否,1-是) ClickPercent float64 `protobuf:"fixed64,20,opt,name=click_percent,json=clickPercent,proto3" json:"click_percent,omitempty"` //每个点击助力获得的进度比率 ClickPercentLimit float64 `protobuf:"fixed64,21,opt,name=click_percent_limit,json=clickPercentLimit,proto3" json:"click_percent_limit,omitempty"` //可获得的最大点击助力获得的进度比率 Open int32 `protobuf:"varint,22,opt,name=open,proto3" json:"open,omitempty"` //开启拉日活(0-否,1-是) OpenPercent float64 `protobuf:"fixed64,23,opt,name=open_percent,json=openPercent,proto3" json:"open_percent,omitempty"` //每个拉日活力获得的进度比率 OpenPercentLimit float64 `protobuf:"fixed64,24,opt,name=open_percent_limit,json=openPercentLimit,proto3" json:"open_percent_limit,omitempty"` //可获得的最大拉日活获得的进度比率 LangMark string `protobuf:"bytes,25,opt,name=lang_mark,json=langMark,proto3" json:"lang_mark,omitempty"` //奖品语言标识 Odds int32 `protobuf:"varint,26,opt,name=odds,proto3" json:"odds,omitempty"` //中奖率 JumpUrl string `protobuf:"bytes,27,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 FormTitle string `protobuf:"bytes,28,opt,name=form_title,json=formTitle,proto3" json:"form_title,omitempty"` //表单标题 CampaignLimit int32 `protobuf:"varint,29,opt,name=campaign_limit,json=campaignLimit,proto3" json:"campaign_limit,omitempty"` //活动内单个用户可获取该奖品次数 Register int32 `protobuf:"varint,30,opt,name=register,proto3" json:"register,omitempty"` //开启注册助力(0-否,1-是) RegisterPercent float64 `protobuf:"fixed64,31,opt,name=register_percent,json=registerPercent,proto3" json:"register_percent,omitempty"` //每个注册获得的进度比率 InitPercent float64 `protobuf:"fixed64,32,opt,name=init_percent,json=initPercent,proto3" json:"init_percent,omitempty"` //初始助力进度 PropMark string `protobuf:"bytes,33,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) } func (x *ChildShowRes_Reward) Reset() { *x = ChildShowRes_Reward{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[382] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowRes_Reward) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowRes_Reward) ProtoMessage() {} func (x *ChildShowRes_Reward) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[382] 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 ChildShowRes_Reward.ProtoReflect.Descriptor instead. func (*ChildShowRes_Reward) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{71, 1} } func (x *ChildShowRes_Reward) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *ChildShowRes_Reward) GetRewardId() int64 { if x != nil { return x.RewardId } return 0 } func (x *ChildShowRes_Reward) GetStock() int32 { if x != nil { return x.Stock } return 0 } func (x *ChildShowRes_Reward) GetInviteNum() int32 { if x != nil { return x.InviteNum } return 0 } func (x *ChildShowRes_Reward) GetRewardNum() int32 { if x != nil { return x.RewardNum } return 0 } func (x *ChildShowRes_Reward) GetIsThank() int32 { if x != nil { return x.IsThank } return 0 } func (x *ChildShowRes_Reward) GetScore() int32 { if x != nil { return x.Score } return 0 } func (x *ChildShowRes_Reward) GetSignDay() int32 { if x != nil { return x.SignDay } return 0 } func (x *ChildShowRes_Reward) GetCollectNum() int32 { if x != nil { return x.CollectNum } return 0 } func (x *ChildShowRes_Reward) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildShowRes_Reward) GetKvData() []*ChildShowRes_KV { if x != nil { return x.KvData } return nil } func (x *ChildShowRes_Reward) GetTitle() string { if x != nil { return x.Title } return "" } func (x *ChildShowRes_Reward) GetImgUrl() string { if x != nil { return x.ImgUrl } return "" } func (x *ChildShowRes_Reward) GetReceiveType() int32 { if x != nil { return x.ReceiveType } return 0 } func (x *ChildShowRes_Reward) GetContact() string { if x != nil { return x.Contact } return "" } func (x *ChildShowRes_Reward) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ChildShowRes_Reward) GetHelp() int32 { if x != nil { return x.Help } return 0 } func (x *ChildShowRes_Reward) GetHelpPercent() float64 { if x != nil { return x.HelpPercent } return 0 } func (x *ChildShowRes_Reward) GetClick() int32 { if x != nil { return x.Click } return 0 } func (x *ChildShowRes_Reward) GetClickPercent() float64 { if x != nil { return x.ClickPercent } return 0 } func (x *ChildShowRes_Reward) GetClickPercentLimit() float64 { if x != nil { return x.ClickPercentLimit } return 0 } func (x *ChildShowRes_Reward) GetOpen() int32 { if x != nil { return x.Open } return 0 } func (x *ChildShowRes_Reward) GetOpenPercent() float64 { if x != nil { return x.OpenPercent } return 0 } func (x *ChildShowRes_Reward) GetOpenPercentLimit() float64 { if x != nil { return x.OpenPercentLimit } return 0 } func (x *ChildShowRes_Reward) GetLangMark() string { if x != nil { return x.LangMark } return "" } func (x *ChildShowRes_Reward) GetOdds() int32 { if x != nil { return x.Odds } return 0 } func (x *ChildShowRes_Reward) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } func (x *ChildShowRes_Reward) GetFormTitle() string { if x != nil { return x.FormTitle } return "" } func (x *ChildShowRes_Reward) GetCampaignLimit() int32 { if x != nil { return x.CampaignLimit } return 0 } func (x *ChildShowRes_Reward) GetRegister() int32 { if x != nil { return x.Register } return 0 } func (x *ChildShowRes_Reward) GetRegisterPercent() float64 { if x != nil { return x.RegisterPercent } return 0 } func (x *ChildShowRes_Reward) GetInitPercent() float64 { if x != nil { return x.InitPercent } return 0 } func (x *ChildShowRes_Reward) GetPropMark() string { if x != nil { return x.PropMark } return "" } type ChildShowRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Event string `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 EventKey string `protobuf:"bytes,2,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,3,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 IfCond int32 `protobuf:"varint,5,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) TaskLimit int32 `protobuf:"varint,6,opt,name=task_limit,json=taskLimit,proto3" json:"task_limit,omitempty"` //任务次数限制 Chance int32 `protobuf:"varint,7,opt,name=chance,proto3" json:"chance,omitempty"` //完成任务获得的数量(如:骰子数) TriggerType int32 `protobuf:"varint,8,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"` //事件触发条件(1-点击去完成按钮,2-全局监听) DayLimit int32 `protobuf:"varint,9,opt,name=day_limit,json=dayLimit,proto3" json:"day_limit,omitempty"` //每日任务次数限制(0为不限制) LevelIds []int64 `protobuf:"varint,10,rep,packed,name=level_ids,json=levelIds,proto3" json:"level_ids,omitempty"` //限制的用户类型id集合 EventType int32 `protobuf:"varint,11,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` //事件来源(1-自定义事件,2-广告事件) ViewType int32 `protobuf:"varint,12,opt,name=view_type,json=viewType,proto3" json:"view_type,omitempty"` //广告观看路径(1-APP内,2-APP外) LangMarks []string `protobuf:"bytes,13,rep,name=lang_marks,json=langMarks,proto3" json:"lang_marks,omitempty"` //限制的语言集合 WatchSec int32 `protobuf:"varint,14,opt,name=watch_sec,json=watchSec,proto3" json:"watch_sec,omitempty"` //观看秒数 WeekLimit int32 `protobuf:"varint,15,opt,name=week_limit,json=weekLimit,proto3" json:"week_limit,omitempty"` //广告观看次数 WeekNum int32 `protobuf:"varint,16,opt,name=week_num,json=weekNum,proto3" json:"week_num,omitempty"` //观看秒数 OpenJump int32 `protobuf:"varint,17,opt,name=open_jump,json=openJump,proto3" json:"open_jump,omitempty"` //开启活动跳转(0-否,1-是) WebUrl string `protobuf:"bytes,18,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"` //web端url长度 ExtraParam string `protobuf:"bytes,19,opt,name=extra_param,json=extraParam,proto3" json:"extra_param,omitempty"` //附加参数 GoShow int32 `protobuf:"varint,20,opt,name=go_show,json=goShow,proto3" json:"go_show,omitempty"` //是否显示“去完成按钮”(0-否,1-是) AdsStrategyId string `protobuf:"bytes,21,opt,name=ads_strategy_id,json=adsStrategyId,proto3" json:"ads_strategy_id,omitempty"` //策略id IsSuper int32 `protobuf:"varint,22,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` //是否超级任务(0-否,1-是) HasPre int32 `protobuf:"varint,23,opt,name=has_pre,json=hasPre,proto3" json:"has_pre,omitempty"` //是否有前置条件(0-否,1-是) PreCond int32 `protobuf:"varint,24,opt,name=pre_cond,json=preCond,proto3" json:"pre_cond,omitempty"` //前置任务(1-点击任务icon,2-完成1个任务后,3-完成2个任务后,4-进入活动30秒后) ExpiredMin int32 `protobuf:"varint,25,opt,name=expired_min,json=expiredMin,proto3" json:"expired_min,omitempty"` //过期分钟数 Reward *ChildShowRes_Reward `protobuf:"bytes,26,opt,name=reward,proto3" json:"reward,omitempty"` //奖品 PropMark string `protobuf:"bytes,27,opt,name=prop_mark,json=propMark,proto3" json:"prop_mark,omitempty"` //奖励的道具类型(chance-道具数量,reward-奖品) Sort int32 `protobuf:"varint,28,opt,name=sort,proto3" json:"sort,omitempty"` //排序 PcParam string `protobuf:"bytes,29,opt,name=pc_param,json=pcParam,proto3" json:"pc_param,omitempty"` //pc端附加参数 } func (x *ChildShowRes_Cond) Reset() { *x = ChildShowRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[383] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowRes_Cond) ProtoMessage() {} func (x *ChildShowRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[383] 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 ChildShowRes_Cond.ProtoReflect.Descriptor instead. func (*ChildShowRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{71, 2} } func (x *ChildShowRes_Cond) GetEvent() string { if x != nil { return x.Event } return "" } func (x *ChildShowRes_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *ChildShowRes_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *ChildShowRes_Cond) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *ChildShowRes_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } func (x *ChildShowRes_Cond) GetTaskLimit() int32 { if x != nil { return x.TaskLimit } return 0 } func (x *ChildShowRes_Cond) GetChance() int32 { if x != nil { return x.Chance } return 0 } func (x *ChildShowRes_Cond) GetTriggerType() int32 { if x != nil { return x.TriggerType } return 0 } func (x *ChildShowRes_Cond) GetDayLimit() int32 { if x != nil { return x.DayLimit } return 0 } func (x *ChildShowRes_Cond) GetLevelIds() []int64 { if x != nil { return x.LevelIds } return nil } func (x *ChildShowRes_Cond) GetEventType() int32 { if x != nil { return x.EventType } return 0 } func (x *ChildShowRes_Cond) GetViewType() int32 { if x != nil { return x.ViewType } return 0 } func (x *ChildShowRes_Cond) GetLangMarks() []string { if x != nil { return x.LangMarks } return nil } func (x *ChildShowRes_Cond) GetWatchSec() int32 { if x != nil { return x.WatchSec } return 0 } func (x *ChildShowRes_Cond) GetWeekLimit() int32 { if x != nil { return x.WeekLimit } return 0 } func (x *ChildShowRes_Cond) GetWeekNum() int32 { if x != nil { return x.WeekNum } return 0 } func (x *ChildShowRes_Cond) GetOpenJump() int32 { if x != nil { return x.OpenJump } return 0 } func (x *ChildShowRes_Cond) GetWebUrl() string { if x != nil { return x.WebUrl } return "" } func (x *ChildShowRes_Cond) GetExtraParam() string { if x != nil { return x.ExtraParam } return "" } func (x *ChildShowRes_Cond) GetGoShow() int32 { if x != nil { return x.GoShow } return 0 } func (x *ChildShowRes_Cond) GetAdsStrategyId() string { if x != nil { return x.AdsStrategyId } return "" } func (x *ChildShowRes_Cond) GetIsSuper() int32 { if x != nil { return x.IsSuper } return 0 } func (x *ChildShowRes_Cond) GetHasPre() int32 { if x != nil { return x.HasPre } return 0 } func (x *ChildShowRes_Cond) GetPreCond() int32 { if x != nil { return x.PreCond } return 0 } func (x *ChildShowRes_Cond) GetExpiredMin() int32 { if x != nil { return x.ExpiredMin } return 0 } func (x *ChildShowRes_Cond) GetReward() *ChildShowRes_Reward { if x != nil { return x.Reward } return nil } func (x *ChildShowRes_Cond) GetPropMark() string { if x != nil { return x.PropMark } return "" } func (x *ChildShowRes_Cond) GetSort() int32 { if x != nil { return x.Sort } return 0 } func (x *ChildShowRes_Cond) GetPcParam() string { if x != nil { return x.PcParam } return "" } type ChildShowRes_KV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` //对应字段名 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //对应字段值 } func (x *ChildShowRes_KV) Reset() { *x = ChildShowRes_KV{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[384] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChildShowRes_KV) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChildShowRes_KV) ProtoMessage() {} func (x *ChildShowRes_KV) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[384] 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 ChildShowRes_KV.ProtoReflect.Descriptor instead. func (*ChildShowRes_KV) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{71, 3} } func (x *ChildShowRes_KV) GetKey() string { if x != nil { return x.Key } return "" } func (x *ChildShowRes_KV) GetValue() string { if x != nil { return x.Value } return "" } type TaskCenterJumpRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动ID JumpUrl string `protobuf:"bytes,2,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url,omitempty"` //跳转地址 } func (x *TaskCenterJumpRes_One) Reset() { *x = TaskCenterJumpRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[385] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TaskCenterJumpRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*TaskCenterJumpRes_One) ProtoMessage() {} func (x *TaskCenterJumpRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[385] 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 TaskCenterJumpRes_One.ProtoReflect.Descriptor instead. func (*TaskCenterJumpRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{73, 0} } func (x *TaskCenterJumpRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *TaskCenterJumpRes_One) GetJumpUrl() string { if x != nil { return x.JumpUrl } return "" } type CondListRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //任务id Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` //条件描述 Event string `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` //事件关键字 Conds []*CondListRes_Cond `protobuf:"bytes,4,rep,name=conds,proto3" json:"conds,omitempty"` //事件key } func (x *CondListRes_One) Reset() { *x = CondListRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[386] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CondListRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*CondListRes_One) ProtoMessage() {} func (x *CondListRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[386] 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 CondListRes_One.ProtoReflect.Descriptor instead. func (*CondListRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{75, 0} } func (x *CondListRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CondListRes_One) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *CondListRes_One) GetEvent() string { if x != nil { return x.Event } return "" } func (x *CondListRes_One) GetConds() []*CondListRes_Cond { if x != nil { return x.Conds } return nil } type CondListRes_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EventKey string `protobuf:"bytes,1,opt,name=event_key,json=eventKey,proto3" json:"event_key,omitempty"` //事件key EventVal string `protobuf:"bytes,2,opt,name=event_val,json=eventVal,proto3" json:"event_val,omitempty"` //事件值 IfCond int32 `protobuf:"varint,3,opt,name=if_cond,json=ifCond,proto3" json:"if_cond,omitempty"` //等式(0-等于,1-大于等于,2-累计) } func (x *CondListRes_Cond) Reset() { *x = CondListRes_Cond{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[387] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CondListRes_Cond) String() string { return protoimpl.X.MessageStringOf(x) } func (*CondListRes_Cond) ProtoMessage() {} func (x *CondListRes_Cond) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[387] 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 CondListRes_Cond.ProtoReflect.Descriptor instead. func (*CondListRes_Cond) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{75, 1} } func (x *CondListRes_Cond) GetEventKey() string { if x != nil { return x.EventKey } return "" } func (x *CondListRes_Cond) GetEventVal() string { if x != nil { return x.EventVal } return "" } func (x *CondListRes_Cond) GetIfCond() int32 { if x != nil { return x.IfCond } return 0 } type CampaignsRes_One struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //活动id Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` //活动标题 } func (x *CampaignsRes_One) Reset() { *x = CampaignsRes_One{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[388] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CampaignsRes_One) String() string { return protoimpl.X.MessageStringOf(x) } func (*CampaignsRes_One) ProtoMessage() {} func (x *CampaignsRes_One) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[388] 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 CampaignsRes_One.ProtoReflect.Descriptor instead. func (*CampaignsRes_One) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{77, 0} } func (x *CampaignsRes_One) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *CampaignsRes_One) GetTitle() string { if x != nil { return x.Title } return "" } type VsSettlementReq_Score struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TeamId int64 `protobuf:"varint,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` //队伍id Score string `protobuf:"bytes,2,opt,name=score,proto3" json:"score,omitempty"` //胜利得分 } func (x *VsSettlementReq_Score) Reset() { *x = VsSettlementReq_Score{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[389] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementReq_Score) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementReq_Score) ProtoMessage() {} func (x *VsSettlementReq_Score) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[389] 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 VsSettlementReq_Score.ProtoReflect.Descriptor instead. func (*VsSettlementReq_Score) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{82, 0} } func (x *VsSettlementReq_Score) GetTeamId() int64 { if x != nil { return x.TeamId } return 0 } func (x *VsSettlementReq_Score) GetScore() string { if x != nil { return x.Score } return "" } type VsSettlementRes_PkTeam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //比赛id Teams []*VsSettlementRes_Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"` //队伍集合 } func (x *VsSettlementRes_PkTeam) Reset() { *x = VsSettlementRes_PkTeam{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[390] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementRes_PkTeam) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementRes_PkTeam) ProtoMessage() {} func (x *VsSettlementRes_PkTeam) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[390] 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 VsSettlementRes_PkTeam.ProtoReflect.Descriptor instead. func (*VsSettlementRes_PkTeam) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{83, 0} } func (x *VsSettlementRes_PkTeam) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *VsSettlementRes_PkTeam) GetTeams() []*VsSettlementRes_Team { if x != nil { return x.Teams } return nil } type VsSettlementRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 } func (x *VsSettlementRes_Team) Reset() { *x = VsSettlementRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[391] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementRes_Team) ProtoMessage() {} func (x *VsSettlementRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[391] 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 VsSettlementRes_Team.ProtoReflect.Descriptor instead. func (*VsSettlementRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{83, 1} } func (x *VsSettlementRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *VsSettlementRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *VsSettlementRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } type VsSettlementInfoRes_Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //队伍id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` //队伍名称 LogoImg string `protobuf:"bytes,3,opt,name=logo_img,json=logoImg,proto3" json:"logo_img,omitempty"` //队伍图标 Score string `protobuf:"bytes,4,opt,name=score,proto3" json:"score,omitempty"` //胜利得分 } func (x *VsSettlementInfoRes_Team) Reset() { *x = VsSettlementInfoRes_Team{} if protoimpl.UnsafeEnabled { mi := &file_w_campaign_proto_msgTypes[392] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VsSettlementInfoRes_Team) String() string { return protoimpl.X.MessageStringOf(x) } func (*VsSettlementInfoRes_Team) ProtoMessage() {} func (x *VsSettlementInfoRes_Team) ProtoReflect() protoreflect.Message { mi := &file_w_campaign_proto_msgTypes[392] 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 VsSettlementInfoRes_Team.ProtoReflect.Descriptor instead. func (*VsSettlementInfoRes_Team) Descriptor() ([]byte, []int) { return file_w_campaign_proto_rawDescGZIP(), []int{85, 0} } func (x *VsSettlementInfoRes_Team) GetId() int64 { if x != nil { return x.Id } return 0 } func (x *VsSettlementInfoRes_Team) GetName() string { if x != nil { return x.Name } return "" } func (x *VsSettlementInfoRes_Team) GetLogoImg() string { if x != nil { return x.LogoImg } return "" } func (x *VsSettlementInfoRes_Team) GetScore() string { if x != nil { return x.Score } return "" } var File_w_campaign_proto protoreflect.FileDescriptor var file_w_campaign_proto_rawDesc = []byte{ 0x0a, 0x10, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x22, 0x88, 0x03, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x22, 0xfb, 0x0a, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0xa7, 0x08, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x4c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x57, 0x65, 0x62, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x61, 0x73, 0x57, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x7a, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x54, 0x7a, 0x52, 0x06, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x75, 0x0a, 0x06, 0x4c, 0x61, 0x6e, 0x67, 0x54, 0x7a, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x48, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x40, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x0a, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x22, 0xe7, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x6c, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x03, 0x6c, 0x6f, 0x63, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x61, 0x1a, 0x76, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6f, 0x73, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x22, 0x6e, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x22, 0x96, 0x90, 0x01, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x67, 0x72, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x67, 0x72, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x12, 0x4e, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x52, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x12, 0x35, 0x0a, 0x03, 0x77, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x77, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x69, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x04, 0x64, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x52, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x52, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x12, 0x41, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x57, 0x65, 0x62, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x48, 0x0a, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x70, 0x79, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x6f, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x52, 0x07, 0x6b, 0x65, 0x65, 0x70, 0x44, 0x6f, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0a, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x67, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x66, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x29, 0x0a, 0x02, 0x76, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x56, 0x73, 0x52, 0x02, 0x76, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0e, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x0d, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x67, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x67, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x1a, 0x49, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5c, 0x0a, 0x08, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0x9d, 0x02, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x31, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x33, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0x8d, 0x02, 0x0a, 0x08, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x7c, 0x0a, 0x0c, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x89, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x95, 0x03, 0x0a, 0x02, 0x56, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x61, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x73, 0x5f, 0x74, 0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x73, 0x54, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4d, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0xc4, 0x03, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x73, 0x44, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x64, 0x72, 0x61, 0x77, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x44, 0x72, 0x61, 0x77, 0x1a, 0x35, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x6f, 0x0a, 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x62, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x42, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xa1, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xb9, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0xa7, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x69, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x67, 0x1a, 0xd0, 0x02, 0x0a, 0x0a, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x3f, 0x0a, 0x05, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xa7, 0x0e, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x65, 0x63, 0x68, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6d, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6d, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x61, 0x73, 0x57, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x45, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x26, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x61, 0x73, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x68, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x1a, 0x8b, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xfc, 0x01, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xa2, 0x02, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x42, 0x0a, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xe6, 0x08, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x1a, 0xc8, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0x66, 0x0a, 0x0a, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x91, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0xac, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x78, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0xc2, 0x01, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xaf, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0xe8, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x1a, 0x77, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x41, 0x64, 0x64, 0x1a, 0x9f, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xdf, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x3f, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x79, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x62, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x5c, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x81, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x68, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x73, 0x0a, 0x0a, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3b, 0x0a, 0x08, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x56, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x1a, 0xf1, 0x01, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xfd, 0x02, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x1a, 0x86, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0xb7, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x4c, 0x6f, 0x6f, 0x70, 0x1a, 0x95, 0x02, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x83, 0x04, 0x0a, 0x04, 0x44, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x6c, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0x66, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x1a, 0x9c, 0x02, 0x0a, 0x04, 0x47, 0x72, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x69, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x69, 0x65, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x1a, 0x1c, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x1a, 0x48, 0x0a, 0x06, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x21, 0x0a, 0x04, 0x43, 0x68, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x61, 0x72, 0x1a, 0x91, 0x01, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x1a, 0x61, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x8b, 0x05, 0x0a, 0x04, 0x4b, 0x65, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x47, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x44, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xda, 0x02, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x47, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x65, 0x74, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0xaf, 0x01, 0x0a, 0x08, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x1a, 0xed, 0x01, 0x0a, 0x04, 0x50, 0x75, 0x73, 0x68, 0x12, 0x3d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5b, 0x0a, 0x07, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x1a, 0x30, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x91, 0x01, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x6f, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0xa3, 0x03, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x55, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x61, 0x63, 0x6b, 0x42, 0x74, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x33, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x9f, 0x92, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x04, 0x67, 0x72, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x67, 0x72, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x12, 0x4f, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x52, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x12, 0x36, 0x0a, 0x03, 0x77, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x77, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x69, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x04, 0x64, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x52, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x12, 0x36, 0x0a, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x52, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x57, 0x65, 0x62, 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x49, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x12, 0x37, 0x0a, 0x08, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x6f, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x52, 0x07, 0x6b, 0x65, 0x65, 0x70, 0x44, 0x6f, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x33, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x25, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0a, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x0a, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x67, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x66, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x02, 0x76, 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x56, 0x73, 0x52, 0x02, 0x76, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0e, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x0d, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x67, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x67, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x1a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5d, 0x0a, 0x08, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0xab, 0x01, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0xa1, 0x02, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x32, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x34, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0xa0, 0x02, 0x0a, 0x08, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x7c, 0x0a, 0x0c, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x99, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x96, 0x03, 0x0a, 0x02, 0x56, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x61, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x73, 0x5f, 0x74, 0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x73, 0x54, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4d, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x45, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0xd5, 0x03, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x73, 0x44, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x64, 0x72, 0x61, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x44, 0x72, 0x61, 0x77, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x6f, 0x0a, 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x62, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x42, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xa1, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xb9, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0xa7, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x69, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x67, 0x1a, 0xd0, 0x02, 0x0a, 0x0a, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x3f, 0x0a, 0x05, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xc4, 0x0e, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x65, 0x63, 0x68, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6d, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6d, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x61, 0x73, 0x57, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x45, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x26, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x61, 0x73, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x68, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x1a, 0x9c, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x8c, 0x02, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xa5, 0x02, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xf7, 0x08, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x1a, 0xc9, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0x66, 0x0a, 0x0a, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x93, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0xac, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x78, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0xc4, 0x01, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc2, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x3a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0xe8, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x1a, 0x77, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x41, 0x64, 0x64, 0x1a, 0x9f, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xe4, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x32, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x7a, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x63, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x5d, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x9b, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x82, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x45, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x69, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x84, 0x01, 0x0a, 0x0a, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x4b, 0x0a, 0x08, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x66, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x1a, 0xf2, 0x01, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xfe, 0x02, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x1a, 0x86, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0xb7, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x4c, 0x6f, 0x6f, 0x70, 0x1a, 0x95, 0x02, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x84, 0x04, 0x0a, 0x04, 0x44, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x6c, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0x66, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x1a, 0x9d, 0x02, 0x0a, 0x04, 0x47, 0x72, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x69, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x69, 0x65, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x1a, 0x2c, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x1a, 0x48, 0x0a, 0x06, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x21, 0x0a, 0x04, 0x43, 0x68, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x61, 0x72, 0x1a, 0x91, 0x01, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x1a, 0x61, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x8e, 0x05, 0x0a, 0x04, 0x4b, 0x65, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x47, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x44, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xda, 0x02, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x47, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x65, 0x74, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0xb0, 0x01, 0x0a, 0x08, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x1a, 0xf1, 0x01, 0x0a, 0x04, 0x50, 0x75, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5c, 0x0a, 0x07, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x1a, 0x30, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x91, 0x01, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x6f, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0xa3, 0x03, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x55, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x61, 0x63, 0x6b, 0x42, 0x74, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x4f, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0xa5, 0x9d, 0x01, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x65, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x6c, 0x69, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x67, 0x72, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x67, 0x72, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x12, 0x4d, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x52, 0x04, 0x71, 0x75, 0x69, 0x7a, 0x12, 0x34, 0x0a, 0x03, 0x77, 0x69, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x77, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x69, 0x63, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x04, 0x64, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x52, 0x04, 0x67, 0x72, 0x6f, 0x77, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x52, 0x06, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x63, 0x68, 0x6f, 0x70, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x57, 0x65, 0x62, 0x12, 0x41, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x6f, 0x67, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x52, 0x07, 0x6b, 0x65, 0x65, 0x70, 0x44, 0x6f, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x31, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0a, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x0a, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x67, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09, 0x66, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x02, 0x76, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x56, 0x73, 0x52, 0x02, 0x76, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0e, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x0d, 0x47, 0x61, 0x73, 0x68, 0x61, 0x70, 0x6f, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x67, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x67, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x67, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x1a, 0x48, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5b, 0x0a, 0x08, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0xa9, 0x01, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0x99, 0x02, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x32, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0x9a, 0x02, 0x0a, 0x08, 0x55, 0x6e, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x63, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x7c, 0x0a, 0x0c, 0x55, 0x6e, 0x6f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xb2, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x6f, 0x1a, 0x94, 0x03, 0x0a, 0x02, 0x56, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x61, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x73, 0x5f, 0x74, 0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x73, 0x54, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4d, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x53, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x8c, 0x04, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x76, 0x73, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x64, 0x64, 0x73, 0x5f, 0x64, 0x72, 0x61, 0x77, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x64, 0x64, 0x73, 0x44, 0x72, 0x61, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x6f, 0x0a, 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x62, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x42, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xa1, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xb9, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x69, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0xa7, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x69, 0x64, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x69, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x67, 0x1a, 0xd0, 0x02, 0x0a, 0x0a, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x3f, 0x0a, 0x05, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x78, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6f, 0x73, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x1a, 0x83, 0x0f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x65, 0x63, 0x68, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x74, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6d, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6d, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x57, 0x65, 0x62, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x61, 0x73, 0x57, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x45, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x29, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x61, 0x73, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x68, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x35, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x63, 0x65, 0x1a, 0xb9, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xab, 0x02, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x9f, 0x02, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xa3, 0x09, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x1a, 0xc7, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x1a, 0x66, 0x0a, 0x0a, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xa7, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xac, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x78, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0xc0, 0x01, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x04, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x68, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x7d, 0x0a, 0x09, 0x57, 0x65, 0x62, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x06, 0x6b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xa9, 0x09, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x06, 0x6b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x38, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0xe8, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x1a, 0x77, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x79, 0x41, 0x64, 0x64, 0x1a, 0x9f, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xda, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x3e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xa8, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x9b, 0x01, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x89, 0x02, 0x0a, 0x0d, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x80, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x43, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x67, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x82, 0x01, 0x0a, 0x0a, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x4b, 0x0a, 0x08, 0x51, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x81, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x1a, 0xa4, 0x02, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x1a, 0xfc, 0x02, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x1a, 0x86, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0xb7, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x4c, 0x6f, 0x6f, 0x70, 0x1a, 0x95, 0x02, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x1a, 0x82, 0x04, 0x0a, 0x04, 0x44, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x6c, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0x66, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x65, 0x72, 0x1a, 0x9b, 0x02, 0x0a, 0x04, 0x47, 0x72, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x69, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x69, 0x65, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x1a, 0x2c, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x1a, 0x48, 0x0a, 0x06, 0x42, 0x61, 0x6c, 0x6c, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x21, 0x0a, 0x04, 0x43, 0x68, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x61, 0x72, 0x1a, 0xe2, 0x01, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x3b, 0x0a, 0x09, 0x73, 0x70, 0x69, 0x6e, 0x5f, 0x63, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x69, 0x6e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x08, 0x73, 0x70, 0x69, 0x6e, 0x43, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x1a, 0x2e, 0x0a, 0x08, 0x53, 0x70, 0x69, 0x6e, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x1a, 0x61, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x61, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x88, 0x05, 0x0a, 0x04, 0x4b, 0x65, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x47, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x47, 0x65, 0x74, 0x44, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0xda, 0x02, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x47, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x61, 0x79, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x61, 0x79, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x47, 0x65, 0x74, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0xae, 0x01, 0x0a, 0x08, 0x4b, 0x65, 0x65, 0x70, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x1a, 0xe9, 0x01, 0x0a, 0x04, 0x50, 0x75, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x52, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x1a, 0x5a, 0x0a, 0x07, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x1a, 0x30, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0xe2, 0x01, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x6f, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x09, 0x73, 0x70, 0x69, 0x6e, 0x5f, 0x63, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x69, 0x6e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x08, 0x73, 0x70, 0x69, 0x6e, 0x43, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x6b, 0x1a, 0xc7, 0x03, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x55, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x61, 0x63, 0x6b, 0x42, 0x74, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x5b, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xf5, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x77, 0x65, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x70, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x34, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x38, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x23, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x22, 0x1b, 0x0a, 0x09, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x65, 0x0a, 0x09, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x02, 0x6b, 0x76, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x79, 0x0a, 0x07, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x7c, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x3a, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x76, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x76, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x34, 0x0a, 0x09, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xdf, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x1a, 0x7d, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x65, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x38, 0x0a, 0x0e, 0x44, 0x64, 0x6c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x0e, 0x44, 0x64, 0x6c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x34, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x81, 0x28, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x61, 0x73, 0x57, 0x65, 0x62, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x57, 0x61, 0x72, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x1a, 0x91, 0x0d, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1a, 0x0a, 0x09, 0x64, 0x6c, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6c, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x69, 0x74, 0x52, 0x04, 0x71, 0x75, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x57, 0x65, 0x62, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x48, 0x0a, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x3d, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x1a, 0xd9, 0x01, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x32, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0x99, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x54, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x76, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x9b, 0x01, 0x0a, 0x07, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x38, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0xaa, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xc1, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x8c, 0x02, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xc3, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x33, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x77, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x83, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x68, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x55, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x54, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x1a, 0x6e, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x71, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xbe, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x22, 0x47, 0x0a, 0x07, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0xfd, 0x1a, 0x0a, 0x07, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1a, 0x0a, 0x09, 0x64, 0x6c, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6c, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x69, 0x74, 0x52, 0x04, 0x71, 0x75, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x1a, 0xd5, 0x01, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x2f, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x31, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0xa2, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x53, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x75, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x7c, 0x0a, 0x07, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, 0x54, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x54, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x1a, 0x6d, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x71, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa1, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x1a, 0xb9, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0xab, 0x02, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x38, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x38, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0xaa, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xea, 0x1b, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x6f, 0x56, 0x69, 0x65, 0x77, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1c, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x65, 0x62, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x75, 0x70, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x6d, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x12, 0x1a, 0x0a, 0x09, 0x64, 0x6c, 0x5f, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x6c, 0x42, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x2b, 0x0a, 0x12, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x11, 0x64, 0x6c, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x74, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6c, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x70, 0x70, 0x42, 0x74, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x71, 0x75, 0x69, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x69, 0x74, 0x52, 0x04, 0x71, 0x75, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x68, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x61, 0x73, 0x68, 0x52, 0x04, 0x63, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x09, 0x74, 0x61, 0x6c, 0x6b, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x6c, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x6c, 0x6b, 0x54, 0x65, 0x78, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x03, 0x75, 0x6e, 0x6f, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x52, 0x03, 0x75, 0x6e, 0x6f, 0x1a, 0xe5, 0x01, 0x0a, 0x03, 0x55, 0x6e, 0x6f, 0x12, 0x33, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x06, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x35, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x1a, 0xa2, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x57, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x79, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x73, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x73, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0x3d, 0x0a, 0x04, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x66, 0x0a, 0x07, 0x51, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0b, 0x71, 0x61, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x61, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x71, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x71, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x75, 0x69, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, 0x38, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x38, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0xaa, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x62, 0x74, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x42, 0x74, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x58, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x54, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x1a, 0x71, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x71, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa1, 0x01, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x1a, 0xc4, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x6e, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x8c, 0x02, 0x0a, 0x07, 0x48, 0x6f, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x58, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x57, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x48, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x2a, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x29, 0x0a, 0x0e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x0d, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x5b, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x22, 0x8d, 0x04, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6d, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x63, 0x5f, 0x62, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x63, 0x42, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x8c, 0x09, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x77, 0x65, 0x62, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x57, 0x65, 0x62, 0x12, 0x47, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x4d, 0x0a, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x1a, 0xb1, 0x06, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x06, 0x6b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x04, 0x0a, 0x0b, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x44, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x39, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x1a, 0x21, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x22, 0x36, 0x0a, 0x0b, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xe6, 0x03, 0x0a, 0x0c, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x49, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x1a, 0x21, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x22, 0x37, 0x0a, 0x0c, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x25, 0x0a, 0x0a, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xb3, 0x07, 0x0a, 0x0a, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x65, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x67, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x66, 0x6c, 0x69, 0x70, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xfd, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x06, 0x6b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0x21, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x49, 0x6d, 0x67, 0x22, 0x82, 0x02, 0x0a, 0x11, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x11, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x7b, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2a, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xa9, 0x16, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x49, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x4f, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x0b, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x73, 0x74, 0x65, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x47, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x4d, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x75, 0x6e, 0x6f, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x52, 0x08, 0x75, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x1a, 0xb6, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6f, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x1a, 0xed, 0x02, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x76, 0x73, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x7a, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x7a, 0x1a, 0x80, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x76, 0x6f, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x1a, 0xc9, 0x02, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x55, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x67, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x76, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0xfd, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x61, 0x6e, 0x55, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x1a, 0x8a, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x66, 0x0a, 0x07, 0x4c, 0x61, 0x6e, 0x67, 0x4f, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x7a, 0x0a, 0x10, 0x4c, 0x61, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x49, 0x0a, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x6f, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x52, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x34, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8c, 0x01, 0x0a, 0x15, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x36, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0xcd, 0x02, 0x0a, 0x0c, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x70, 0x69, 0x64, 0x73, 0x22, 0x96, 0x03, 0x0a, 0x0c, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0xbb, 0x02, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x69, 0x6e, 0x64, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x68, 0x61, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x83, 0x12, 0x0a, 0x0d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x31, 0x12, 0x3a, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x32, 0x12, 0x3a, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x33, 0x1a, 0xc8, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0xe5, 0x05, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x1a, 0xd9, 0x06, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x38, 0x0a, 0x0d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xa5, 0x12, 0x0a, 0x0e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x31, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x31, 0x12, 0x3b, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x32, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x32, 0x12, 0x3b, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x33, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x33, 0x1a, 0xca, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x37, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0xf5, 0x05, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x1a, 0xda, 0x06, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x39, 0x0a, 0x0e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0xd7, 0x13, 0x0a, 0x0c, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x31, 0x12, 0x39, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x32, 0x12, 0x39, 0x0a, 0x05, 0x77, 0x69, 0x6e, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x77, 0x69, 0x6e, 0x33, 0x1a, 0xc6, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0xe7, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x4b, 0x56, 0x52, 0x06, 0x6b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6f, 0x64, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x1a, 0xd8, 0x06, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x65, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x6f, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x64, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x73, 0x50, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x2c, 0x0a, 0x02, 0x4b, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6f, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x63, 0x70, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x7e, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x30, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x22, 0x1f, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x75, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x05, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0x59, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x66, 0x43, 0x6f, 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x6f, 0x0a, 0x0c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x2e, 0x4f, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x2b, 0x0a, 0x03, 0x4f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x4c, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x22, 0x35, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x72, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x0f, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x1a, 0x36, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x0f, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x6b, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x06, 0x70, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x1a, 0x52, 0x0a, 0x06, 0x50, 0x6b, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x45, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x22, 0x60, 0x0a, 0x13, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xeb, 0x01, 0x0a, 0x13, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x77, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x1a, 0x5b, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x49, 0x6d, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x30, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x22, 0x32, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x32, 0xd7, 0x18, 0x0a, 0x09, 0x57, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x36, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x12, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x12, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x12, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4b, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x04, 0x43, 0x65, 0x72, 0x74, 0x12, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x12, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x42, 0x61, 0x72, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x64, 0x6c, 0x12, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x44, 0x64, 0x6c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x64, 0x6c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x64, 0x6c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x05, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x12, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x54, 0x7a, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x12, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x12, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x76, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x10, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x56, 0x73, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x42, 0x11, 0x5a, 0x0f, 0x2e, 0x2f, 0x3b, 0x77, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_w_campaign_proto_rawDescOnce sync.Once file_w_campaign_proto_rawDescData = file_w_campaign_proto_rawDesc ) func file_w_campaign_proto_rawDescGZIP() []byte { file_w_campaign_proto_rawDescOnce.Do(func() { file_w_campaign_proto_rawDescData = protoimpl.X.CompressGZIP(file_w_campaign_proto_rawDescData) }) return file_w_campaign_proto_rawDescData } var file_w_campaign_proto_msgTypes = make([]protoimpl.MessageInfo, 393) var file_w_campaign_proto_goTypes = []interface{}{ (*ListReq)(nil), // 0: w_campaignpb.ListReq (*ListRes)(nil), // 1: w_campaignpb.ListRes (*ShareReq)(nil), // 2: w_campaignpb.ShareReq (*ShareRes)(nil), // 3: w_campaignpb.ShareRes (*StatusReq)(nil), // 4: w_campaignpb.StatusReq (*StatusRes)(nil), // 5: w_campaignpb.StatusRes (*DestroyReq)(nil), // 6: w_campaignpb.DestroyReq (*DestroyRes)(nil), // 7: w_campaignpb.DestroyRes (*StoreReq)(nil), // 8: w_campaignpb.StoreReq (*StoreRes)(nil), // 9: w_campaignpb.StoreRes (*UpdateReq)(nil), // 10: w_campaignpb.UpdateReq (*UpdateRes)(nil), // 11: w_campaignpb.UpdateRes (*ShowReq)(nil), // 12: w_campaignpb.ShowReq (*ShowRes)(nil), // 13: w_campaignpb.ShowRes (*ChannelListReq)(nil), // 14: w_campaignpb.ChannelListReq (*ChannelListRes)(nil), // 15: w_campaignpb.ChannelListRes (*ChannelCreateReq)(nil), // 16: w_campaignpb.ChannelCreateReq (*ChannelCreateRes)(nil), // 17: w_campaignpb.ChannelCreateRes (*ChannelUpdateReq)(nil), // 18: w_campaignpb.ChannelUpdateReq (*ChannelUpdateRes)(nil), // 19: w_campaignpb.ChannelUpdateRes (*ChannelDestroyReq)(nil), // 20: w_campaignpb.ChannelDestroyReq (*ChannelDestroyRes)(nil), // 21: w_campaignpb.ChannelDestroyRes (*KvDataReq)(nil), // 22: w_campaignpb.KvDataReq (*KvDataRes)(nil), // 23: w_campaignpb.KvDataRes (*CertReq)(nil), // 24: w_campaignpb.CertReq (*CertRes)(nil), // 25: w_campaignpb.CertRes (*BarrageReq)(nil), // 26: w_campaignpb.BarrageReq (*BarrageRes)(nil), // 27: w_campaignpb.BarrageRes (*OptionReq)(nil), // 28: w_campaignpb.OptionReq (*OptionRes)(nil), // 29: w_campaignpb.OptionRes (*RelateDdlReq)(nil), // 30: w_campaignpb.RelateDdlReq (*RelateDdlRes)(nil), // 31: w_campaignpb.RelateDdlRes (*DdlCampaignReq)(nil), // 32: w_campaignpb.DdlCampaignReq (*DdlCampaignRes)(nil), // 33: w_campaignpb.DdlCampaignRes (*LangsReq)(nil), // 34: w_campaignpb.LangsReq (*LangsRes)(nil), // 35: w_campaignpb.LangsRes (*LangReq)(nil), // 36: w_campaignpb.LangReq (*LangRes)(nil), // 37: w_campaignpb.LangRes (*SaveLangReq)(nil), // 38: w_campaignpb.SaveLangReq (*SaveLangRes)(nil), // 39: w_campaignpb.SaveLangRes (*DestroyLangReq)(nil), // 40: w_campaignpb.DestroyLangReq (*DestroyLangRes)(nil), // 41: w_campaignpb.DestroyLangRes (*LangSelectReq)(nil), // 42: w_campaignpb.LangSelectReq (*LangSelectRes)(nil), // 43: w_campaignpb.LangSelectRes (*CampaignInfoReq)(nil), // 44: w_campaignpb.CampaignInfoReq (*CampaignInfoRes)(nil), // 45: w_campaignpb.CampaignInfoRes (*ShowRewardReq)(nil), // 46: w_campaignpb.ShowRewardReq (*ShowRewardRes)(nil), // 47: w_campaignpb.ShowRewardRes (*AdsStoreReq)(nil), // 48: w_campaignpb.AdsStoreReq (*AdsStoreRes)(nil), // 49: w_campaignpb.AdsStoreRes (*AdsUpdateReq)(nil), // 50: w_campaignpb.AdsUpdateReq (*AdsUpdateRes)(nil), // 51: w_campaignpb.AdsUpdateRes (*AdsShowReq)(nil), // 52: w_campaignpb.AdsShowReq (*AdsShowRes)(nil), // 53: w_campaignpb.AdsShowRes (*CampaignSelectReq)(nil), // 54: w_campaignpb.CampaignSelectReq (*CampaignSelectRes)(nil), // 55: w_campaignpb.CampaignSelectRes (*RewardDetailReq)(nil), // 56: w_campaignpb.RewardDetailReq (*RewardDetailRes)(nil), // 57: w_campaignpb.RewardDetailRes (*UpdateStockReq)(nil), // 58: w_campaignpb.UpdateStockReq (*UpdateStockRes)(nil), // 59: w_campaignpb.UpdateStockRes (*CampaignTzReq)(nil), // 60: w_campaignpb.CampaignTzReq (*CampaignTzRes)(nil), // 61: w_campaignpb.CampaignTzRes (*CampaignRewardTypeReq)(nil), // 62: w_campaignpb.CampaignRewardTypeReq (*CampaignRewardTypeRes)(nil), // 63: w_campaignpb.CampaignRewardTypeRes (*ChildListReq)(nil), // 64: w_campaignpb.ChildListReq (*ChildListRes)(nil), // 65: w_campaignpb.ChildListRes (*ChildStoreReq)(nil), // 66: w_campaignpb.ChildStoreReq (*ChildStoreRes)(nil), // 67: w_campaignpb.ChildStoreRes (*ChildUpdateReq)(nil), // 68: w_campaignpb.ChildUpdateReq (*ChildUpdateRes)(nil), // 69: w_campaignpb.ChildUpdateRes (*ChildShowReq)(nil), // 70: w_campaignpb.ChildShowReq (*ChildShowRes)(nil), // 71: w_campaignpb.ChildShowRes (*TaskCenterJumpReq)(nil), // 72: w_campaignpb.TaskCenterJumpReq (*TaskCenterJumpRes)(nil), // 73: w_campaignpb.TaskCenterJumpRes (*CondListReq)(nil), // 74: w_campaignpb.CondListReq (*CondListRes)(nil), // 75: w_campaignpb.CondListRes (*CampaignsReq)(nil), // 76: w_campaignpb.CampaignsReq (*CampaignsRes)(nil), // 77: w_campaignpb.CampaignsRes (*SetLvApiReq)(nil), // 78: w_campaignpb.SetLvApiReq (*SetLvApiRes)(nil), // 79: w_campaignpb.SetLvApiRes (*GetLvApiReq)(nil), // 80: w_campaignpb.GetLvApiReq (*GetLvApiRes)(nil), // 81: w_campaignpb.GetLvApiRes (*VsSettlementReq)(nil), // 82: w_campaignpb.VsSettlementReq (*VsSettlementRes)(nil), // 83: w_campaignpb.VsSettlementRes (*VsSettlementInfoReq)(nil), // 84: w_campaignpb.VsSettlementInfoReq (*VsSettlementInfoRes)(nil), // 85: w_campaignpb.VsSettlementInfoRes (*ActionListReq)(nil), // 86: w_campaignpb.ActionListReq (*ActionListRes)(nil), // 87: w_campaignpb.ActionListRes (*ListRes_One)(nil), // 88: w_campaignpb.ListRes.One (*ListRes_LangTz)(nil), // 89: w_campaignpb.ListRes.LangTz (*ListRes_Channel)(nil), // 90: w_campaignpb.ListRes.Channel (*ListRes_Cond)(nil), // 91: w_campaignpb.ListRes.Cond (*ShareRes_One)(nil), // 92: w_campaignpb.ShareRes.One (*StoreReq_GashaponStyle)(nil), // 93: w_campaignpb.StoreReq.GashaponStyle (*StoreReq_Event)(nil), // 94: w_campaignpb.StoreReq.Event (*StoreReq_EventOne)(nil), // 95: w_campaignpb.StoreReq.EventOne (*StoreReq_EventReward)(nil), // 96: w_campaignpb.StoreReq.EventReward (*StoreReq_Uno)(nil), // 97: w_campaignpb.StoreReq.Uno (*StoreReq_UnoGroup)(nil), // 98: w_campaignpb.StoreReq.UnoGroup (*StoreReq_UnoLimitRule)(nil), // 99: w_campaignpb.StoreReq.UnoLimitRule (*StoreReq_UnoCard)(nil), // 100: w_campaignpb.StoreReq.UnoCard (*StoreReq_Vs)(nil), // 101: w_campaignpb.StoreReq.Vs (*StoreReq_Schedule)(nil), // 102: w_campaignpb.StoreReq.Schedule (*StoreReq_PkTeam)(nil), // 103: w_campaignpb.StoreReq.PkTeam (*StoreReq_Team)(nil), // 104: w_campaignpb.StoreReq.Team (*StoreReq_Chat)(nil), // 105: w_campaignpb.StoreReq.Chat (*StoreReq_PointsUse)(nil), // 106: w_campaignpb.StoreReq.PointsUse (*StoreReq_FlipStyle)(nil), // 107: w_campaignpb.StoreReq.FlipStyle (*StoreReq_GridStyle)(nil), // 108: w_campaignpb.StoreReq.GridStyle (*StoreReq_WheelStyle)(nil), // 109: w_campaignpb.StoreReq.WheelStyle (*StoreReq_Child)(nil), // 110: w_campaignpb.StoreReq.Child (*StoreReq_Config)(nil), // 111: w_campaignpb.StoreReq.Config (*StoreReq_LongImg)(nil), // 112: w_campaignpb.StoreReq.LongImg (*StoreReq_HotZone)(nil), // 113: w_campaignpb.StoreReq.HotZone (*StoreReq_Target)(nil), // 114: w_campaignpb.StoreReq.Target (*StoreReq_Cond)(nil), // 115: w_campaignpb.StoreReq.Cond (*StoreReq_BothAll)(nil), // 116: w_campaignpb.StoreReq.BothAll (*StoreReq_NormalData)(nil), // 117: w_campaignpb.StoreReq.NormalData (*StoreReq_TargetOption)(nil), // 118: w_campaignpb.StoreReq.TargetOption (*StoreReq_Fixed)(nil), // 119: w_campaignpb.StoreReq.Fixed (*StoreReq_Custom)(nil), // 120: w_campaignpb.StoreReq.Custom (*StoreReq_KV)(nil), // 121: w_campaignpb.StoreReq.KV (*StoreReq_Reward)(nil), // 122: w_campaignpb.StoreReq.Reward (*StoreReq_RewardTask)(nil), // 123: w_campaignpb.StoreReq.RewardTask (*StoreReq_OpenAdd)(nil), // 124: w_campaignpb.StoreReq.OpenAdd (*StoreReq_CollectRule)(nil), // 125: w_campaignpb.StoreReq.CollectRule (*StoreReq_Rewards)(nil), // 126: w_campaignpb.StoreReq.Rewards (*StoreReq_UserLevel)(nil), // 127: w_campaignpb.StoreReq.UserLevel (*StoreReq_UserLevelOne)(nil), // 128: w_campaignpb.StoreReq.UserLevelOne (*StoreReq_Lang)(nil), // 129: w_campaignpb.StoreReq.Lang (*StoreReq_LangUserLevel)(nil), // 130: w_campaignpb.StoreReq.LangUserLevel (*StoreReq_Country)(nil), // 131: w_campaignpb.StoreReq.Country (*StoreReq_CountryOne)(nil), // 132: w_campaignpb.StoreReq.CountryOne (*StoreReq_QaQuestion)(nil), // 133: w_campaignpb.StoreReq.QaQuestion (*StoreReq_QaOption)(nil), // 134: w_campaignpb.StoreReq.QaOption (*StoreReq_QuizOption)(nil), // 135: w_campaignpb.StoreReq.QuizOption (*StoreReq_Quiz)(nil), // 136: w_campaignpb.StoreReq.Quiz (*StoreReq_QuestionAnswer)(nil), // 137: w_campaignpb.StoreReq.QuestionAnswer (*StoreReq_LotteryConfig)(nil), // 138: w_campaignpb.StoreReq.LotteryConfig (*StoreReq_InviteConfig)(nil), // 139: w_campaignpb.StoreReq.InviteConfig (*StoreReq_Sign)(nil), // 140: w_campaignpb.StoreReq.Sign (*StoreReq_Dice)(nil), // 141: w_campaignpb.StoreReq.Dice (*StoreReq_MapPoint)(nil), // 142: w_campaignpb.StoreReq.MapPoint (*StoreReq_Grow)(nil), // 143: w_campaignpb.StoreReq.Grow (*StoreReq_GrowStep)(nil), // 144: w_campaignpb.StoreReq.GrowStep (*StoreReq_Ballot)(nil), // 145: w_campaignpb.StoreReq.Ballot (*StoreReq_Chop)(nil), // 146: w_campaignpb.StoreReq.Chop (*StoreReq_Cash)(nil), // 147: w_campaignpb.StoreReq.Cash (*StoreReq_Flip)(nil), // 148: w_campaignpb.StoreReq.Flip (*StoreReq_Keep)(nil), // 149: w_campaignpb.StoreReq.Keep (*StoreReq_Invite)(nil), // 150: w_campaignpb.StoreReq.Invite (*StoreReq_Talk)(nil), // 151: w_campaignpb.StoreReq.Talk (*StoreReq_KeepStep)(nil), // 152: w_campaignpb.StoreReq.KeepStep (*StoreReq_Push)(nil), // 153: w_campaignpb.StoreReq.Push (*StoreReq_PushOne)(nil), // 154: w_campaignpb.StoreReq.PushOne (*StoreReq_PushCond)(nil), // 155: w_campaignpb.StoreReq.PushCond (*StoreReq_Gold)(nil), // 156: w_campaignpb.StoreReq.Gold (*StoreReq_Coin)(nil), // 157: w_campaignpb.StoreReq.Coin (*UpdateReq_GashaponStyle)(nil), // 158: w_campaignpb.UpdateReq.GashaponStyle (*UpdateReq_Event)(nil), // 159: w_campaignpb.UpdateReq.Event (*UpdateReq_EventOne)(nil), // 160: w_campaignpb.UpdateReq.EventOne (*UpdateReq_EventReward)(nil), // 161: w_campaignpb.UpdateReq.EventReward (*UpdateReq_Uno)(nil), // 162: w_campaignpb.UpdateReq.Uno (*UpdateReq_UnoGroup)(nil), // 163: w_campaignpb.UpdateReq.UnoGroup (*UpdateReq_UnoLimitRule)(nil), // 164: w_campaignpb.UpdateReq.UnoLimitRule (*UpdateReq_UnoCard)(nil), // 165: w_campaignpb.UpdateReq.UnoCard (*UpdateReq_Vs)(nil), // 166: w_campaignpb.UpdateReq.Vs (*UpdateReq_Schedule)(nil), // 167: w_campaignpb.UpdateReq.Schedule (*UpdateReq_PkTeam)(nil), // 168: w_campaignpb.UpdateReq.PkTeam (*UpdateReq_Team)(nil), // 169: w_campaignpb.UpdateReq.Team (*UpdateReq_Chat)(nil), // 170: w_campaignpb.UpdateReq.Chat (*UpdateReq_PointsUse)(nil), // 171: w_campaignpb.UpdateReq.PointsUse (*UpdateReq_FlipStyle)(nil), // 172: w_campaignpb.UpdateReq.FlipStyle (*UpdateReq_GridStyle)(nil), // 173: w_campaignpb.UpdateReq.GridStyle (*UpdateReq_WheelStyle)(nil), // 174: w_campaignpb.UpdateReq.WheelStyle (*UpdateReq_Child)(nil), // 175: w_campaignpb.UpdateReq.Child (*UpdateReq_Config)(nil), // 176: w_campaignpb.UpdateReq.Config (*UpdateReq_LongImg)(nil), // 177: w_campaignpb.UpdateReq.LongImg (*UpdateReq_HotZone)(nil), // 178: w_campaignpb.UpdateReq.HotZone (*UpdateReq_Target)(nil), // 179: w_campaignpb.UpdateReq.Target (*UpdateReq_Cond)(nil), // 180: w_campaignpb.UpdateReq.Cond (*UpdateReq_BothAll)(nil), // 181: w_campaignpb.UpdateReq.BothAll (*UpdateReq_NormalData)(nil), // 182: w_campaignpb.UpdateReq.NormalData (*UpdateReq_TargetOption)(nil), // 183: w_campaignpb.UpdateReq.TargetOption (*UpdateReq_Fixed)(nil), // 184: w_campaignpb.UpdateReq.Fixed (*UpdateReq_Custom)(nil), // 185: w_campaignpb.UpdateReq.Custom (*UpdateReq_KV)(nil), // 186: w_campaignpb.UpdateReq.KV (*UpdateReq_Reward)(nil), // 187: w_campaignpb.UpdateReq.Reward (*UpdateReq_RewardTask)(nil), // 188: w_campaignpb.UpdateReq.RewardTask (*UpdateReq_OpenAdd)(nil), // 189: w_campaignpb.UpdateReq.OpenAdd (*UpdateReq_CollectRule)(nil), // 190: w_campaignpb.UpdateReq.CollectRule (*UpdateReq_Rewards)(nil), // 191: w_campaignpb.UpdateReq.Rewards (*UpdateReq_UserLevel)(nil), // 192: w_campaignpb.UpdateReq.UserLevel (*UpdateReq_UserLevelOne)(nil), // 193: w_campaignpb.UpdateReq.UserLevelOne (*UpdateReq_Lang)(nil), // 194: w_campaignpb.UpdateReq.Lang (*UpdateReq_LangUserLevel)(nil), // 195: w_campaignpb.UpdateReq.LangUserLevel (*UpdateReq_Country)(nil), // 196: w_campaignpb.UpdateReq.Country (*UpdateReq_CountryOne)(nil), // 197: w_campaignpb.UpdateReq.CountryOne (*UpdateReq_QaQuestion)(nil), // 198: w_campaignpb.UpdateReq.QaQuestion (*UpdateReq_QaOption)(nil), // 199: w_campaignpb.UpdateReq.QaOption (*UpdateReq_QuizOption)(nil), // 200: w_campaignpb.UpdateReq.QuizOption (*UpdateReq_Quiz)(nil), // 201: w_campaignpb.UpdateReq.Quiz (*UpdateReq_QuestionAnswer)(nil), // 202: w_campaignpb.UpdateReq.QuestionAnswer (*UpdateReq_LotteryConfig)(nil), // 203: w_campaignpb.UpdateReq.LotteryConfig (*UpdateReq_InviteConfig)(nil), // 204: w_campaignpb.UpdateReq.InviteConfig (*UpdateReq_Sign)(nil), // 205: w_campaignpb.UpdateReq.Sign (*UpdateReq_Dice)(nil), // 206: w_campaignpb.UpdateReq.Dice (*UpdateReq_MapPoint)(nil), // 207: w_campaignpb.UpdateReq.MapPoint (*UpdateReq_Grow)(nil), // 208: w_campaignpb.UpdateReq.Grow (*UpdateReq_GrowStep)(nil), // 209: w_campaignpb.UpdateReq.GrowStep (*UpdateReq_Ballot)(nil), // 210: w_campaignpb.UpdateReq.Ballot (*UpdateReq_Chop)(nil), // 211: w_campaignpb.UpdateReq.Chop (*UpdateReq_Cash)(nil), // 212: w_campaignpb.UpdateReq.Cash (*UpdateReq_Flip)(nil), // 213: w_campaignpb.UpdateReq.Flip (*UpdateReq_Keep)(nil), // 214: w_campaignpb.UpdateReq.Keep (*UpdateReq_Invite)(nil), // 215: w_campaignpb.UpdateReq.Invite (*UpdateReq_Talk)(nil), // 216: w_campaignpb.UpdateReq.Talk (*UpdateReq_KeepStep)(nil), // 217: w_campaignpb.UpdateReq.KeepStep (*UpdateReq_Push)(nil), // 218: w_campaignpb.UpdateReq.Push (*UpdateReq_PushOne)(nil), // 219: w_campaignpb.UpdateReq.PushOne (*UpdateReq_PushCond)(nil), // 220: w_campaignpb.UpdateReq.PushCond (*UpdateReq_Gold)(nil), // 221: w_campaignpb.UpdateReq.Gold (*UpdateReq_Coin)(nil), // 222: w_campaignpb.UpdateReq.Coin (*ShowRes_GashaponStyle)(nil), // 223: w_campaignpb.ShowRes.GashaponStyle (*ShowRes_Event)(nil), // 224: w_campaignpb.ShowRes.Event (*ShowRes_EventOne)(nil), // 225: w_campaignpb.ShowRes.EventOne (*ShowRes_EventReward)(nil), // 226: w_campaignpb.ShowRes.EventReward (*ShowRes_Uno)(nil), // 227: w_campaignpb.ShowRes.Uno (*ShowRes_UnoGroup)(nil), // 228: w_campaignpb.ShowRes.UnoGroup (*ShowRes_UnoLimitRule)(nil), // 229: w_campaignpb.ShowRes.UnoLimitRule (*ShowRes_UnoCard)(nil), // 230: w_campaignpb.ShowRes.UnoCard (*ShowRes_Vs)(nil), // 231: w_campaignpb.ShowRes.Vs (*ShowRes_Schedule)(nil), // 232: w_campaignpb.ShowRes.Schedule (*ShowRes_PkTeam)(nil), // 233: w_campaignpb.ShowRes.PkTeam (*ShowRes_Team)(nil), // 234: w_campaignpb.ShowRes.Team (*ShowRes_Chat)(nil), // 235: w_campaignpb.ShowRes.Chat (*ShowRes_PointsUse)(nil), // 236: w_campaignpb.ShowRes.PointsUse (*ShowRes_FlipStyle)(nil), // 237: w_campaignpb.ShowRes.FlipStyle (*ShowRes_GridStyle)(nil), // 238: w_campaignpb.ShowRes.GridStyle (*ShowRes_WheelStyle)(nil), // 239: w_campaignpb.ShowRes.WheelStyle (*ShowRes_Child)(nil), // 240: w_campaignpb.ShowRes.Child (*ShowRes_Share)(nil), // 241: w_campaignpb.ShowRes.Share (*ShowRes_Config)(nil), // 242: w_campaignpb.ShowRes.Config (*ShowRes_LongImg)(nil), // 243: w_campaignpb.ShowRes.LongImg (*ShowRes_HotZone)(nil), // 244: w_campaignpb.ShowRes.HotZone (*ShowRes_Target)(nil), // 245: w_campaignpb.ShowRes.Target (*ShowRes_Cond)(nil), // 246: w_campaignpb.ShowRes.Cond (*ShowRes_BothAll)(nil), // 247: w_campaignpb.ShowRes.BothAll (*ShowRes_NormalData)(nil), // 248: w_campaignpb.ShowRes.NormalData (*ShowRes_TargetOption)(nil), // 249: w_campaignpb.ShowRes.TargetOption (*ShowRes_Fixed)(nil), // 250: w_campaignpb.ShowRes.Fixed (*ShowRes_Custom)(nil), // 251: w_campaignpb.ShowRes.Custom (*ShowRes_KV)(nil), // 252: w_campaignpb.ShowRes.KV (*ShowRes_WebReward)(nil), // 253: w_campaignpb.ShowRes.WebReward (*ShowRes_Reward)(nil), // 254: w_campaignpb.ShowRes.Reward (*ShowRes_RewardTask)(nil), // 255: w_campaignpb.ShowRes.RewardTask (*ShowRes_OpenAdd)(nil), // 256: w_campaignpb.ShowRes.OpenAdd (*ShowRes_CollectRule)(nil), // 257: w_campaignpb.ShowRes.CollectRule (*ShowRes_Rewards)(nil), // 258: w_campaignpb.ShowRes.Rewards (*ShowRes_UserLevel)(nil), // 259: w_campaignpb.ShowRes.UserLevel (*ShowRes_UserLevelOne)(nil), // 260: w_campaignpb.ShowRes.UserLevelOne (*ShowRes_Lang)(nil), // 261: w_campaignpb.ShowRes.Lang (*ShowRes_LangUserLevel)(nil), // 262: w_campaignpb.ShowRes.LangUserLevel (*ShowRes_Country)(nil), // 263: w_campaignpb.ShowRes.Country (*ShowRes_CountryOne)(nil), // 264: w_campaignpb.ShowRes.CountryOne (*ShowRes_QaQuestion)(nil), // 265: w_campaignpb.ShowRes.QaQuestion (*ShowRes_QaOption)(nil), // 266: w_campaignpb.ShowRes.QaOption (*ShowRes_QuizOption)(nil), // 267: w_campaignpb.ShowRes.QuizOption (*ShowRes_Quiz)(nil), // 268: w_campaignpb.ShowRes.Quiz (*ShowRes_QuestionAnswer)(nil), // 269: w_campaignpb.ShowRes.QuestionAnswer (*ShowRes_LotteryConfig)(nil), // 270: w_campaignpb.ShowRes.LotteryConfig (*ShowRes_InviteConfig)(nil), // 271: w_campaignpb.ShowRes.InviteConfig (*ShowRes_Sign)(nil), // 272: w_campaignpb.ShowRes.Sign (*ShowRes_Dice)(nil), // 273: w_campaignpb.ShowRes.Dice (*ShowRes_MapPoint)(nil), // 274: w_campaignpb.ShowRes.MapPoint (*ShowRes_Grow)(nil), // 275: w_campaignpb.ShowRes.Grow (*ShowRes_GrowStep)(nil), // 276: w_campaignpb.ShowRes.GrowStep (*ShowRes_Ballot)(nil), // 277: w_campaignpb.ShowRes.Ballot (*ShowRes_Chop)(nil), // 278: w_campaignpb.ShowRes.Chop (*ShowRes_Cash)(nil), // 279: w_campaignpb.ShowRes.Cash (*ShowRes_SpinCash)(nil), // 280: w_campaignpb.ShowRes.SpinCash (*ShowRes_Flip)(nil), // 281: w_campaignpb.ShowRes.Flip (*ShowRes_Keep)(nil), // 282: w_campaignpb.ShowRes.Keep (*ShowRes_Invite)(nil), // 283: w_campaignpb.ShowRes.Invite (*ShowRes_Talk)(nil), // 284: w_campaignpb.ShowRes.Talk (*ShowRes_KeepStep)(nil), // 285: w_campaignpb.ShowRes.KeepStep (*ShowRes_Push)(nil), // 286: w_campaignpb.ShowRes.Push (*ShowRes_PushOne)(nil), // 287: w_campaignpb.ShowRes.PushOne (*ShowRes_PushCond)(nil), // 288: w_campaignpb.ShowRes.PushCond (*ShowRes_Gold)(nil), // 289: w_campaignpb.ShowRes.Gold (*ShowRes_Coin)(nil), // 290: w_campaignpb.ShowRes.Coin (*ChannelListRes_One)(nil), // 291: w_campaignpb.ChannelListRes.One (*KvDataRes_KV)(nil), // 292: w_campaignpb.KvDataRes.KV (*BarrageRes_TranContent)(nil), // 293: w_campaignpb.BarrageRes.TranContent (*BarrageRes_KV)(nil), // 294: w_campaignpb.BarrageRes.KV (*OptionRes_Option)(nil), // 295: w_campaignpb.OptionRes.Option (*LangsRes_Lang)(nil), // 296: w_campaignpb.LangsRes.Lang (*LangsRes_Uno)(nil), // 297: w_campaignpb.LangsRes.Uno (*LangsRes_UnoCard)(nil), // 298: w_campaignpb.LangsRes.UnoCard (*LangsRes_Schedule)(nil), // 299: w_campaignpb.LangsRes.Schedule (*LangsRes_PkTeam)(nil), // 300: w_campaignpb.LangsRes.PkTeam (*LangsRes_Team)(nil), // 301: w_campaignpb.LangsRes.Team (*LangsRes_QaGroup)(nil), // 302: w_campaignpb.LangsRes.QaGroup (*LangsRes_Talk)(nil), // 303: w_campaignpb.LangsRes.Talk (*LangsRes_Cash)(nil), // 304: w_campaignpb.LangsRes.Cash (*LangsRes_Gold)(nil), // 305: w_campaignpb.LangsRes.Gold (*LangsRes_Coin)(nil), // 306: w_campaignpb.LangsRes.Coin (*LangsRes_LongImg)(nil), // 307: w_campaignpb.LangsRes.LongImg (*LangsRes_HotZone)(nil), // 308: w_campaignpb.LangsRes.HotZone (*LangsRes_Rewards)(nil), // 309: w_campaignpb.LangsRes.Rewards (*LangsRes_Reward)(nil), // 310: w_campaignpb.LangsRes.Reward (*LangsRes_UserLevelOne)(nil), // 311: w_campaignpb.LangsRes.UserLevelOne (*LangsRes_CountryOne)(nil), // 312: w_campaignpb.LangsRes.CountryOne (*LangsRes_Quit)(nil), // 313: w_campaignpb.LangsRes.Quit (*LangsRes_Option)(nil), // 314: w_campaignpb.LangsRes.Option (*LangsRes_Question)(nil), // 315: w_campaignpb.LangsRes.Question (*LangsRes_Cond)(nil), // 316: w_campaignpb.LangsRes.Cond (*LangRes_Uno)(nil), // 317: w_campaignpb.LangRes.Uno (*LangRes_UnoCard)(nil), // 318: w_campaignpb.LangRes.UnoCard (*LangRes_Schedule)(nil), // 319: w_campaignpb.LangRes.Schedule (*LangRes_PkTeam)(nil), // 320: w_campaignpb.LangRes.PkTeam (*LangRes_Team)(nil), // 321: w_campaignpb.LangRes.Team (*LangRes_Talk)(nil), // 322: w_campaignpb.LangRes.Talk (*LangRes_QaGroup)(nil), // 323: w_campaignpb.LangRes.QaGroup (*LangRes_Quit)(nil), // 324: w_campaignpb.LangRes.Quit (*LangRes_Option)(nil), // 325: w_campaignpb.LangRes.Option (*LangRes_Question)(nil), // 326: w_campaignpb.LangRes.Question (*LangRes_Cond)(nil), // 327: w_campaignpb.LangRes.Cond (*LangRes_LongImg)(nil), // 328: w_campaignpb.LangRes.LongImg (*LangRes_HotZone)(nil), // 329: w_campaignpb.LangRes.HotZone (*LangRes_Cash)(nil), // 330: w_campaignpb.LangRes.Cash (*LangRes_Gold)(nil), // 331: w_campaignpb.LangRes.Gold (*LangRes_Coin)(nil), // 332: w_campaignpb.LangRes.Coin (*SaveLangReq_Uno)(nil), // 333: w_campaignpb.SaveLangReq.Uno (*SaveLangReq_UnoCard)(nil), // 334: w_campaignpb.SaveLangReq.UnoCard (*SaveLangReq_Schedule)(nil), // 335: w_campaignpb.SaveLangReq.Schedule (*SaveLangReq_PkTeam)(nil), // 336: w_campaignpb.SaveLangReq.PkTeam (*SaveLangReq_Team)(nil), // 337: w_campaignpb.SaveLangReq.Team (*SaveLangReq_Talk)(nil), // 338: w_campaignpb.SaveLangReq.Talk (*SaveLangReq_QaGroup)(nil), // 339: w_campaignpb.SaveLangReq.QaGroup (*SaveLangReq_Cash)(nil), // 340: w_campaignpb.SaveLangReq.Cash (*SaveLangReq_Gold)(nil), // 341: w_campaignpb.SaveLangReq.Gold (*SaveLangReq_Coin)(nil), // 342: w_campaignpb.SaveLangReq.Coin (*SaveLangReq_Quit)(nil), // 343: w_campaignpb.SaveLangReq.Quit (*SaveLangReq_Option)(nil), // 344: w_campaignpb.SaveLangReq.Option (*SaveLangReq_Question)(nil), // 345: w_campaignpb.SaveLangReq.Question (*SaveLangReq_Cond)(nil), // 346: w_campaignpb.SaveLangReq.Cond (*SaveLangReq_LongImg)(nil), // 347: w_campaignpb.SaveLangReq.LongImg (*SaveLangReq_HotZone)(nil), // 348: w_campaignpb.SaveLangReq.HotZone (*LangSelectRes_One)(nil), // 349: w_campaignpb.LangSelectRes.One (*ShowRewardRes_Reward)(nil), // 350: w_campaignpb.ShowRewardRes.Reward (*ShowRewardRes_KV)(nil), // 351: w_campaignpb.ShowRewardRes.KV (*AdsStoreReq_KV)(nil), // 352: w_campaignpb.AdsStoreReq.KV (*AdsStoreReq_Reward)(nil), // 353: w_campaignpb.AdsStoreReq.Reward (*AdsStoreReq_Flip)(nil), // 354: w_campaignpb.AdsStoreReq.Flip (*AdsUpdateReq_KV)(nil), // 355: w_campaignpb.AdsUpdateReq.KV (*AdsUpdateReq_Reward)(nil), // 356: w_campaignpb.AdsUpdateReq.Reward (*AdsUpdateReq_Flip)(nil), // 357: w_campaignpb.AdsUpdateReq.Flip (*AdsShowRes_KV)(nil), // 358: w_campaignpb.AdsShowRes.KV (*AdsShowRes_Reward)(nil), // 359: w_campaignpb.AdsShowRes.Reward (*AdsShowRes_Flip)(nil), // 360: w_campaignpb.AdsShowRes.Flip (*CampaignSelectRes_One)(nil), // 361: w_campaignpb.CampaignSelectRes.One (*RewardDetailRes_UnoCard)(nil), // 362: w_campaignpb.RewardDetailRes.UnoCard (*RewardDetailRes_Schedule)(nil), // 363: w_campaignpb.RewardDetailRes.Schedule (*RewardDetailRes_Vote)(nil), // 364: w_campaignpb.RewardDetailRes.Vote (*RewardDetailRes_Team)(nil), // 365: w_campaignpb.RewardDetailRes.Team (*RewardDetailRes_Pool)(nil), // 366: w_campaignpb.RewardDetailRes.Pool (*RewardDetailRes_Reward)(nil), // 367: w_campaignpb.RewardDetailRes.Reward (*RewardDetailRes_UserLevelOne)(nil), // 368: w_campaignpb.RewardDetailRes.UserLevelOne (*RewardDetailRes_LangOne)(nil), // 369: w_campaignpb.RewardDetailRes.LangOne (*RewardDetailRes_LangUserLevelOne)(nil), // 370: w_campaignpb.RewardDetailRes.LangUserLevelOne (*RewardDetailRes_CountryOne)(nil), // 371: w_campaignpb.RewardDetailRes.CountryOne (*CampaignTzRes_One)(nil), // 372: w_campaignpb.CampaignTzRes.One (*CampaignRewardTypeRes_One)(nil), // 373: w_campaignpb.CampaignRewardTypeRes.One (*ChildListRes_One)(nil), // 374: w_campaignpb.ChildListRes.One (*ChildStoreReq_TaskGroup)(nil), // 375: w_campaignpb.ChildStoreReq.TaskGroup (*ChildStoreReq_Reward)(nil), // 376: w_campaignpb.ChildStoreReq.Reward (*ChildStoreReq_Cond)(nil), // 377: w_campaignpb.ChildStoreReq.Cond (*ChildUpdateReq_TaskGroup)(nil), // 378: w_campaignpb.ChildUpdateReq.TaskGroup (*ChildUpdateReq_Reward)(nil), // 379: w_campaignpb.ChildUpdateReq.Reward (*ChildUpdateReq_Cond)(nil), // 380: w_campaignpb.ChildUpdateReq.Cond (*ChildShowRes_TaskGroup)(nil), // 381: w_campaignpb.ChildShowRes.TaskGroup (*ChildShowRes_Reward)(nil), // 382: w_campaignpb.ChildShowRes.Reward (*ChildShowRes_Cond)(nil), // 383: w_campaignpb.ChildShowRes.Cond (*ChildShowRes_KV)(nil), // 384: w_campaignpb.ChildShowRes.KV (*TaskCenterJumpRes_One)(nil), // 385: w_campaignpb.TaskCenterJumpRes.One (*CondListRes_One)(nil), // 386: w_campaignpb.CondListRes.One (*CondListRes_Cond)(nil), // 387: w_campaignpb.CondListRes.Cond (*CampaignsRes_One)(nil), // 388: w_campaignpb.CampaignsRes.One (*VsSettlementReq_Score)(nil), // 389: w_campaignpb.VsSettlementReq.Score (*VsSettlementRes_PkTeam)(nil), // 390: w_campaignpb.VsSettlementRes.PkTeam (*VsSettlementRes_Team)(nil), // 391: w_campaignpb.VsSettlementRes.Team (*VsSettlementInfoRes_Team)(nil), // 392: w_campaignpb.VsSettlementInfoRes.Team } var file_w_campaign_proto_depIdxs = []int32{ 88, // 0: w_campaignpb.ListRes.list:type_name -> w_campaignpb.ListRes.One 92, // 1: w_campaignpb.ShareRes.loc:type_name -> w_campaignpb.ShareRes.One 92, // 2: w_campaignpb.ShareRes.over_sea:type_name -> w_campaignpb.ShareRes.One 111, // 3: w_campaignpb.StoreReq.config:type_name -> w_campaignpb.StoreReq.Config 121, // 4: w_campaignpb.StoreReq.campaign_data:type_name -> w_campaignpb.StoreReq.KV 138, // 5: w_campaignpb.StoreReq.prize_wheel:type_name -> w_campaignpb.StoreReq.LotteryConfig 138, // 6: w_campaignpb.StoreReq.slot:type_name -> w_campaignpb.StoreReq.LotteryConfig 138, // 7: w_campaignpb.StoreReq.blind:type_name -> w_campaignpb.StoreReq.LotteryConfig 138, // 8: w_campaignpb.StoreReq.grid:type_name -> w_campaignpb.StoreReq.LotteryConfig 139, // 9: w_campaignpb.StoreReq.referral:type_name -> w_campaignpb.StoreReq.InviteConfig 137, // 10: w_campaignpb.StoreReq.question_answer:type_name -> w_campaignpb.StoreReq.QuestionAnswer 136, // 11: w_campaignpb.StoreReq.quiz:type_name -> w_campaignpb.StoreReq.Quiz 139, // 12: w_campaignpb.StoreReq.win:type_name -> w_campaignpb.StoreReq.InviteConfig 114, // 13: w_campaignpb.StoreReq.target:type_name -> w_campaignpb.StoreReq.Target 140, // 14: w_campaignpb.StoreReq.sign:type_name -> w_campaignpb.StoreReq.Sign 141, // 15: w_campaignpb.StoreReq.dice:type_name -> w_campaignpb.StoreReq.Dice 143, // 16: w_campaignpb.StoreReq.grow:type_name -> w_campaignpb.StoreReq.Grow 145, // 17: w_campaignpb.StoreReq.ballot:type_name -> w_campaignpb.StoreReq.Ballot 146, // 18: w_campaignpb.StoreReq.chop:type_name -> w_campaignpb.StoreReq.Chop 121, // 19: w_campaignpb.StoreReq.delay_link_data:type_name -> w_campaignpb.StoreReq.KV 126, // 20: w_campaignpb.StoreReq.rewards:type_name -> w_campaignpb.StoreReq.Rewards 122, // 21: w_campaignpb.StoreReq.rewards_web:type_name -> w_campaignpb.StoreReq.Reward 122, // 22: w_campaignpb.StoreReq.rewards_extra:type_name -> w_campaignpb.StoreReq.Reward 122, // 23: w_campaignpb.StoreReq.rewards_newcomer:type_name -> w_campaignpb.StoreReq.Reward 118, // 24: w_campaignpb.StoreReq.target_option:type_name -> w_campaignpb.StoreReq.TargetOption 147, // 25: w_campaignpb.StoreReq.cash:type_name -> w_campaignpb.StoreReq.Cash 112, // 26: w_campaignpb.StoreReq.long_imgs:type_name -> w_campaignpb.StoreReq.LongImg 148, // 27: w_campaignpb.StoreReq.flip:type_name -> w_campaignpb.StoreReq.Flip 149, // 28: w_campaignpb.StoreReq.keep_dog:type_name -> w_campaignpb.StoreReq.Keep 153, // 29: w_campaignpb.StoreReq.push:type_name -> w_campaignpb.StoreReq.Push 110, // 30: w_campaignpb.StoreReq.child:type_name -> w_campaignpb.StoreReq.Child 109, // 31: w_campaignpb.StoreReq.wheel_style:type_name -> w_campaignpb.StoreReq.WheelStyle 156, // 32: w_campaignpb.StoreReq.gold:type_name -> w_campaignpb.StoreReq.Gold 157, // 33: w_campaignpb.StoreReq.coin:type_name -> w_campaignpb.StoreReq.Coin 108, // 34: w_campaignpb.StoreReq.grid_style:type_name -> w_campaignpb.StoreReq.GridStyle 107, // 35: w_campaignpb.StoreReq.flip_style:type_name -> w_campaignpb.StoreReq.FlipStyle 106, // 36: w_campaignpb.StoreReq.points_use:type_name -> w_campaignpb.StoreReq.PointsUse 105, // 37: w_campaignpb.StoreReq.chat:type_name -> w_campaignpb.StoreReq.Chat 101, // 38: w_campaignpb.StoreReq.vs:type_name -> w_campaignpb.StoreReq.Vs 97, // 39: w_campaignpb.StoreReq.uno:type_name -> w_campaignpb.StoreReq.Uno 94, // 40: w_campaignpb.StoreReq.event:type_name -> w_campaignpb.StoreReq.Event 138, // 41: w_campaignpb.StoreReq.gashapon:type_name -> w_campaignpb.StoreReq.LotteryConfig 93, // 42: w_campaignpb.StoreReq.gashapon_style:type_name -> w_campaignpb.StoreReq.GashaponStyle 176, // 43: w_campaignpb.UpdateReq.config:type_name -> w_campaignpb.UpdateReq.Config 186, // 44: w_campaignpb.UpdateReq.campaign_data:type_name -> w_campaignpb.UpdateReq.KV 203, // 45: w_campaignpb.UpdateReq.prize_wheel:type_name -> w_campaignpb.UpdateReq.LotteryConfig 203, // 46: w_campaignpb.UpdateReq.slot:type_name -> w_campaignpb.UpdateReq.LotteryConfig 203, // 47: w_campaignpb.UpdateReq.blind:type_name -> w_campaignpb.UpdateReq.LotteryConfig 203, // 48: w_campaignpb.UpdateReq.grid:type_name -> w_campaignpb.UpdateReq.LotteryConfig 204, // 49: w_campaignpb.UpdateReq.referral:type_name -> w_campaignpb.UpdateReq.InviteConfig 202, // 50: w_campaignpb.UpdateReq.question_answer:type_name -> w_campaignpb.UpdateReq.QuestionAnswer 201, // 51: w_campaignpb.UpdateReq.quiz:type_name -> w_campaignpb.UpdateReq.Quiz 204, // 52: w_campaignpb.UpdateReq.win:type_name -> w_campaignpb.UpdateReq.InviteConfig 179, // 53: w_campaignpb.UpdateReq.target:type_name -> w_campaignpb.UpdateReq.Target 205, // 54: w_campaignpb.UpdateReq.sign:type_name -> w_campaignpb.UpdateReq.Sign 206, // 55: w_campaignpb.UpdateReq.dice:type_name -> w_campaignpb.UpdateReq.Dice 208, // 56: w_campaignpb.UpdateReq.grow:type_name -> w_campaignpb.UpdateReq.Grow 210, // 57: w_campaignpb.UpdateReq.ballot:type_name -> w_campaignpb.UpdateReq.Ballot 211, // 58: w_campaignpb.UpdateReq.chop:type_name -> w_campaignpb.UpdateReq.Chop 186, // 59: w_campaignpb.UpdateReq.delay_link_data:type_name -> w_campaignpb.UpdateReq.KV 191, // 60: w_campaignpb.UpdateReq.rewards:type_name -> w_campaignpb.UpdateReq.Rewards 187, // 61: w_campaignpb.UpdateReq.rewards_web:type_name -> w_campaignpb.UpdateReq.Reward 187, // 62: w_campaignpb.UpdateReq.rewards_extra:type_name -> w_campaignpb.UpdateReq.Reward 187, // 63: w_campaignpb.UpdateReq.rewards_newcomer:type_name -> w_campaignpb.UpdateReq.Reward 183, // 64: w_campaignpb.UpdateReq.target_option:type_name -> w_campaignpb.UpdateReq.TargetOption 212, // 65: w_campaignpb.UpdateReq.cash:type_name -> w_campaignpb.UpdateReq.Cash 177, // 66: w_campaignpb.UpdateReq.long_imgs:type_name -> w_campaignpb.UpdateReq.LongImg 213, // 67: w_campaignpb.UpdateReq.flip:type_name -> w_campaignpb.UpdateReq.Flip 214, // 68: w_campaignpb.UpdateReq.keep_dog:type_name -> w_campaignpb.UpdateReq.Keep 218, // 69: w_campaignpb.UpdateReq.push:type_name -> w_campaignpb.UpdateReq.Push 175, // 70: w_campaignpb.UpdateReq.child:type_name -> w_campaignpb.UpdateReq.Child 174, // 71: w_campaignpb.UpdateReq.wheel_style:type_name -> w_campaignpb.UpdateReq.WheelStyle 221, // 72: w_campaignpb.UpdateReq.gold:type_name -> w_campaignpb.UpdateReq.Gold 222, // 73: w_campaignpb.UpdateReq.coin:type_name -> w_campaignpb.UpdateReq.Coin 173, // 74: w_campaignpb.UpdateReq.grid_style:type_name -> w_campaignpb.UpdateReq.GridStyle 172, // 75: w_campaignpb.UpdateReq.flip_style:type_name -> w_campaignpb.UpdateReq.FlipStyle 171, // 76: w_campaignpb.UpdateReq.points_use:type_name -> w_campaignpb.UpdateReq.PointsUse 170, // 77: w_campaignpb.UpdateReq.chat:type_name -> w_campaignpb.UpdateReq.Chat 166, // 78: w_campaignpb.UpdateReq.vs:type_name -> w_campaignpb.UpdateReq.Vs 162, // 79: w_campaignpb.UpdateReq.uno:type_name -> w_campaignpb.UpdateReq.Uno 159, // 80: w_campaignpb.UpdateReq.event:type_name -> w_campaignpb.UpdateReq.Event 203, // 81: w_campaignpb.UpdateReq.gashapon:type_name -> w_campaignpb.UpdateReq.LotteryConfig 158, // 82: w_campaignpb.UpdateReq.gashapon_style:type_name -> w_campaignpb.UpdateReq.GashaponStyle 242, // 83: w_campaignpb.ShowRes.config:type_name -> w_campaignpb.ShowRes.Config 241, // 84: w_campaignpb.ShowRes.share:type_name -> w_campaignpb.ShowRes.Share 252, // 85: w_campaignpb.ShowRes.campaign_data:type_name -> w_campaignpb.ShowRes.KV 270, // 86: w_campaignpb.ShowRes.prize_wheel:type_name -> w_campaignpb.ShowRes.LotteryConfig 270, // 87: w_campaignpb.ShowRes.slot:type_name -> w_campaignpb.ShowRes.LotteryConfig 270, // 88: w_campaignpb.ShowRes.blind:type_name -> w_campaignpb.ShowRes.LotteryConfig 270, // 89: w_campaignpb.ShowRes.grid:type_name -> w_campaignpb.ShowRes.LotteryConfig 271, // 90: w_campaignpb.ShowRes.referral:type_name -> w_campaignpb.ShowRes.InviteConfig 269, // 91: w_campaignpb.ShowRes.question_answer:type_name -> w_campaignpb.ShowRes.QuestionAnswer 268, // 92: w_campaignpb.ShowRes.quiz:type_name -> w_campaignpb.ShowRes.Quiz 271, // 93: w_campaignpb.ShowRes.win:type_name -> w_campaignpb.ShowRes.InviteConfig 245, // 94: w_campaignpb.ShowRes.target:type_name -> w_campaignpb.ShowRes.Target 272, // 95: w_campaignpb.ShowRes.sign:type_name -> w_campaignpb.ShowRes.Sign 273, // 96: w_campaignpb.ShowRes.dice:type_name -> w_campaignpb.ShowRes.Dice 275, // 97: w_campaignpb.ShowRes.grow:type_name -> w_campaignpb.ShowRes.Grow 277, // 98: w_campaignpb.ShowRes.ballot:type_name -> w_campaignpb.ShowRes.Ballot 278, // 99: w_campaignpb.ShowRes.chop:type_name -> w_campaignpb.ShowRes.Chop 252, // 100: w_campaignpb.ShowRes.delay_link_data:type_name -> w_campaignpb.ShowRes.KV 258, // 101: w_campaignpb.ShowRes.rewards:type_name -> w_campaignpb.ShowRes.Rewards 254, // 102: w_campaignpb.ShowRes.rewards_web:type_name -> w_campaignpb.ShowRes.Reward 254, // 103: w_campaignpb.ShowRes.rewards_extra:type_name -> w_campaignpb.ShowRes.Reward 254, // 104: w_campaignpb.ShowRes.rewards_newcomer:type_name -> w_campaignpb.ShowRes.Reward 249, // 105: w_campaignpb.ShowRes.target_option:type_name -> w_campaignpb.ShowRes.TargetOption 279, // 106: w_campaignpb.ShowRes.cash:type_name -> w_campaignpb.ShowRes.Cash 243, // 107: w_campaignpb.ShowRes.long_imgs:type_name -> w_campaignpb.ShowRes.LongImg 281, // 108: w_campaignpb.ShowRes.flip:type_name -> w_campaignpb.ShowRes.Flip 282, // 109: w_campaignpb.ShowRes.keep_dog:type_name -> w_campaignpb.ShowRes.Keep 286, // 110: w_campaignpb.ShowRes.push:type_name -> w_campaignpb.ShowRes.Push 240, // 111: w_campaignpb.ShowRes.child:type_name -> w_campaignpb.ShowRes.Child 239, // 112: w_campaignpb.ShowRes.wheel_style:type_name -> w_campaignpb.ShowRes.WheelStyle 289, // 113: w_campaignpb.ShowRes.gold:type_name -> w_campaignpb.ShowRes.Gold 290, // 114: w_campaignpb.ShowRes.coin:type_name -> w_campaignpb.ShowRes.Coin 238, // 115: w_campaignpb.ShowRes.grid_style:type_name -> w_campaignpb.ShowRes.GridStyle 237, // 116: w_campaignpb.ShowRes.flip_style:type_name -> w_campaignpb.ShowRes.FlipStyle 236, // 117: w_campaignpb.ShowRes.points_use:type_name -> w_campaignpb.ShowRes.PointsUse 235, // 118: w_campaignpb.ShowRes.chat:type_name -> w_campaignpb.ShowRes.Chat 231, // 119: w_campaignpb.ShowRes.vs:type_name -> w_campaignpb.ShowRes.Vs 227, // 120: w_campaignpb.ShowRes.uno:type_name -> w_campaignpb.ShowRes.Uno 224, // 121: w_campaignpb.ShowRes.event:type_name -> w_campaignpb.ShowRes.Event 270, // 122: w_campaignpb.ShowRes.gashapon:type_name -> w_campaignpb.ShowRes.LotteryConfig 223, // 123: w_campaignpb.ShowRes.gashapon_style:type_name -> w_campaignpb.ShowRes.GashaponStyle 291, // 124: w_campaignpb.ChannelListRes.list:type_name -> w_campaignpb.ChannelListRes.One 291, // 125: w_campaignpb.ChannelListRes.web_list:type_name -> w_campaignpb.ChannelListRes.One 292, // 126: w_campaignpb.KvDataRes.kv:type_name -> w_campaignpb.KvDataRes.KV 293, // 127: w_campaignpb.BarrageRes.tran_content:type_name -> w_campaignpb.BarrageRes.TranContent 295, // 128: w_campaignpb.OptionRes.options:type_name -> w_campaignpb.OptionRes.Option 296, // 129: w_campaignpb.LangsRes.langs:type_name -> w_campaignpb.LangsRes.Lang 296, // 130: w_campaignpb.LangsRes.not_support:type_name -> w_campaignpb.LangsRes.Lang 327, // 131: w_campaignpb.LangRes.conds:type_name -> w_campaignpb.LangRes.Cond 324, // 132: w_campaignpb.LangRes.quit:type_name -> w_campaignpb.LangRes.Quit 326, // 133: w_campaignpb.LangRes.questions:type_name -> w_campaignpb.LangRes.Question 328, // 134: w_campaignpb.LangRes.long_imgs:type_name -> w_campaignpb.LangRes.LongImg 330, // 135: w_campaignpb.LangRes.cash:type_name -> w_campaignpb.LangRes.Cash 323, // 136: w_campaignpb.LangRes.qa_group:type_name -> w_campaignpb.LangRes.QaGroup 322, // 137: w_campaignpb.LangRes.talk_text:type_name -> w_campaignpb.LangRes.Talk 331, // 138: w_campaignpb.LangRes.gold:type_name -> w_campaignpb.LangRes.Gold 332, // 139: w_campaignpb.LangRes.coin:type_name -> w_campaignpb.LangRes.Coin 319, // 140: w_campaignpb.LangRes.schedules:type_name -> w_campaignpb.LangRes.Schedule 317, // 141: w_campaignpb.LangRes.uno:type_name -> w_campaignpb.LangRes.Uno 346, // 142: w_campaignpb.SaveLangReq.conds:type_name -> w_campaignpb.SaveLangReq.Cond 343, // 143: w_campaignpb.SaveLangReq.quit:type_name -> w_campaignpb.SaveLangReq.Quit 345, // 144: w_campaignpb.SaveLangReq.questions:type_name -> w_campaignpb.SaveLangReq.Question 347, // 145: w_campaignpb.SaveLangReq.long_imgs:type_name -> w_campaignpb.SaveLangReq.LongImg 340, // 146: w_campaignpb.SaveLangReq.cash:type_name -> w_campaignpb.SaveLangReq.Cash 339, // 147: w_campaignpb.SaveLangReq.qa_group:type_name -> w_campaignpb.SaveLangReq.QaGroup 338, // 148: w_campaignpb.SaveLangReq.talk_text:type_name -> w_campaignpb.SaveLangReq.Talk 341, // 149: w_campaignpb.SaveLangReq.gold:type_name -> w_campaignpb.SaveLangReq.Gold 342, // 150: w_campaignpb.SaveLangReq.coin:type_name -> w_campaignpb.SaveLangReq.Coin 335, // 151: w_campaignpb.SaveLangReq.schedules:type_name -> w_campaignpb.SaveLangReq.Schedule 333, // 152: w_campaignpb.SaveLangReq.uno:type_name -> w_campaignpb.SaveLangReq.Uno 349, // 153: w_campaignpb.LangSelectRes.list:type_name -> w_campaignpb.LangSelectRes.One 350, // 154: w_campaignpb.ShowRewardRes.rewards:type_name -> w_campaignpb.ShowRewardRes.Reward 350, // 155: w_campaignpb.ShowRewardRes.rewards_web:type_name -> w_campaignpb.ShowRewardRes.Reward 350, // 156: w_campaignpb.ShowRewardRes.rewards_extra:type_name -> w_campaignpb.ShowRewardRes.Reward 350, // 157: w_campaignpb.ShowRewardRes.rewards_newcomer:type_name -> w_campaignpb.ShowRewardRes.Reward 352, // 158: w_campaignpb.AdsStoreReq.delay_link_data:type_name -> w_campaignpb.AdsStoreReq.KV 353, // 159: w_campaignpb.AdsStoreReq.rewards:type_name -> w_campaignpb.AdsStoreReq.Reward 354, // 160: w_campaignpb.AdsStoreReq.flip:type_name -> w_campaignpb.AdsStoreReq.Flip 355, // 161: w_campaignpb.AdsUpdateReq.delay_link_data:type_name -> w_campaignpb.AdsUpdateReq.KV 356, // 162: w_campaignpb.AdsUpdateReq.rewards:type_name -> w_campaignpb.AdsUpdateReq.Reward 357, // 163: w_campaignpb.AdsUpdateReq.flip:type_name -> w_campaignpb.AdsUpdateReq.Flip 358, // 164: w_campaignpb.AdsShowRes.delay_link_data:type_name -> w_campaignpb.AdsShowRes.KV 359, // 165: w_campaignpb.AdsShowRes.rewards:type_name -> w_campaignpb.AdsShowRes.Reward 360, // 166: w_campaignpb.AdsShowRes.flip:type_name -> w_campaignpb.AdsShowRes.Flip 361, // 167: w_campaignpb.CampaignSelectRes.list:type_name -> w_campaignpb.CampaignSelectRes.One 367, // 168: w_campaignpb.RewardDetailRes.normal:type_name -> w_campaignpb.RewardDetailRes.Reward 368, // 169: w_campaignpb.RewardDetailRes.user_level:type_name -> w_campaignpb.RewardDetailRes.UserLevelOne 369, // 170: w_campaignpb.RewardDetailRes.langs:type_name -> w_campaignpb.RewardDetailRes.LangOne 370, // 171: w_campaignpb.RewardDetailRes.lang_user_level:type_name -> w_campaignpb.RewardDetailRes.LangUserLevelOne 371, // 172: w_campaignpb.RewardDetailRes.country:type_name -> w_campaignpb.RewardDetailRes.CountryOne 367, // 173: w_campaignpb.RewardDetailRes.step_reward:type_name -> w_campaignpb.RewardDetailRes.Reward 367, // 174: w_campaignpb.RewardDetailRes.extra_reward:type_name -> w_campaignpb.RewardDetailRes.Reward 367, // 175: w_campaignpb.RewardDetailRes.newcomer_reward:type_name -> w_campaignpb.RewardDetailRes.Reward 367, // 176: w_campaignpb.RewardDetailRes.task_reward:type_name -> w_campaignpb.RewardDetailRes.Reward 366, // 177: w_campaignpb.RewardDetailRes.pools:type_name -> w_campaignpb.RewardDetailRes.Pool 363, // 178: w_campaignpb.RewardDetailRes.schedules:type_name -> w_campaignpb.RewardDetailRes.Schedule 362, // 179: w_campaignpb.RewardDetailRes.uno_cards:type_name -> w_campaignpb.RewardDetailRes.UnoCard 372, // 180: w_campaignpb.CampaignTzRes.list:type_name -> w_campaignpb.CampaignTzRes.One 373, // 181: w_campaignpb.CampaignRewardTypeRes.list:type_name -> w_campaignpb.CampaignRewardTypeRes.One 374, // 182: w_campaignpb.ChildListRes.list:type_name -> w_campaignpb.ChildListRes.One 376, // 183: w_campaignpb.ChildStoreReq.rewards:type_name -> w_campaignpb.ChildStoreReq.Reward 375, // 184: w_campaignpb.ChildStoreReq.win_1:type_name -> w_campaignpb.ChildStoreReq.TaskGroup 375, // 185: w_campaignpb.ChildStoreReq.win_2:type_name -> w_campaignpb.ChildStoreReq.TaskGroup 375, // 186: w_campaignpb.ChildStoreReq.win_3:type_name -> w_campaignpb.ChildStoreReq.TaskGroup 379, // 187: w_campaignpb.ChildUpdateReq.rewards:type_name -> w_campaignpb.ChildUpdateReq.Reward 378, // 188: w_campaignpb.ChildUpdateReq.win_1:type_name -> w_campaignpb.ChildUpdateReq.TaskGroup 378, // 189: w_campaignpb.ChildUpdateReq.win_2:type_name -> w_campaignpb.ChildUpdateReq.TaskGroup 378, // 190: w_campaignpb.ChildUpdateReq.win_3:type_name -> w_campaignpb.ChildUpdateReq.TaskGroup 382, // 191: w_campaignpb.ChildShowRes.rewards:type_name -> w_campaignpb.ChildShowRes.Reward 381, // 192: w_campaignpb.ChildShowRes.win_1:type_name -> w_campaignpb.ChildShowRes.TaskGroup 381, // 193: w_campaignpb.ChildShowRes.win_2:type_name -> w_campaignpb.ChildShowRes.TaskGroup 381, // 194: w_campaignpb.ChildShowRes.win_3:type_name -> w_campaignpb.ChildShowRes.TaskGroup 385, // 195: w_campaignpb.TaskCenterJumpRes.list:type_name -> w_campaignpb.TaskCenterJumpRes.One 386, // 196: w_campaignpb.CondListRes.list:type_name -> w_campaignpb.CondListRes.One 388, // 197: w_campaignpb.CampaignsRes.list:type_name -> w_campaignpb.CampaignsRes.One 389, // 198: w_campaignpb.VsSettlementReq.scores:type_name -> w_campaignpb.VsSettlementReq.Score 390, // 199: w_campaignpb.VsSettlementRes.pk_team:type_name -> w_campaignpb.VsSettlementRes.PkTeam 392, // 200: w_campaignpb.VsSettlementInfoRes.teams:type_name -> w_campaignpb.VsSettlementInfoRes.Team 89, // 201: w_campaignpb.ListRes.One.lang_tz:type_name -> w_campaignpb.ListRes.LangTz 90, // 202: w_campaignpb.ListRes.One.channel_list:type_name -> w_campaignpb.ListRes.Channel 91, // 203: w_campaignpb.ListRes.One.cond_list:type_name -> w_campaignpb.ListRes.Cond 95, // 204: w_campaignpb.StoreReq.Event.first_visit:type_name -> w_campaignpb.StoreReq.EventOne 96, // 205: w_campaignpb.StoreReq.EventOne.rewards:type_name -> w_campaignpb.StoreReq.EventReward 122, // 206: w_campaignpb.StoreReq.EventReward.reward:type_name -> w_campaignpb.StoreReq.Reward 98, // 207: w_campaignpb.StoreReq.Uno.red:type_name -> w_campaignpb.StoreReq.UnoGroup 98, // 208: w_campaignpb.StoreReq.Uno.yellow:type_name -> w_campaignpb.StoreReq.UnoGroup 98, // 209: w_campaignpb.StoreReq.Uno.blue:type_name -> w_campaignpb.StoreReq.UnoGroup 98, // 210: w_campaignpb.StoreReq.Uno.green:type_name -> w_campaignpb.StoreReq.UnoGroup 122, // 211: w_campaignpb.StoreReq.UnoGroup.reward:type_name -> w_campaignpb.StoreReq.Reward 99, // 212: w_campaignpb.StoreReq.UnoGroup.limit_rule:type_name -> w_campaignpb.StoreReq.UnoLimitRule 100, // 213: w_campaignpb.StoreReq.UnoGroup.cards:type_name -> w_campaignpb.StoreReq.UnoCard 102, // 214: w_campaignpb.StoreReq.Vs.schedules:type_name -> w_campaignpb.StoreReq.Schedule 103, // 215: w_campaignpb.StoreReq.Schedule.pk_teams:type_name -> w_campaignpb.StoreReq.PkTeam 104, // 216: w_campaignpb.StoreReq.PkTeam.teams:type_name -> w_campaignpb.StoreReq.Team 113, // 217: w_campaignpb.StoreReq.LongImg.hot_zone:type_name -> w_campaignpb.StoreReq.HotZone 115, // 218: w_campaignpb.StoreReq.Target.cond:type_name -> w_campaignpb.StoreReq.Cond 116, // 219: w_campaignpb.StoreReq.Target.both_all:type_name -> w_campaignpb.StoreReq.BothAll 117, // 220: w_campaignpb.StoreReq.Target.normal_data:type_name -> w_campaignpb.StoreReq.NormalData 122, // 221: w_campaignpb.StoreReq.Cond.reward:type_name -> w_campaignpb.StoreReq.Reward 122, // 222: w_campaignpb.StoreReq.BothAll.reward:type_name -> w_campaignpb.StoreReq.Reward 119, // 223: w_campaignpb.StoreReq.TargetOption.fixed:type_name -> w_campaignpb.StoreReq.Fixed 120, // 224: w_campaignpb.StoreReq.TargetOption.custom:type_name -> w_campaignpb.StoreReq.Custom 115, // 225: w_campaignpb.StoreReq.Custom.cond:type_name -> w_campaignpb.StoreReq.Cond 116, // 226: w_campaignpb.StoreReq.Custom.both_all:type_name -> w_campaignpb.StoreReq.BothAll 125, // 227: w_campaignpb.StoreReq.Reward.collect_rule:type_name -> w_campaignpb.StoreReq.CollectRule 124, // 228: w_campaignpb.StoreReq.Reward.open_add:type_name -> w_campaignpb.StoreReq.OpenAdd 123, // 229: w_campaignpb.StoreReq.Reward.reward_task:type_name -> w_campaignpb.StoreReq.RewardTask 122, // 230: w_campaignpb.StoreReq.Rewards.normal:type_name -> w_campaignpb.StoreReq.Reward 127, // 231: w_campaignpb.StoreReq.Rewards.user_level:type_name -> w_campaignpb.StoreReq.UserLevel 129, // 232: w_campaignpb.StoreReq.Rewards.langs:type_name -> w_campaignpb.StoreReq.Lang 130, // 233: w_campaignpb.StoreReq.Rewards.lang_user_level:type_name -> w_campaignpb.StoreReq.LangUserLevel 131, // 234: w_campaignpb.StoreReq.Rewards.country:type_name -> w_campaignpb.StoreReq.Country 128, // 235: w_campaignpb.StoreReq.UserLevel.level_list:type_name -> w_campaignpb.StoreReq.UserLevelOne 122, // 236: w_campaignpb.StoreReq.UserLevelOne.rewards:type_name -> w_campaignpb.StoreReq.Reward 122, // 237: w_campaignpb.StoreReq.Lang.rewards:type_name -> w_campaignpb.StoreReq.Reward 128, // 238: w_campaignpb.StoreReq.LangUserLevel.level_list:type_name -> w_campaignpb.StoreReq.UserLevelOne 132, // 239: w_campaignpb.StoreReq.Country.country_list:type_name -> w_campaignpb.StoreReq.CountryOne 122, // 240: w_campaignpb.StoreReq.CountryOne.rewards:type_name -> w_campaignpb.StoreReq.Reward 134, // 241: w_campaignpb.StoreReq.QaQuestion.options:type_name -> w_campaignpb.StoreReq.QaOption 135, // 242: w_campaignpb.StoreReq.Quiz.options:type_name -> w_campaignpb.StoreReq.QuizOption 133, // 243: w_campaignpb.StoreReq.QuestionAnswer.questions:type_name -> w_campaignpb.StoreReq.QaQuestion 142, // 244: w_campaignpb.StoreReq.Dice.map_point:type_name -> w_campaignpb.StoreReq.MapPoint 144, // 245: w_campaignpb.StoreReq.Grow.steps:type_name -> w_campaignpb.StoreReq.GrowStep 150, // 246: w_campaignpb.StoreReq.Keep.invite:type_name -> w_campaignpb.StoreReq.Invite 151, // 247: w_campaignpb.StoreReq.Keep.talk_text:type_name -> w_campaignpb.StoreReq.Talk 152, // 248: w_campaignpb.StoreReq.Keep.steps:type_name -> w_campaignpb.StoreReq.KeepStep 122, // 249: w_campaignpb.StoreReq.KeepStep.reward:type_name -> w_campaignpb.StoreReq.Reward 154, // 250: w_campaignpb.StoreReq.Push.task_reset:type_name -> w_campaignpb.StoreReq.PushOne 154, // 251: w_campaignpb.StoreReq.Push.active:type_name -> w_campaignpb.StoreReq.PushOne 154, // 252: w_campaignpb.StoreReq.Push.offline:type_name -> w_campaignpb.StoreReq.PushOne 154, // 253: w_campaignpb.StoreReq.Push.visit:type_name -> w_campaignpb.StoreReq.PushOne 155, // 254: w_campaignpb.StoreReq.PushOne.push_cond:type_name -> w_campaignpb.StoreReq.PushCond 160, // 255: w_campaignpb.UpdateReq.Event.first_visit:type_name -> w_campaignpb.UpdateReq.EventOne 161, // 256: w_campaignpb.UpdateReq.EventOne.rewards:type_name -> w_campaignpb.UpdateReq.EventReward 187, // 257: w_campaignpb.UpdateReq.EventReward.reward:type_name -> w_campaignpb.UpdateReq.Reward 163, // 258: w_campaignpb.UpdateReq.Uno.red:type_name -> w_campaignpb.UpdateReq.UnoGroup 163, // 259: w_campaignpb.UpdateReq.Uno.yellow:type_name -> w_campaignpb.UpdateReq.UnoGroup 163, // 260: w_campaignpb.UpdateReq.Uno.blue:type_name -> w_campaignpb.UpdateReq.UnoGroup 163, // 261: w_campaignpb.UpdateReq.Uno.green:type_name -> w_campaignpb.UpdateReq.UnoGroup 187, // 262: w_campaignpb.UpdateReq.UnoGroup.reward:type_name -> w_campaignpb.UpdateReq.Reward 164, // 263: w_campaignpb.UpdateReq.UnoGroup.limit_rule:type_name -> w_campaignpb.UpdateReq.UnoLimitRule 165, // 264: w_campaignpb.UpdateReq.UnoGroup.cards:type_name -> w_campaignpb.UpdateReq.UnoCard 167, // 265: w_campaignpb.UpdateReq.Vs.schedules:type_name -> w_campaignpb.UpdateReq.Schedule 168, // 266: w_campaignpb.UpdateReq.Schedule.pk_teams:type_name -> w_campaignpb.UpdateReq.PkTeam 169, // 267: w_campaignpb.UpdateReq.PkTeam.teams:type_name -> w_campaignpb.UpdateReq.Team 178, // 268: w_campaignpb.UpdateReq.LongImg.hot_zone:type_name -> w_campaignpb.UpdateReq.HotZone 180, // 269: w_campaignpb.UpdateReq.Target.cond:type_name -> w_campaignpb.UpdateReq.Cond 181, // 270: w_campaignpb.UpdateReq.Target.both_all:type_name -> w_campaignpb.UpdateReq.BothAll 182, // 271: w_campaignpb.UpdateReq.Target.normal_data:type_name -> w_campaignpb.UpdateReq.NormalData 187, // 272: w_campaignpb.UpdateReq.Cond.reward:type_name -> w_campaignpb.UpdateReq.Reward 187, // 273: w_campaignpb.UpdateReq.BothAll.reward:type_name -> w_campaignpb.UpdateReq.Reward 184, // 274: w_campaignpb.UpdateReq.TargetOption.fixed:type_name -> w_campaignpb.UpdateReq.Fixed 185, // 275: w_campaignpb.UpdateReq.TargetOption.custom:type_name -> w_campaignpb.UpdateReq.Custom 180, // 276: w_campaignpb.UpdateReq.Custom.cond:type_name -> w_campaignpb.UpdateReq.Cond 181, // 277: w_campaignpb.UpdateReq.Custom.both_all:type_name -> w_campaignpb.UpdateReq.BothAll 190, // 278: w_campaignpb.UpdateReq.Reward.collect_rule:type_name -> w_campaignpb.UpdateReq.CollectRule 189, // 279: w_campaignpb.UpdateReq.Reward.open_add:type_name -> w_campaignpb.UpdateReq.OpenAdd 188, // 280: w_campaignpb.UpdateReq.Reward.reward_task:type_name -> w_campaignpb.UpdateReq.RewardTask 187, // 281: w_campaignpb.UpdateReq.Rewards.normal:type_name -> w_campaignpb.UpdateReq.Reward 192, // 282: w_campaignpb.UpdateReq.Rewards.user_level:type_name -> w_campaignpb.UpdateReq.UserLevel 194, // 283: w_campaignpb.UpdateReq.Rewards.langs:type_name -> w_campaignpb.UpdateReq.Lang 195, // 284: w_campaignpb.UpdateReq.Rewards.lang_user_level:type_name -> w_campaignpb.UpdateReq.LangUserLevel 196, // 285: w_campaignpb.UpdateReq.Rewards.country:type_name -> w_campaignpb.UpdateReq.Country 193, // 286: w_campaignpb.UpdateReq.UserLevel.level_list:type_name -> w_campaignpb.UpdateReq.UserLevelOne 187, // 287: w_campaignpb.UpdateReq.UserLevelOne.rewards:type_name -> w_campaignpb.UpdateReq.Reward 187, // 288: w_campaignpb.UpdateReq.Lang.rewards:type_name -> w_campaignpb.UpdateReq.Reward 193, // 289: w_campaignpb.UpdateReq.LangUserLevel.level_list:type_name -> w_campaignpb.UpdateReq.UserLevelOne 197, // 290: w_campaignpb.UpdateReq.Country.country_list:type_name -> w_campaignpb.UpdateReq.CountryOne 187, // 291: w_campaignpb.UpdateReq.CountryOne.rewards:type_name -> w_campaignpb.UpdateReq.Reward 199, // 292: w_campaignpb.UpdateReq.QaQuestion.options:type_name -> w_campaignpb.UpdateReq.QaOption 200, // 293: w_campaignpb.UpdateReq.Quiz.options:type_name -> w_campaignpb.UpdateReq.QuizOption 198, // 294: w_campaignpb.UpdateReq.QuestionAnswer.questions:type_name -> w_campaignpb.UpdateReq.QaQuestion 207, // 295: w_campaignpb.UpdateReq.Dice.map_point:type_name -> w_campaignpb.UpdateReq.MapPoint 209, // 296: w_campaignpb.UpdateReq.Grow.steps:type_name -> w_campaignpb.UpdateReq.GrowStep 215, // 297: w_campaignpb.UpdateReq.Keep.invite:type_name -> w_campaignpb.UpdateReq.Invite 216, // 298: w_campaignpb.UpdateReq.Keep.talk_text:type_name -> w_campaignpb.UpdateReq.Talk 217, // 299: w_campaignpb.UpdateReq.Keep.steps:type_name -> w_campaignpb.UpdateReq.KeepStep 187, // 300: w_campaignpb.UpdateReq.KeepStep.reward:type_name -> w_campaignpb.UpdateReq.Reward 219, // 301: w_campaignpb.UpdateReq.Push.task_reset:type_name -> w_campaignpb.UpdateReq.PushOne 219, // 302: w_campaignpb.UpdateReq.Push.active:type_name -> w_campaignpb.UpdateReq.PushOne 219, // 303: w_campaignpb.UpdateReq.Push.offline:type_name -> w_campaignpb.UpdateReq.PushOne 219, // 304: w_campaignpb.UpdateReq.Push.visit:type_name -> w_campaignpb.UpdateReq.PushOne 220, // 305: w_campaignpb.UpdateReq.PushOne.push_cond:type_name -> w_campaignpb.UpdateReq.PushCond 225, // 306: w_campaignpb.ShowRes.Event.first_visit:type_name -> w_campaignpb.ShowRes.EventOne 226, // 307: w_campaignpb.ShowRes.EventOne.rewards:type_name -> w_campaignpb.ShowRes.EventReward 254, // 308: w_campaignpb.ShowRes.EventReward.reward:type_name -> w_campaignpb.ShowRes.Reward 228, // 309: w_campaignpb.ShowRes.Uno.red:type_name -> w_campaignpb.ShowRes.UnoGroup 228, // 310: w_campaignpb.ShowRes.Uno.yellow:type_name -> w_campaignpb.ShowRes.UnoGroup 228, // 311: w_campaignpb.ShowRes.Uno.blue:type_name -> w_campaignpb.ShowRes.UnoGroup 228, // 312: w_campaignpb.ShowRes.Uno.green:type_name -> w_campaignpb.ShowRes.UnoGroup 254, // 313: w_campaignpb.ShowRes.UnoGroup.reward:type_name -> w_campaignpb.ShowRes.Reward 229, // 314: w_campaignpb.ShowRes.UnoGroup.limit_rule:type_name -> w_campaignpb.ShowRes.UnoLimitRule 230, // 315: w_campaignpb.ShowRes.UnoGroup.cards:type_name -> w_campaignpb.ShowRes.UnoCard 232, // 316: w_campaignpb.ShowRes.Vs.schedules:type_name -> w_campaignpb.ShowRes.Schedule 233, // 317: w_campaignpb.ShowRes.Schedule.pk_teams:type_name -> w_campaignpb.ShowRes.PkTeam 234, // 318: w_campaignpb.ShowRes.PkTeam.teams:type_name -> w_campaignpb.ShowRes.Team 244, // 319: w_campaignpb.ShowRes.LongImg.hot_zone:type_name -> w_campaignpb.ShowRes.HotZone 246, // 320: w_campaignpb.ShowRes.Target.cond:type_name -> w_campaignpb.ShowRes.Cond 247, // 321: w_campaignpb.ShowRes.Target.both_all:type_name -> w_campaignpb.ShowRes.BothAll 248, // 322: w_campaignpb.ShowRes.Target.normal_data:type_name -> w_campaignpb.ShowRes.NormalData 254, // 323: w_campaignpb.ShowRes.Cond.reward:type_name -> w_campaignpb.ShowRes.Reward 254, // 324: w_campaignpb.ShowRes.BothAll.reward:type_name -> w_campaignpb.ShowRes.Reward 250, // 325: w_campaignpb.ShowRes.TargetOption.fixed:type_name -> w_campaignpb.ShowRes.Fixed 251, // 326: w_campaignpb.ShowRes.TargetOption.custom:type_name -> w_campaignpb.ShowRes.Custom 246, // 327: w_campaignpb.ShowRes.Custom.cond:type_name -> w_campaignpb.ShowRes.Cond 247, // 328: w_campaignpb.ShowRes.Custom.both_all:type_name -> w_campaignpb.ShowRes.BothAll 252, // 329: w_campaignpb.ShowRes.WebReward.kv_data:type_name -> w_campaignpb.ShowRes.KV 252, // 330: w_campaignpb.ShowRes.Reward.kv_data:type_name -> w_campaignpb.ShowRes.KV 257, // 331: w_campaignpb.ShowRes.Reward.collect_rule:type_name -> w_campaignpb.ShowRes.CollectRule 256, // 332: w_campaignpb.ShowRes.Reward.open_add:type_name -> w_campaignpb.ShowRes.OpenAdd 255, // 333: w_campaignpb.ShowRes.Reward.reward_task:type_name -> w_campaignpb.ShowRes.RewardTask 254, // 334: w_campaignpb.ShowRes.Rewards.normal:type_name -> w_campaignpb.ShowRes.Reward 259, // 335: w_campaignpb.ShowRes.Rewards.user_level:type_name -> w_campaignpb.ShowRes.UserLevel 261, // 336: w_campaignpb.ShowRes.Rewards.langs:type_name -> w_campaignpb.ShowRes.Lang 262, // 337: w_campaignpb.ShowRes.Rewards.lang_user_level:type_name -> w_campaignpb.ShowRes.LangUserLevel 263, // 338: w_campaignpb.ShowRes.Rewards.country:type_name -> w_campaignpb.ShowRes.Country 260, // 339: w_campaignpb.ShowRes.UserLevel.level_list:type_name -> w_campaignpb.ShowRes.UserLevelOne 254, // 340: w_campaignpb.ShowRes.UserLevelOne.rewards:type_name -> w_campaignpb.ShowRes.Reward 254, // 341: w_campaignpb.ShowRes.Lang.rewards:type_name -> w_campaignpb.ShowRes.Reward 260, // 342: w_campaignpb.ShowRes.LangUserLevel.level_list:type_name -> w_campaignpb.ShowRes.UserLevelOne 264, // 343: w_campaignpb.ShowRes.Country.country_list:type_name -> w_campaignpb.ShowRes.CountryOne 254, // 344: w_campaignpb.ShowRes.CountryOne.rewards:type_name -> w_campaignpb.ShowRes.Reward 266, // 345: w_campaignpb.ShowRes.QaQuestion.options:type_name -> w_campaignpb.ShowRes.QaOption 267, // 346: w_campaignpb.ShowRes.Quiz.options:type_name -> w_campaignpb.ShowRes.QuizOption 265, // 347: w_campaignpb.ShowRes.QuestionAnswer.questions:type_name -> w_campaignpb.ShowRes.QaQuestion 274, // 348: w_campaignpb.ShowRes.Dice.map_point:type_name -> w_campaignpb.ShowRes.MapPoint 276, // 349: w_campaignpb.ShowRes.Grow.steps:type_name -> w_campaignpb.ShowRes.GrowStep 280, // 350: w_campaignpb.ShowRes.Cash.spin_cash:type_name -> w_campaignpb.ShowRes.SpinCash 283, // 351: w_campaignpb.ShowRes.Keep.invite:type_name -> w_campaignpb.ShowRes.Invite 284, // 352: w_campaignpb.ShowRes.Keep.talk_text:type_name -> w_campaignpb.ShowRes.Talk 285, // 353: w_campaignpb.ShowRes.Keep.steps:type_name -> w_campaignpb.ShowRes.KeepStep 254, // 354: w_campaignpb.ShowRes.KeepStep.reward:type_name -> w_campaignpb.ShowRes.Reward 287, // 355: w_campaignpb.ShowRes.Push.task_reset:type_name -> w_campaignpb.ShowRes.PushOne 287, // 356: w_campaignpb.ShowRes.Push.active:type_name -> w_campaignpb.ShowRes.PushOne 287, // 357: w_campaignpb.ShowRes.Push.offline:type_name -> w_campaignpb.ShowRes.PushOne 287, // 358: w_campaignpb.ShowRes.Push.visit:type_name -> w_campaignpb.ShowRes.PushOne 288, // 359: w_campaignpb.ShowRes.PushOne.push_cond:type_name -> w_campaignpb.ShowRes.PushCond 280, // 360: w_campaignpb.ShowRes.Gold.spin_cash:type_name -> w_campaignpb.ShowRes.SpinCash 294, // 361: w_campaignpb.BarrageRes.TranContent.replace_kv:type_name -> w_campaignpb.BarrageRes.KV 316, // 362: w_campaignpb.LangsRes.Lang.conds:type_name -> w_campaignpb.LangsRes.Cond 313, // 363: w_campaignpb.LangsRes.Lang.quit:type_name -> w_campaignpb.LangsRes.Quit 315, // 364: w_campaignpb.LangsRes.Lang.questions:type_name -> w_campaignpb.LangsRes.Question 309, // 365: w_campaignpb.LangsRes.Lang.rewards:type_name -> w_campaignpb.LangsRes.Rewards 310, // 366: w_campaignpb.LangsRes.Lang.rewards_web:type_name -> w_campaignpb.LangsRes.Reward 310, // 367: w_campaignpb.LangsRes.Lang.rewards_extra:type_name -> w_campaignpb.LangsRes.Reward 310, // 368: w_campaignpb.LangsRes.Lang.rewards_newcomer:type_name -> w_campaignpb.LangsRes.Reward 307, // 369: w_campaignpb.LangsRes.Lang.long_imgs:type_name -> w_campaignpb.LangsRes.LongImg 304, // 370: w_campaignpb.LangsRes.Lang.cash:type_name -> w_campaignpb.LangsRes.Cash 302, // 371: w_campaignpb.LangsRes.Lang.qa_group:type_name -> w_campaignpb.LangsRes.QaGroup 303, // 372: w_campaignpb.LangsRes.Lang.talk_text:type_name -> w_campaignpb.LangsRes.Talk 305, // 373: w_campaignpb.LangsRes.Lang.gold:type_name -> w_campaignpb.LangsRes.Gold 306, // 374: w_campaignpb.LangsRes.Lang.coin:type_name -> w_campaignpb.LangsRes.Coin 299, // 375: w_campaignpb.LangsRes.Lang.schedules:type_name -> w_campaignpb.LangsRes.Schedule 297, // 376: w_campaignpb.LangsRes.Lang.uno:type_name -> w_campaignpb.LangsRes.Uno 298, // 377: w_campaignpb.LangsRes.Uno.red:type_name -> w_campaignpb.LangsRes.UnoCard 298, // 378: w_campaignpb.LangsRes.Uno.yellow:type_name -> w_campaignpb.LangsRes.UnoCard 298, // 379: w_campaignpb.LangsRes.Uno.blue:type_name -> w_campaignpb.LangsRes.UnoCard 298, // 380: w_campaignpb.LangsRes.Uno.green:type_name -> w_campaignpb.LangsRes.UnoCard 300, // 381: w_campaignpb.LangsRes.Schedule.pk_teams:type_name -> w_campaignpb.LangsRes.PkTeam 301, // 382: w_campaignpb.LangsRes.PkTeam.teams:type_name -> w_campaignpb.LangsRes.Team 308, // 383: w_campaignpb.LangsRes.LongImg.hot_zone:type_name -> w_campaignpb.LangsRes.HotZone 310, // 384: w_campaignpb.LangsRes.Rewards.normal:type_name -> w_campaignpb.LangsRes.Reward 311, // 385: w_campaignpb.LangsRes.Rewards.user_level:type_name -> w_campaignpb.LangsRes.UserLevelOne 310, // 386: w_campaignpb.LangsRes.Rewards.langs:type_name -> w_campaignpb.LangsRes.Reward 311, // 387: w_campaignpb.LangsRes.Rewards.lang_user_level:type_name -> w_campaignpb.LangsRes.UserLevelOne 312, // 388: w_campaignpb.LangsRes.Rewards.country:type_name -> w_campaignpb.LangsRes.CountryOne 310, // 389: w_campaignpb.LangsRes.UserLevelOne.rewards:type_name -> w_campaignpb.LangsRes.Reward 310, // 390: w_campaignpb.LangsRes.CountryOne.rewards:type_name -> w_campaignpb.LangsRes.Reward 314, // 391: w_campaignpb.LangsRes.Quit.options:type_name -> w_campaignpb.LangsRes.Option 314, // 392: w_campaignpb.LangsRes.Question.options:type_name -> w_campaignpb.LangsRes.Option 318, // 393: w_campaignpb.LangRes.Uno.red:type_name -> w_campaignpb.LangRes.UnoCard 318, // 394: w_campaignpb.LangRes.Uno.yellow:type_name -> w_campaignpb.LangRes.UnoCard 318, // 395: w_campaignpb.LangRes.Uno.blue:type_name -> w_campaignpb.LangRes.UnoCard 318, // 396: w_campaignpb.LangRes.Uno.green:type_name -> w_campaignpb.LangRes.UnoCard 320, // 397: w_campaignpb.LangRes.Schedule.pk_teams:type_name -> w_campaignpb.LangRes.PkTeam 321, // 398: w_campaignpb.LangRes.PkTeam.teams:type_name -> w_campaignpb.LangRes.Team 325, // 399: w_campaignpb.LangRes.Quit.options:type_name -> w_campaignpb.LangRes.Option 325, // 400: w_campaignpb.LangRes.Question.options:type_name -> w_campaignpb.LangRes.Option 329, // 401: w_campaignpb.LangRes.LongImg.hot_zone:type_name -> w_campaignpb.LangRes.HotZone 334, // 402: w_campaignpb.SaveLangReq.Uno.red:type_name -> w_campaignpb.SaveLangReq.UnoCard 334, // 403: w_campaignpb.SaveLangReq.Uno.yellow:type_name -> w_campaignpb.SaveLangReq.UnoCard 334, // 404: w_campaignpb.SaveLangReq.Uno.blue:type_name -> w_campaignpb.SaveLangReq.UnoCard 334, // 405: w_campaignpb.SaveLangReq.Uno.green:type_name -> w_campaignpb.SaveLangReq.UnoCard 336, // 406: w_campaignpb.SaveLangReq.Schedule.pk_teams:type_name -> w_campaignpb.SaveLangReq.PkTeam 337, // 407: w_campaignpb.SaveLangReq.PkTeam.teams:type_name -> w_campaignpb.SaveLangReq.Team 344, // 408: w_campaignpb.SaveLangReq.Quit.options:type_name -> w_campaignpb.SaveLangReq.Option 344, // 409: w_campaignpb.SaveLangReq.Question.options:type_name -> w_campaignpb.SaveLangReq.Option 348, // 410: w_campaignpb.SaveLangReq.LongImg.hot_zone:type_name -> w_campaignpb.SaveLangReq.HotZone 351, // 411: w_campaignpb.ShowRewardRes.Reward.kv_data:type_name -> w_campaignpb.ShowRewardRes.KV 358, // 412: w_campaignpb.AdsShowRes.Reward.kv_data:type_name -> w_campaignpb.AdsShowRes.KV 365, // 413: w_campaignpb.RewardDetailRes.Schedule.teams:type_name -> w_campaignpb.RewardDetailRes.Team 364, // 414: w_campaignpb.RewardDetailRes.Schedule.votes:type_name -> w_campaignpb.RewardDetailRes.Vote 367, // 415: w_campaignpb.RewardDetailRes.UserLevelOne.rewards:type_name -> w_campaignpb.RewardDetailRes.Reward 367, // 416: w_campaignpb.RewardDetailRes.LangOne.rewards:type_name -> w_campaignpb.RewardDetailRes.Reward 368, // 417: w_campaignpb.RewardDetailRes.LangUserLevelOne.level_list:type_name -> w_campaignpb.RewardDetailRes.UserLevelOne 367, // 418: w_campaignpb.RewardDetailRes.CountryOne.rewards:type_name -> w_campaignpb.RewardDetailRes.Reward 376, // 419: w_campaignpb.ChildStoreReq.TaskGroup.reward:type_name -> w_campaignpb.ChildStoreReq.Reward 377, // 420: w_campaignpb.ChildStoreReq.TaskGroup.conds:type_name -> w_campaignpb.ChildStoreReq.Cond 376, // 421: w_campaignpb.ChildStoreReq.Cond.reward:type_name -> w_campaignpb.ChildStoreReq.Reward 379, // 422: w_campaignpb.ChildUpdateReq.TaskGroup.reward:type_name -> w_campaignpb.ChildUpdateReq.Reward 380, // 423: w_campaignpb.ChildUpdateReq.TaskGroup.conds:type_name -> w_campaignpb.ChildUpdateReq.Cond 379, // 424: w_campaignpb.ChildUpdateReq.Cond.reward:type_name -> w_campaignpb.ChildUpdateReq.Reward 382, // 425: w_campaignpb.ChildShowRes.TaskGroup.reward:type_name -> w_campaignpb.ChildShowRes.Reward 383, // 426: w_campaignpb.ChildShowRes.TaskGroup.conds:type_name -> w_campaignpb.ChildShowRes.Cond 384, // 427: w_campaignpb.ChildShowRes.Reward.kv_data:type_name -> w_campaignpb.ChildShowRes.KV 382, // 428: w_campaignpb.ChildShowRes.Cond.reward:type_name -> w_campaignpb.ChildShowRes.Reward 387, // 429: w_campaignpb.CondListRes.One.conds:type_name -> w_campaignpb.CondListRes.Cond 391, // 430: w_campaignpb.VsSettlementRes.PkTeam.teams:type_name -> w_campaignpb.VsSettlementRes.Team 0, // 431: w_campaignpb.WCampaign.List:input_type -> w_campaignpb.ListReq 2, // 432: w_campaignpb.WCampaign.Share:input_type -> w_campaignpb.ShareReq 4, // 433: w_campaignpb.WCampaign.Status:input_type -> w_campaignpb.StatusReq 6, // 434: w_campaignpb.WCampaign.Destroy:input_type -> w_campaignpb.DestroyReq 8, // 435: w_campaignpb.WCampaign.Store:input_type -> w_campaignpb.StoreReq 10, // 436: w_campaignpb.WCampaign.Update:input_type -> w_campaignpb.UpdateReq 12, // 437: w_campaignpb.WCampaign.Show:input_type -> w_campaignpb.ShowReq 14, // 438: w_campaignpb.WCampaign.ChannelList:input_type -> w_campaignpb.ChannelListReq 16, // 439: w_campaignpb.WCampaign.ChannelCreate:input_type -> w_campaignpb.ChannelCreateReq 18, // 440: w_campaignpb.WCampaign.ChannelUpdate:input_type -> w_campaignpb.ChannelUpdateReq 20, // 441: w_campaignpb.WCampaign.ChannelDestroy:input_type -> w_campaignpb.ChannelDestroyReq 22, // 442: w_campaignpb.WCampaign.KvData:input_type -> w_campaignpb.KvDataReq 24, // 443: w_campaignpb.WCampaign.Cert:input_type -> w_campaignpb.CertReq 26, // 444: w_campaignpb.WCampaign.Barrage:input_type -> w_campaignpb.BarrageReq 28, // 445: w_campaignpb.WCampaign.Option:input_type -> w_campaignpb.OptionReq 30, // 446: w_campaignpb.WCampaign.RelateDdl:input_type -> w_campaignpb.RelateDdlReq 32, // 447: w_campaignpb.WCampaign.DdlCampaign:input_type -> w_campaignpb.DdlCampaignReq 34, // 448: w_campaignpb.WCampaign.Langs:input_type -> w_campaignpb.LangsReq 36, // 449: w_campaignpb.WCampaign.Lang:input_type -> w_campaignpb.LangReq 38, // 450: w_campaignpb.WCampaign.SaveLang:input_type -> w_campaignpb.SaveLangReq 40, // 451: w_campaignpb.WCampaign.DestroyLang:input_type -> w_campaignpb.DestroyLangReq 42, // 452: w_campaignpb.WCampaign.LangSelect:input_type -> w_campaignpb.LangSelectReq 44, // 453: w_campaignpb.WCampaign.CampaignInfo:input_type -> w_campaignpb.CampaignInfoReq 46, // 454: w_campaignpb.WCampaign.ShowReward:input_type -> w_campaignpb.ShowRewardReq 48, // 455: w_campaignpb.WCampaign.AdsStore:input_type -> w_campaignpb.AdsStoreReq 50, // 456: w_campaignpb.WCampaign.AdsUpdate:input_type -> w_campaignpb.AdsUpdateReq 52, // 457: w_campaignpb.WCampaign.AdsShow:input_type -> w_campaignpb.AdsShowReq 54, // 458: w_campaignpb.WCampaign.CampaignSelect:input_type -> w_campaignpb.CampaignSelectReq 56, // 459: w_campaignpb.WCampaign.RewardDetail:input_type -> w_campaignpb.RewardDetailReq 58, // 460: w_campaignpb.WCampaign.UpdateStock:input_type -> w_campaignpb.UpdateStockReq 60, // 461: w_campaignpb.WCampaign.CampaignTz:input_type -> w_campaignpb.CampaignTzReq 62, // 462: w_campaignpb.WCampaign.CampaignRewardType:input_type -> w_campaignpb.CampaignRewardTypeReq 64, // 463: w_campaignpb.WCampaign.ChildList:input_type -> w_campaignpb.ChildListReq 66, // 464: w_campaignpb.WCampaign.ChildStore:input_type -> w_campaignpb.ChildStoreReq 68, // 465: w_campaignpb.WCampaign.ChildUpdate:input_type -> w_campaignpb.ChildUpdateReq 70, // 466: w_campaignpb.WCampaign.ChildShow:input_type -> w_campaignpb.ChildShowReq 72, // 467: w_campaignpb.WCampaign.TaskCenterJump:input_type -> w_campaignpb.TaskCenterJumpReq 74, // 468: w_campaignpb.WCampaign.CondList:input_type -> w_campaignpb.CondListReq 76, // 469: w_campaignpb.WCampaign.Campaigns:input_type -> w_campaignpb.CampaignsReq 78, // 470: w_campaignpb.WCampaign.SetLvApi:input_type -> w_campaignpb.SetLvApiReq 80, // 471: w_campaignpb.WCampaign.GetLvApi:input_type -> w_campaignpb.GetLvApiReq 82, // 472: w_campaignpb.WCampaign.VsSettlement:input_type -> w_campaignpb.VsSettlementReq 84, // 473: w_campaignpb.WCampaign.VsSettlementInfo:input_type -> w_campaignpb.VsSettlementInfoReq 86, // 474: w_campaignpb.WCampaign.ActionList:input_type -> w_campaignpb.ActionListReq 1, // 475: w_campaignpb.WCampaign.List:output_type -> w_campaignpb.ListRes 3, // 476: w_campaignpb.WCampaign.Share:output_type -> w_campaignpb.ShareRes 5, // 477: w_campaignpb.WCampaign.Status:output_type -> w_campaignpb.StatusRes 7, // 478: w_campaignpb.WCampaign.Destroy:output_type -> w_campaignpb.DestroyRes 9, // 479: w_campaignpb.WCampaign.Store:output_type -> w_campaignpb.StoreRes 11, // 480: w_campaignpb.WCampaign.Update:output_type -> w_campaignpb.UpdateRes 13, // 481: w_campaignpb.WCampaign.Show:output_type -> w_campaignpb.ShowRes 15, // 482: w_campaignpb.WCampaign.ChannelList:output_type -> w_campaignpb.ChannelListRes 17, // 483: w_campaignpb.WCampaign.ChannelCreate:output_type -> w_campaignpb.ChannelCreateRes 19, // 484: w_campaignpb.WCampaign.ChannelUpdate:output_type -> w_campaignpb.ChannelUpdateRes 21, // 485: w_campaignpb.WCampaign.ChannelDestroy:output_type -> w_campaignpb.ChannelDestroyRes 23, // 486: w_campaignpb.WCampaign.KvData:output_type -> w_campaignpb.KvDataRes 25, // 487: w_campaignpb.WCampaign.Cert:output_type -> w_campaignpb.CertRes 27, // 488: w_campaignpb.WCampaign.Barrage:output_type -> w_campaignpb.BarrageRes 29, // 489: w_campaignpb.WCampaign.Option:output_type -> w_campaignpb.OptionRes 31, // 490: w_campaignpb.WCampaign.RelateDdl:output_type -> w_campaignpb.RelateDdlRes 33, // 491: w_campaignpb.WCampaign.DdlCampaign:output_type -> w_campaignpb.DdlCampaignRes 35, // 492: w_campaignpb.WCampaign.Langs:output_type -> w_campaignpb.LangsRes 37, // 493: w_campaignpb.WCampaign.Lang:output_type -> w_campaignpb.LangRes 39, // 494: w_campaignpb.WCampaign.SaveLang:output_type -> w_campaignpb.SaveLangRes 41, // 495: w_campaignpb.WCampaign.DestroyLang:output_type -> w_campaignpb.DestroyLangRes 43, // 496: w_campaignpb.WCampaign.LangSelect:output_type -> w_campaignpb.LangSelectRes 45, // 497: w_campaignpb.WCampaign.CampaignInfo:output_type -> w_campaignpb.CampaignInfoRes 47, // 498: w_campaignpb.WCampaign.ShowReward:output_type -> w_campaignpb.ShowRewardRes 49, // 499: w_campaignpb.WCampaign.AdsStore:output_type -> w_campaignpb.AdsStoreRes 51, // 500: w_campaignpb.WCampaign.AdsUpdate:output_type -> w_campaignpb.AdsUpdateRes 53, // 501: w_campaignpb.WCampaign.AdsShow:output_type -> w_campaignpb.AdsShowRes 55, // 502: w_campaignpb.WCampaign.CampaignSelect:output_type -> w_campaignpb.CampaignSelectRes 57, // 503: w_campaignpb.WCampaign.RewardDetail:output_type -> w_campaignpb.RewardDetailRes 59, // 504: w_campaignpb.WCampaign.UpdateStock:output_type -> w_campaignpb.UpdateStockRes 61, // 505: w_campaignpb.WCampaign.CampaignTz:output_type -> w_campaignpb.CampaignTzRes 63, // 506: w_campaignpb.WCampaign.CampaignRewardType:output_type -> w_campaignpb.CampaignRewardTypeRes 65, // 507: w_campaignpb.WCampaign.ChildList:output_type -> w_campaignpb.ChildListRes 67, // 508: w_campaignpb.WCampaign.ChildStore:output_type -> w_campaignpb.ChildStoreRes 69, // 509: w_campaignpb.WCampaign.ChildUpdate:output_type -> w_campaignpb.ChildUpdateRes 71, // 510: w_campaignpb.WCampaign.ChildShow:output_type -> w_campaignpb.ChildShowRes 73, // 511: w_campaignpb.WCampaign.TaskCenterJump:output_type -> w_campaignpb.TaskCenterJumpRes 75, // 512: w_campaignpb.WCampaign.CondList:output_type -> w_campaignpb.CondListRes 77, // 513: w_campaignpb.WCampaign.Campaigns:output_type -> w_campaignpb.CampaignsRes 79, // 514: w_campaignpb.WCampaign.SetLvApi:output_type -> w_campaignpb.SetLvApiRes 81, // 515: w_campaignpb.WCampaign.GetLvApi:output_type -> w_campaignpb.GetLvApiRes 83, // 516: w_campaignpb.WCampaign.VsSettlement:output_type -> w_campaignpb.VsSettlementRes 85, // 517: w_campaignpb.WCampaign.VsSettlementInfo:output_type -> w_campaignpb.VsSettlementInfoRes 87, // 518: w_campaignpb.WCampaign.ActionList:output_type -> w_campaignpb.ActionListRes 475, // [475:519] is the sub-list for method output_type 431, // [431:475] is the sub-list for method input_type 431, // [431:431] is the sub-list for extension type_name 431, // [431:431] is the sub-list for extension extendee 0, // [0:431] is the sub-list for field type_name } func init() { file_w_campaign_proto_init() } func file_w_campaign_proto_init() { if File_w_campaign_proto != nil { return } if !protoimpl.UnsafeEnabled { file_w_campaign_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShareReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShareRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatusReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatusRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelListRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelCreateReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelCreateRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelUpdateReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelUpdateRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelDestroyReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelDestroyRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KvDataReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KvDataRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CertReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CertRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BarrageReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BarrageRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OptionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OptionRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RelateDdlReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RelateDdlRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DdlCampaignReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DdlCampaignRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyLangReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyLangRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangSelectReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangSelectRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignInfoRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRewardReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRewardRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsStoreReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsStoreRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsUpdateReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsUpdateRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsShowReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsShowRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignSelectReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignSelectRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateStockReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateStockRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignTzReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignTzRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignRewardTypeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignRewardTypeRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildListRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildStoreReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildStoreRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildUpdateReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildUpdateRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskCenterJumpReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskCenterJumpRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CondListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CondListRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignsRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetLvApiReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetLvApiRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLvApiReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLvApiRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementInfoRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionListReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionListRes); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRes_LangTz); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRes_Channel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShareRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_GashaponStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Event); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_EventOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_EventReward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_UnoGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_UnoLimitRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Vs); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Chat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_PointsUse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_FlipStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_GridStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_WheelStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Child); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Config); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Target); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_BothAll); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_NormalData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_TargetOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Fixed); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Custom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_RewardTask); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_OpenAdd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_CollectRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Rewards); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_UserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_UserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Lang); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_LangUserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Country); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_CountryOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_QaQuestion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_QaOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_QuizOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Quiz); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_QuestionAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_LotteryConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_InviteConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Sign); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Dice); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_MapPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Grow); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_GrowStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Ballot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Chop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Keep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Invite); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_KeepStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Push); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_PushOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_PushCond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreReq_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_GashaponStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Event); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_EventOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_EventReward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_UnoGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_UnoLimitRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Vs); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Chat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_PointsUse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_FlipStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_GridStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_WheelStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Child); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Config); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Target); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_BothAll); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_NormalData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_TargetOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Fixed); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Custom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_RewardTask); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_OpenAdd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_CollectRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Rewards); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_UserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_UserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Lang); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_LangUserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Country); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_CountryOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_QaQuestion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_QaOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_QuizOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Quiz); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_QuestionAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_LotteryConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_InviteConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Sign); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Dice); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_MapPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Grow); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_GrowStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Ballot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Chop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Keep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Invite); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_KeepStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Push); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_PushOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_PushCond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateReq_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_GashaponStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Event); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_EventOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_EventReward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_UnoGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_UnoLimitRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Vs); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Chat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_PointsUse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_FlipStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_GridStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_WheelStyle); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Child); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Share); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Config); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Target); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_BothAll); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_NormalData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_TargetOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Fixed); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Custom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_WebReward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_RewardTask); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_OpenAdd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_CollectRule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Rewards); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_UserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_UserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Lang); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_LangUserLevel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Country); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_CountryOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_QaQuestion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_QaOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_QuizOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Quiz); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_QuestionAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_LotteryConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_InviteConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Sign); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Dice); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_MapPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Grow); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_GrowStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Ballot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Chop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_SpinCash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Keep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Invite); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_KeepStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Push); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_PushOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_PushCond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRes_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelListRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KvDataRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BarrageRes_TranContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BarrageRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OptionRes_Option); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Lang); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_QaGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Rewards); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_UserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_CountryOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Quit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Option); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Question); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangsRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_QaGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Quit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Option); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Question); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangRes_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Uno); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Talk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_QaGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Cash); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Gold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Coin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Quit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Option); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Question); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_LongImg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SaveLangReq_HotZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LangSelectRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRewardRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowRewardRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsStoreReq_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsStoreReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsStoreReq_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsUpdateReq_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsUpdateReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsUpdateReq_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsShowRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsShowRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdsShowRes_Flip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignSelectRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_UnoCard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_Vote); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_Pool); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_UserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_LangOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_LangUserLevelOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardDetailRes_CountryOne); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignTzRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignRewardTypeRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildListRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildStoreReq_TaskGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildStoreReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildStoreReq_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildUpdateReq_TaskGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildUpdateReq_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildUpdateReq_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowRes_TaskGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowRes_Reward); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChildShowRes_KV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskCenterJumpRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CondListRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CondListRes_Cond); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CampaignsRes_One); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementReq_Score); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementRes_PkTeam); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_w_campaign_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VsSettlementInfoRes_Team); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_w_campaign_proto_rawDesc, NumEnums: 0, NumMessages: 393, NumExtensions: 0, NumServices: 1, }, GoTypes: file_w_campaign_proto_goTypes, DependencyIndexes: file_w_campaign_proto_depIdxs, MessageInfos: file_w_campaign_proto_msgTypes, }.Build() File_w_campaign_proto = out.File file_w_campaign_proto_rawDesc = nil file_w_campaign_proto_goTypes = nil file_w_campaign_proto_depIdxs = nil }