// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 // protoc v7.35.0 // source: proto/game/v1/game.proto package gamev1 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) ) // RequestMeta 是 game-service 内部 RPC 的最小追踪和租户上下文。 type RequestMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` Caller string `protobuf:"bytes,2,opt,name=caller,proto3" json:"caller,omitempty"` GatewayNodeId string `protobuf:"bytes,3,opt,name=gateway_node_id,json=gatewayNodeId,proto3" json:"gateway_node_id,omitempty"` ActorUserId int64 `protobuf:"varint,4,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"` SentAtMs int64 `protobuf:"varint,5,opt,name=sent_at_ms,json=sentAtMs,proto3" json:"sent_at_ms,omitempty"` AppCode string `protobuf:"bytes,6,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` } func (x *RequestMeta) Reset() { *x = RequestMeta{} mi := &file_proto_game_v1_game_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RequestMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*RequestMeta) ProtoMessage() {} func (x *RequestMeta) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RequestMeta.ProtoReflect.Descriptor instead. func (*RequestMeta) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{0} } func (x *RequestMeta) GetRequestId() string { if x != nil { return x.RequestId } return "" } func (x *RequestMeta) GetCaller() string { if x != nil { return x.Caller } return "" } func (x *RequestMeta) GetGatewayNodeId() string { if x != nil { return x.GatewayNodeId } return "" } func (x *RequestMeta) GetActorUserId() int64 { if x != nil { return x.ActorUserId } return 0 } func (x *RequestMeta) GetSentAtMs() int64 { if x != nil { return x.SentAtMs } return 0 } func (x *RequestMeta) GetAppCode() string { if x != nil { return x.AppCode } return "" } type GamePlatform struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` PlatformCode string `protobuf:"bytes,2,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` PlatformName string `protobuf:"bytes,3,opt,name=platform_name,json=platformName,proto3" json:"platform_name,omitempty"` Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` ApiBaseUrl string `protobuf:"bytes,5,opt,name=api_base_url,json=apiBaseUrl,proto3" json:"api_base_url,omitempty"` SortOrder int32 `protobuf:"varint,6,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` CreatedAtMs int64 `protobuf:"varint,7,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,8,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` AdapterType string `protobuf:"bytes,9,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"` // callback_secret is visible to admin platform configuration pages and writable for key rotation. CallbackSecret string `protobuf:"bytes,10,opt,name=callback_secret,json=callbackSecret,proto3" json:"callback_secret,omitempty"` CallbackSecretSet bool `protobuf:"varint,11,opt,name=callback_secret_set,json=callbackSecretSet,proto3" json:"callback_secret_set,omitempty"` CallbackIpWhitelist []string `protobuf:"bytes,12,rep,name=callback_ip_whitelist,json=callbackIpWhitelist,proto3" json:"callback_ip_whitelist,omitempty"` AdapterConfigJson string `protobuf:"bytes,13,opt,name=adapter_config_json,json=adapterConfigJson,proto3" json:"adapter_config_json,omitempty"` } func (x *GamePlatform) Reset() { *x = GamePlatform{} mi := &file_proto_game_v1_game_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GamePlatform) String() string { return protoimpl.X.MessageStringOf(x) } func (*GamePlatform) ProtoMessage() {} func (x *GamePlatform) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GamePlatform.ProtoReflect.Descriptor instead. func (*GamePlatform) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{1} } func (x *GamePlatform) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *GamePlatform) GetPlatformCode() string { if x != nil { return x.PlatformCode } return "" } func (x *GamePlatform) GetPlatformName() string { if x != nil { return x.PlatformName } return "" } func (x *GamePlatform) GetStatus() string { if x != nil { return x.Status } return "" } func (x *GamePlatform) GetApiBaseUrl() string { if x != nil { return x.ApiBaseUrl } return "" } func (x *GamePlatform) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } func (x *GamePlatform) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *GamePlatform) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *GamePlatform) GetAdapterType() string { if x != nil { return x.AdapterType } return "" } func (x *GamePlatform) GetCallbackSecret() string { if x != nil { return x.CallbackSecret } return "" } func (x *GamePlatform) GetCallbackSecretSet() bool { if x != nil { return x.CallbackSecretSet } return false } func (x *GamePlatform) GetCallbackIpWhitelist() []string { if x != nil { return x.CallbackIpWhitelist } return nil } func (x *GamePlatform) GetAdapterConfigJson() string { if x != nil { return x.AdapterConfigJson } return "" } type GameCatalogItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` PlatformCode string `protobuf:"bytes,3,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` ProviderGameId string `protobuf:"bytes,4,opt,name=provider_game_id,json=providerGameId,proto3" json:"provider_game_id,omitempty"` GameName string `protobuf:"bytes,5,opt,name=game_name,json=gameName,proto3" json:"game_name,omitempty"` Category string `protobuf:"bytes,6,opt,name=category,proto3" json:"category,omitempty"` IconUrl string `protobuf:"bytes,7,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"` CoverUrl string `protobuf:"bytes,8,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` LaunchMode string `protobuf:"bytes,9,opt,name=launch_mode,json=launchMode,proto3" json:"launch_mode,omitempty"` Orientation string `protobuf:"bytes,10,opt,name=orientation,proto3" json:"orientation,omitempty"` MinCoin int64 `protobuf:"varint,11,opt,name=min_coin,json=minCoin,proto3" json:"min_coin,omitempty"` Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status,omitempty"` SortOrder int32 `protobuf:"varint,13,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` Tags []string `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` CreatedAtMs int64 `protobuf:"varint,15,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,16,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` SafeHeight int32 `protobuf:"varint,17,opt,name=safe_height,json=safeHeight,proto3" json:"safe_height,omitempty"` } func (x *GameCatalogItem) Reset() { *x = GameCatalogItem{} mi := &file_proto_game_v1_game_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameCatalogItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameCatalogItem) ProtoMessage() {} func (x *GameCatalogItem) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameCatalogItem.ProtoReflect.Descriptor instead. func (*GameCatalogItem) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{2} } func (x *GameCatalogItem) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *GameCatalogItem) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *GameCatalogItem) GetPlatformCode() string { if x != nil { return x.PlatformCode } return "" } func (x *GameCatalogItem) GetProviderGameId() string { if x != nil { return x.ProviderGameId } return "" } func (x *GameCatalogItem) GetGameName() string { if x != nil { return x.GameName } return "" } func (x *GameCatalogItem) GetCategory() string { if x != nil { return x.Category } return "" } func (x *GameCatalogItem) GetIconUrl() string { if x != nil { return x.IconUrl } return "" } func (x *GameCatalogItem) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *GameCatalogItem) GetLaunchMode() string { if x != nil { return x.LaunchMode } return "" } func (x *GameCatalogItem) GetOrientation() string { if x != nil { return x.Orientation } return "" } func (x *GameCatalogItem) GetMinCoin() int64 { if x != nil { return x.MinCoin } return 0 } func (x *GameCatalogItem) GetStatus() string { if x != nil { return x.Status } return "" } func (x *GameCatalogItem) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } func (x *GameCatalogItem) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *GameCatalogItem) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *GameCatalogItem) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *GameCatalogItem) GetSafeHeight() int32 { if x != nil { return x.SafeHeight } return 0 } type AppGame struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GameId string `protobuf:"bytes,1,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` PlatformCode string `protobuf:"bytes,2,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` NameKey string `protobuf:"bytes,3,opt,name=name_key,json=nameKey,proto3" json:"name_key,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` IconUrl string `protobuf:"bytes,5,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"` CoverUrl string `protobuf:"bytes,6,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` Category string `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"` LaunchMode string `protobuf:"bytes,8,opt,name=launch_mode,json=launchMode,proto3" json:"launch_mode,omitempty"` Orientation string `protobuf:"bytes,9,opt,name=orientation,proto3" json:"orientation,omitempty"` MinCoin int64 `protobuf:"varint,10,opt,name=min_coin,json=minCoin,proto3" json:"min_coin,omitempty"` Enabled bool `protobuf:"varint,11,opt,name=enabled,proto3" json:"enabled,omitempty"` Maintenance bool `protobuf:"varint,12,opt,name=maintenance,proto3" json:"maintenance,omitempty"` SortOrder int32 `protobuf:"varint,13,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` SafeHeight int32 `protobuf:"varint,14,opt,name=safe_height,json=safeHeight,proto3" json:"safe_height,omitempty"` } func (x *AppGame) Reset() { *x = AppGame{} mi := &file_proto_game_v1_game_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AppGame) String() string { return protoimpl.X.MessageStringOf(x) } func (*AppGame) ProtoMessage() {} func (x *AppGame) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AppGame.ProtoReflect.Descriptor instead. func (*AppGame) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{3} } func (x *AppGame) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *AppGame) GetPlatformCode() string { if x != nil { return x.PlatformCode } return "" } func (x *AppGame) GetNameKey() string { if x != nil { return x.NameKey } return "" } func (x *AppGame) GetName() string { if x != nil { return x.Name } return "" } func (x *AppGame) GetIconUrl() string { if x != nil { return x.IconUrl } return "" } func (x *AppGame) GetCoverUrl() string { if x != nil { return x.CoverUrl } return "" } func (x *AppGame) GetCategory() string { if x != nil { return x.Category } return "" } func (x *AppGame) GetLaunchMode() string { if x != nil { return x.LaunchMode } return "" } func (x *AppGame) GetOrientation() string { if x != nil { return x.Orientation } return "" } func (x *AppGame) GetMinCoin() int64 { if x != nil { return x.MinCoin } return 0 } func (x *AppGame) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *AppGame) GetMaintenance() bool { if x != nil { return x.Maintenance } return false } func (x *AppGame) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } func (x *AppGame) GetSafeHeight() int32 { if x != nil { return x.SafeHeight } return 0 } type ListGamesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Scene string `protobuf:"bytes,3,opt,name=scene,proto3" json:"scene,omitempty"` RoomId string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` Language string `protobuf:"bytes,6,opt,name=language,proto3" json:"language,omitempty"` ClientPlatform string `protobuf:"bytes,7,opt,name=client_platform,json=clientPlatform,proto3" json:"client_platform,omitempty"` } func (x *ListGamesRequest) Reset() { *x = ListGamesRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListGamesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListGamesRequest) ProtoMessage() {} func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListGamesRequest.ProtoReflect.Descriptor instead. func (*ListGamesRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{4} } func (x *ListGamesRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListGamesRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ListGamesRequest) GetScene() string { if x != nil { return x.Scene } return "" } func (x *ListGamesRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *ListGamesRequest) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *ListGamesRequest) GetLanguage() string { if x != nil { return x.Language } return "" } func (x *ListGamesRequest) GetClientPlatform() string { if x != nil { return x.ClientPlatform } return "" } type ListGamesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Games []*AppGame `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListGamesResponse) Reset() { *x = ListGamesResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListGamesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListGamesResponse) ProtoMessage() {} func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListGamesResponse.ProtoReflect.Descriptor instead. func (*ListGamesResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{5} } func (x *ListGamesResponse) GetGames() []*AppGame { if x != nil { return x.Games } return nil } func (x *ListGamesResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type ListRecentGamesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Scene string `protobuf:"bytes,3,opt,name=scene,proto3" json:"scene,omitempty"` RoomId string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` Language string `protobuf:"bytes,6,opt,name=language,proto3" json:"language,omitempty"` ClientPlatform string `protobuf:"bytes,7,opt,name=client_platform,json=clientPlatform,proto3" json:"client_platform,omitempty"` PageSize int32 `protobuf:"varint,8,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } func (x *ListRecentGamesRequest) Reset() { *x = ListRecentGamesRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListRecentGamesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRecentGamesRequest) ProtoMessage() {} func (x *ListRecentGamesRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRecentGamesRequest.ProtoReflect.Descriptor instead. func (*ListRecentGamesRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{6} } func (x *ListRecentGamesRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListRecentGamesRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ListRecentGamesRequest) GetScene() string { if x != nil { return x.Scene } return "" } func (x *ListRecentGamesRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *ListRecentGamesRequest) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *ListRecentGamesRequest) GetLanguage() string { if x != nil { return x.Language } return "" } func (x *ListRecentGamesRequest) GetClientPlatform() string { if x != nil { return x.ClientPlatform } return "" } func (x *ListRecentGamesRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } type ListExploreWinnersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } func (x *ListExploreWinnersRequest) Reset() { *x = ListExploreWinnersRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListExploreWinnersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListExploreWinnersRequest) ProtoMessage() {} func (x *ListExploreWinnersRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListExploreWinnersRequest.ProtoReflect.Descriptor instead. func (*ListExploreWinnersRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{7} } func (x *ListExploreWinnersRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListExploreWinnersRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } type ExploreWinner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WinId string `protobuf:"bytes,1,opt,name=win_id,json=winId,proto3" json:"win_id,omitempty"` GameCode string `protobuf:"bytes,2,opt,name=game_code,json=gameCode,proto3" json:"game_code,omitempty"` GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` UserId int64 `protobuf:"varint,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` AvatarUrl string `protobuf:"bytes,6,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` CoinAmount int64 `protobuf:"varint,7,opt,name=coin_amount,json=coinAmount,proto3" json:"coin_amount,omitempty"` WonAtMs int64 `protobuf:"varint,8,opt,name=won_at_ms,json=wonAtMs,proto3" json:"won_at_ms,omitempty"` } func (x *ExploreWinner) Reset() { *x = ExploreWinner{} mi := &file_proto_game_v1_game_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExploreWinner) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExploreWinner) ProtoMessage() {} func (x *ExploreWinner) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExploreWinner.ProtoReflect.Descriptor instead. func (*ExploreWinner) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{8} } func (x *ExploreWinner) GetWinId() string { if x != nil { return x.WinId } return "" } func (x *ExploreWinner) GetGameCode() string { if x != nil { return x.GameCode } return "" } func (x *ExploreWinner) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *ExploreWinner) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ExploreWinner) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *ExploreWinner) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *ExploreWinner) GetCoinAmount() int64 { if x != nil { return x.CoinAmount } return 0 } func (x *ExploreWinner) GetWonAtMs() int64 { if x != nil { return x.WonAtMs } return 0 } type ListExploreWinnersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Winners []*ExploreWinner `protobuf:"bytes,1,rep,name=winners,proto3" json:"winners,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListExploreWinnersResponse) Reset() { *x = ListExploreWinnersResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListExploreWinnersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListExploreWinnersResponse) ProtoMessage() {} func (x *ListExploreWinnersResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListExploreWinnersResponse.ProtoReflect.Descriptor instead. func (*ListExploreWinnersResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{9} } func (x *ListExploreWinnersResponse) GetWinners() []*ExploreWinner { if x != nil { return x.Winners } return nil } func (x *ListExploreWinnersResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type GetBridgeScriptRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` } func (x *GetBridgeScriptRequest) Reset() { *x = GetBridgeScriptRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetBridgeScriptRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBridgeScriptRequest) ProtoMessage() {} func (x *GetBridgeScriptRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetBridgeScriptRequest.ProtoReflect.Descriptor instead. func (*GetBridgeScriptRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{10} } func (x *GetBridgeScriptRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } type GameBridgeScriptConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BridgeScriptUrl string `protobuf:"bytes,1,opt,name=bridge_script_url,json=bridgeScriptUrl,proto3" json:"bridge_script_url,omitempty"` BridgeScriptVersion string `protobuf:"bytes,2,opt,name=bridge_script_version,json=bridgeScriptVersion,proto3" json:"bridge_script_version,omitempty"` BridgeScriptSha256 string `protobuf:"bytes,3,opt,name=bridge_script_sha256,json=bridgeScriptSha256,proto3" json:"bridge_script_sha256,omitempty"` } func (x *GameBridgeScriptConfig) Reset() { *x = GameBridgeScriptConfig{} mi := &file_proto_game_v1_game_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameBridgeScriptConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameBridgeScriptConfig) ProtoMessage() {} func (x *GameBridgeScriptConfig) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameBridgeScriptConfig.ProtoReflect.Descriptor instead. func (*GameBridgeScriptConfig) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{11} } func (x *GameBridgeScriptConfig) GetBridgeScriptUrl() string { if x != nil { return x.BridgeScriptUrl } return "" } func (x *GameBridgeScriptConfig) GetBridgeScriptVersion() string { if x != nil { return x.BridgeScriptVersion } return "" } func (x *GameBridgeScriptConfig) GetBridgeScriptSha256() string { if x != nil { return x.BridgeScriptSha256 } return "" } type GetBridgeScriptResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *GameBridgeScriptConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *GetBridgeScriptResponse) Reset() { *x = GetBridgeScriptResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetBridgeScriptResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBridgeScriptResponse) ProtoMessage() {} func (x *GetBridgeScriptResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetBridgeScriptResponse.ProtoReflect.Descriptor instead. func (*GetBridgeScriptResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{12} } func (x *GetBridgeScriptResponse) GetConfig() *GameBridgeScriptConfig { if x != nil { return x.Config } return nil } func (x *GetBridgeScriptResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type LaunchGameRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` DisplayUserId string `protobuf:"bytes,3,opt,name=display_user_id,json=displayUserId,proto3" json:"display_user_id,omitempty"` GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Scene string `protobuf:"bytes,5,opt,name=scene,proto3" json:"scene,omitempty"` RoomId string `protobuf:"bytes,6,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` // access_token is the same bearer token used by the App request. // Provider adapters pass it through as the game token instead of minting a separate game token. AccessToken string `protobuf:"bytes,7,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` // country_id 由 gateway 从当前用户资料注入,供 provider 回调订单按国家统计。 CountryId int64 `protobuf:"varint,8,opt,name=country_id,json=countryId,proto3" json:"country_id,omitempty"` } func (x *LaunchGameRequest) Reset() { *x = LaunchGameRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LaunchGameRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*LaunchGameRequest) ProtoMessage() {} func (x *LaunchGameRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LaunchGameRequest.ProtoReflect.Descriptor instead. func (*LaunchGameRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{13} } func (x *LaunchGameRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *LaunchGameRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *LaunchGameRequest) GetDisplayUserId() string { if x != nil { return x.DisplayUserId } return "" } func (x *LaunchGameRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *LaunchGameRequest) GetScene() string { if x != nil { return x.Scene } return "" } func (x *LaunchGameRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *LaunchGameRequest) GetAccessToken() string { if x != nil { return x.AccessToken } return "" } func (x *LaunchGameRequest) GetCountryId() int64 { if x != nil { return x.CountryId } return 0 } type LaunchGameResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` LaunchUrl string `protobuf:"bytes,2,opt,name=launch_url,json=launchUrl,proto3" json:"launch_url,omitempty"` ExpiresAtMs int64 `protobuf:"varint,3,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"` Orientation string `protobuf:"bytes,4,opt,name=orientation,proto3" json:"orientation,omitempty"` ServerTimeMs int64 `protobuf:"varint,5,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` SafeHeight int32 `protobuf:"varint,6,opt,name=safe_height,json=safeHeight,proto3" json:"safe_height,omitempty"` } func (x *LaunchGameResponse) Reset() { *x = LaunchGameResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LaunchGameResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*LaunchGameResponse) ProtoMessage() {} func (x *LaunchGameResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LaunchGameResponse.ProtoReflect.Descriptor instead. func (*LaunchGameResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{14} } func (x *LaunchGameResponse) GetSessionId() string { if x != nil { return x.SessionId } return "" } func (x *LaunchGameResponse) GetLaunchUrl() string { if x != nil { return x.LaunchUrl } return "" } func (x *LaunchGameResponse) GetExpiresAtMs() int64 { if x != nil { return x.ExpiresAtMs } return 0 } func (x *LaunchGameResponse) GetOrientation() string { if x != nil { return x.Orientation } return "" } func (x *LaunchGameResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } func (x *LaunchGameResponse) GetSafeHeight() int32 { if x != nil { return x.SafeHeight } return 0 } type DiceParticipant struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` SeatNo int32 `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` StakeCoin int64 `protobuf:"varint,4,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` DicePoints []int32 `protobuf:"varint,5,rep,packed,name=dice_points,json=dicePoints,proto3" json:"dice_points,omitempty"` Result string `protobuf:"bytes,6,opt,name=result,proto3" json:"result,omitempty"` PayoutCoin int64 `protobuf:"varint,7,opt,name=payout_coin,json=payoutCoin,proto3" json:"payout_coin,omitempty"` BalanceAfter int64 `protobuf:"varint,8,opt,name=balance_after,json=balanceAfter,proto3" json:"balance_after,omitempty"` JoinedAtMs int64 `protobuf:"varint,9,opt,name=joined_at_ms,json=joinedAtMs,proto3" json:"joined_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,10,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` ParticipantType string `protobuf:"bytes,11,opt,name=participant_type,json=participantType,proto3" json:"participant_type,omitempty"` IsRobot bool `protobuf:"varint,12,opt,name=is_robot,json=isRobot,proto3" json:"is_robot,omitempty"` RpsGesture string `protobuf:"bytes,13,opt,name=rps_gesture,json=rpsGesture,proto3" json:"rps_gesture,omitempty"` } func (x *DiceParticipant) Reset() { *x = DiceParticipant{} mi := &file_proto_game_v1_game_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceParticipant) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceParticipant) ProtoMessage() {} func (x *DiceParticipant) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceParticipant.ProtoReflect.Descriptor instead. func (*DiceParticipant) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{15} } func (x *DiceParticipant) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *DiceParticipant) GetSeatNo() int32 { if x != nil { return x.SeatNo } return 0 } func (x *DiceParticipant) GetStatus() string { if x != nil { return x.Status } return "" } func (x *DiceParticipant) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *DiceParticipant) GetDicePoints() []int32 { if x != nil { return x.DicePoints } return nil } func (x *DiceParticipant) GetResult() string { if x != nil { return x.Result } return "" } func (x *DiceParticipant) GetPayoutCoin() int64 { if x != nil { return x.PayoutCoin } return 0 } func (x *DiceParticipant) GetBalanceAfter() int64 { if x != nil { return x.BalanceAfter } return 0 } func (x *DiceParticipant) GetJoinedAtMs() int64 { if x != nil { return x.JoinedAtMs } return 0 } func (x *DiceParticipant) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *DiceParticipant) GetParticipantType() string { if x != nil { return x.ParticipantType } return "" } func (x *DiceParticipant) GetIsRobot() bool { if x != nil { return x.IsRobot } return false } func (x *DiceParticipant) GetRpsGesture() string { if x != nil { return x.RpsGesture } return "" } type DiceMatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` MatchId string `protobuf:"bytes,2,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` RoomId string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` MinPlayers int32 `protobuf:"varint,6,opt,name=min_players,json=minPlayers,proto3" json:"min_players,omitempty"` MaxPlayers int32 `protobuf:"varint,7,opt,name=max_players,json=maxPlayers,proto3" json:"max_players,omitempty"` CurrentPlayers int32 `protobuf:"varint,8,opt,name=current_players,json=currentPlayers,proto3" json:"current_players,omitempty"` StakeCoin int64 `protobuf:"varint,9,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` RoundNo int32 `protobuf:"varint,10,opt,name=round_no,json=roundNo,proto3" json:"round_no,omitempty"` Status string `protobuf:"bytes,11,opt,name=status,proto3" json:"status,omitempty"` Result string `protobuf:"bytes,12,opt,name=result,proto3" json:"result,omitempty"` Participants []*DiceParticipant `protobuf:"bytes,13,rep,name=participants,proto3" json:"participants,omitempty"` JoinDeadlineMs int64 `protobuf:"varint,14,opt,name=join_deadline_ms,json=joinDeadlineMs,proto3" json:"join_deadline_ms,omitempty"` CreatedAtMs int64 `protobuf:"varint,15,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,16,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` SettledAtMs int64 `protobuf:"varint,17,opt,name=settled_at_ms,json=settledAtMs,proto3" json:"settled_at_ms,omitempty"` Phase string `protobuf:"bytes,18,opt,name=phase,proto3" json:"phase,omitempty"` PhaseDeadlineMs int64 `protobuf:"varint,19,opt,name=phase_deadline_ms,json=phaseDeadlineMs,proto3" json:"phase_deadline_ms,omitempty"` FeeBps int32 `protobuf:"varint,20,opt,name=fee_bps,json=feeBps,proto3" json:"fee_bps,omitempty"` PoolBps int32 `protobuf:"varint,21,opt,name=pool_bps,json=poolBps,proto3" json:"pool_bps,omitempty"` MatchMode string `protobuf:"bytes,22,opt,name=match_mode,json=matchMode,proto3" json:"match_mode,omitempty"` ForcedResult string `protobuf:"bytes,23,opt,name=forced_result,json=forcedResult,proto3" json:"forced_result,omitempty"` ReadyAtMs int64 `protobuf:"varint,24,opt,name=ready_at_ms,json=readyAtMs,proto3" json:"ready_at_ms,omitempty"` CanceledAtMs int64 `protobuf:"varint,25,opt,name=canceled_at_ms,json=canceledAtMs,proto3" json:"canceled_at_ms,omitempty"` PoolDeltaCoin int64 `protobuf:"varint,26,opt,name=pool_delta_coin,json=poolDeltaCoin,proto3" json:"pool_delta_coin,omitempty"` // country_id 是创建局用户的国家快照,用于局级订单和统计事件按国家归因。 CountryId int64 `protobuf:"varint,27,opt,name=country_id,json=countryId,proto3" json:"country_id,omitempty"` } func (x *DiceMatch) Reset() { *x = DiceMatch{} mi := &file_proto_game_v1_game_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceMatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceMatch) ProtoMessage() {} func (x *DiceMatch) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceMatch.ProtoReflect.Descriptor instead. func (*DiceMatch) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{16} } func (x *DiceMatch) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *DiceMatch) GetMatchId() string { if x != nil { return x.MatchId } return "" } func (x *DiceMatch) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *DiceMatch) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *DiceMatch) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *DiceMatch) GetMinPlayers() int32 { if x != nil { return x.MinPlayers } return 0 } func (x *DiceMatch) GetMaxPlayers() int32 { if x != nil { return x.MaxPlayers } return 0 } func (x *DiceMatch) GetCurrentPlayers() int32 { if x != nil { return x.CurrentPlayers } return 0 } func (x *DiceMatch) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *DiceMatch) GetRoundNo() int32 { if x != nil { return x.RoundNo } return 0 } func (x *DiceMatch) GetStatus() string { if x != nil { return x.Status } return "" } func (x *DiceMatch) GetResult() string { if x != nil { return x.Result } return "" } func (x *DiceMatch) GetParticipants() []*DiceParticipant { if x != nil { return x.Participants } return nil } func (x *DiceMatch) GetJoinDeadlineMs() int64 { if x != nil { return x.JoinDeadlineMs } return 0 } func (x *DiceMatch) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *DiceMatch) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *DiceMatch) GetSettledAtMs() int64 { if x != nil { return x.SettledAtMs } return 0 } func (x *DiceMatch) GetPhase() string { if x != nil { return x.Phase } return "" } func (x *DiceMatch) GetPhaseDeadlineMs() int64 { if x != nil { return x.PhaseDeadlineMs } return 0 } func (x *DiceMatch) GetFeeBps() int32 { if x != nil { return x.FeeBps } return 0 } func (x *DiceMatch) GetPoolBps() int32 { if x != nil { return x.PoolBps } return 0 } func (x *DiceMatch) GetMatchMode() string { if x != nil { return x.MatchMode } return "" } func (x *DiceMatch) GetForcedResult() string { if x != nil { return x.ForcedResult } return "" } func (x *DiceMatch) GetReadyAtMs() int64 { if x != nil { return x.ReadyAtMs } return 0 } func (x *DiceMatch) GetCanceledAtMs() int64 { if x != nil { return x.CanceledAtMs } return 0 } func (x *DiceMatch) GetPoolDeltaCoin() int64 { if x != nil { return x.PoolDeltaCoin } return 0 } func (x *DiceMatch) GetCountryId() int64 { if x != nil { return x.CountryId } return 0 } type DiceStakeOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StakeCoin int64 `protobuf:"varint,1,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` SortOrder int32 `protobuf:"varint,3,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` } func (x *DiceStakeOption) Reset() { *x = DiceStakeOption{} mi := &file_proto_game_v1_game_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceStakeOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceStakeOption) ProtoMessage() {} func (x *DiceStakeOption) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceStakeOption.ProtoReflect.Descriptor instead. func (*DiceStakeOption) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{17} } func (x *DiceStakeOption) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *DiceStakeOption) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *DiceStakeOption) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } type DiceConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` StakeOptions []*DiceStakeOption `protobuf:"bytes,4,rep,name=stake_options,json=stakeOptions,proto3" json:"stake_options,omitempty"` FeeBps int32 `protobuf:"varint,5,opt,name=fee_bps,json=feeBps,proto3" json:"fee_bps,omitempty"` PoolBps int32 `protobuf:"varint,6,opt,name=pool_bps,json=poolBps,proto3" json:"pool_bps,omitempty"` MinPlayers int32 `protobuf:"varint,7,opt,name=min_players,json=minPlayers,proto3" json:"min_players,omitempty"` MaxPlayers int32 `protobuf:"varint,8,opt,name=max_players,json=maxPlayers,proto3" json:"max_players,omitempty"` RobotEnabled bool `protobuf:"varint,9,opt,name=robot_enabled,json=robotEnabled,proto3" json:"robot_enabled,omitempty"` RobotMatchWaitMs int64 `protobuf:"varint,10,opt,name=robot_match_wait_ms,json=robotMatchWaitMs,proto3" json:"robot_match_wait_ms,omitempty"` PoolBalanceCoin int64 `protobuf:"varint,11,opt,name=pool_balance_coin,json=poolBalanceCoin,proto3" json:"pool_balance_coin,omitempty"` CreatedAtMs int64 `protobuf:"varint,12,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,13,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` } func (x *DiceConfig) Reset() { *x = DiceConfig{} mi := &file_proto_game_v1_game_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceConfig) ProtoMessage() {} func (x *DiceConfig) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceConfig.ProtoReflect.Descriptor instead. func (*DiceConfig) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{18} } func (x *DiceConfig) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *DiceConfig) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *DiceConfig) GetStatus() string { if x != nil { return x.Status } return "" } func (x *DiceConfig) GetStakeOptions() []*DiceStakeOption { if x != nil { return x.StakeOptions } return nil } func (x *DiceConfig) GetFeeBps() int32 { if x != nil { return x.FeeBps } return 0 } func (x *DiceConfig) GetPoolBps() int32 { if x != nil { return x.PoolBps } return 0 } func (x *DiceConfig) GetMinPlayers() int32 { if x != nil { return x.MinPlayers } return 0 } func (x *DiceConfig) GetMaxPlayers() int32 { if x != nil { return x.MaxPlayers } return 0 } func (x *DiceConfig) GetRobotEnabled() bool { if x != nil { return x.RobotEnabled } return false } func (x *DiceConfig) GetRobotMatchWaitMs() int64 { if x != nil { return x.RobotMatchWaitMs } return 0 } func (x *DiceConfig) GetPoolBalanceCoin() int64 { if x != nil { return x.PoolBalanceCoin } return 0 } func (x *DiceConfig) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *DiceConfig) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } type GetDiceConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *GetDiceConfigRequest) Reset() { *x = GetDiceConfigRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetDiceConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetDiceConfigRequest) ProtoMessage() {} func (x *GetDiceConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetDiceConfigRequest.ProtoReflect.Descriptor instead. func (*GetDiceConfigRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{19} } func (x *GetDiceConfigRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *GetDiceConfigRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type DiceConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *DiceConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *DiceConfigResponse) Reset() { *x = DiceConfigResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceConfigResponse) ProtoMessage() {} func (x *DiceConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceConfigResponse.ProtoReflect.Descriptor instead. func (*DiceConfigResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{20} } func (x *DiceConfigResponse) GetConfig() *DiceConfig { if x != nil { return x.Config } return nil } func (x *DiceConfigResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type RoomRPSStakeGift struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GiftId int64 `protobuf:"varint,1,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"` GiftName string `protobuf:"bytes,2,opt,name=gift_name,json=giftName,proto3" json:"gift_name,omitempty"` GiftIconUrl string `protobuf:"bytes,3,opt,name=gift_icon_url,json=giftIconUrl,proto3" json:"gift_icon_url,omitempty"` GiftPriceCoin int64 `protobuf:"varint,4,opt,name=gift_price_coin,json=giftPriceCoin,proto3" json:"gift_price_coin,omitempty"` Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` SortOrder int32 `protobuf:"varint,6,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` GiftIdText string `protobuf:"bytes,7,opt,name=gift_id_text,json=giftIdText,proto3" json:"gift_id_text,omitempty"` GiftAnimationUrl string `protobuf:"bytes,8,opt,name=gift_animation_url,json=giftAnimationUrl,proto3" json:"gift_animation_url,omitempty"` } func (x *RoomRPSStakeGift) Reset() { *x = RoomRPSStakeGift{} mi := &file_proto_game_v1_game_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSStakeGift) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSStakeGift) ProtoMessage() {} func (x *RoomRPSStakeGift) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSStakeGift.ProtoReflect.Descriptor instead. func (*RoomRPSStakeGift) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{21} } func (x *RoomRPSStakeGift) GetGiftId() int64 { if x != nil { return x.GiftId } return 0 } func (x *RoomRPSStakeGift) GetGiftName() string { if x != nil { return x.GiftName } return "" } func (x *RoomRPSStakeGift) GetGiftIconUrl() string { if x != nil { return x.GiftIconUrl } return "" } func (x *RoomRPSStakeGift) GetGiftPriceCoin() int64 { if x != nil { return x.GiftPriceCoin } return 0 } func (x *RoomRPSStakeGift) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *RoomRPSStakeGift) GetSortOrder() int32 { if x != nil { return x.SortOrder } return 0 } func (x *RoomRPSStakeGift) GetGiftIdText() string { if x != nil { return x.GiftIdText } return "" } func (x *RoomRPSStakeGift) GetGiftAnimationUrl() string { if x != nil { return x.GiftAnimationUrl } return "" } type RoomRPSConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` ChallengeTimeoutMs int64 `protobuf:"varint,4,opt,name=challenge_timeout_ms,json=challengeTimeoutMs,proto3" json:"challenge_timeout_ms,omitempty"` RevealCountdownMs int64 `protobuf:"varint,5,opt,name=reveal_countdown_ms,json=revealCountdownMs,proto3" json:"reveal_countdown_ms,omitempty"` StakeGifts []*RoomRPSStakeGift `protobuf:"bytes,6,rep,name=stake_gifts,json=stakeGifts,proto3" json:"stake_gifts,omitempty"` CreatedAtMs int64 `protobuf:"varint,7,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,8,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` } func (x *RoomRPSConfig) Reset() { *x = RoomRPSConfig{} mi := &file_proto_game_v1_game_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSConfig) ProtoMessage() {} func (x *RoomRPSConfig) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSConfig.ProtoReflect.Descriptor instead. func (*RoomRPSConfig) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{22} } func (x *RoomRPSConfig) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *RoomRPSConfig) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *RoomRPSConfig) GetStatus() string { if x != nil { return x.Status } return "" } func (x *RoomRPSConfig) GetChallengeTimeoutMs() int64 { if x != nil { return x.ChallengeTimeoutMs } return 0 } func (x *RoomRPSConfig) GetRevealCountdownMs() int64 { if x != nil { return x.RevealCountdownMs } return 0 } func (x *RoomRPSConfig) GetStakeGifts() []*RoomRPSStakeGift { if x != nil { return x.StakeGifts } return nil } func (x *RoomRPSConfig) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *RoomRPSConfig) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } type RoomRPSPlayer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Gesture string `protobuf:"bytes,2,opt,name=gesture,proto3" json:"gesture,omitempty"` Result string `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` BalanceAfter int64 `protobuf:"varint,4,opt,name=balance_after,json=balanceAfter,proto3" json:"balance_after,omitempty"` JoinedAtMs int64 `protobuf:"varint,5,opt,name=joined_at_ms,json=joinedAtMs,proto3" json:"joined_at_ms,omitempty"` } func (x *RoomRPSPlayer) Reset() { *x = RoomRPSPlayer{} mi := &file_proto_game_v1_game_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSPlayer) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSPlayer) ProtoMessage() {} func (x *RoomRPSPlayer) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSPlayer.ProtoReflect.Descriptor instead. func (*RoomRPSPlayer) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{23} } func (x *RoomRPSPlayer) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *RoomRPSPlayer) GetGesture() string { if x != nil { return x.Gesture } return "" } func (x *RoomRPSPlayer) GetResult() string { if x != nil { return x.Result } return "" } func (x *RoomRPSPlayer) GetBalanceAfter() int64 { if x != nil { return x.BalanceAfter } return 0 } func (x *RoomRPSPlayer) GetJoinedAtMs() int64 { if x != nil { return x.JoinedAtMs } return 0 } type RoomRPSChallenge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` ChallengeId string `protobuf:"bytes,2,opt,name=challenge_id,json=challengeId,proto3" json:"challenge_id,omitempty"` RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,4,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` StakeGiftId int64 `protobuf:"varint,6,opt,name=stake_gift_id,json=stakeGiftId,proto3" json:"stake_gift_id,omitempty"` StakeCoin int64 `protobuf:"varint,7,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` Initiator *RoomRPSPlayer `protobuf:"bytes,8,opt,name=initiator,proto3" json:"initiator,omitempty"` Challenger *RoomRPSPlayer `protobuf:"bytes,9,opt,name=challenger,proto3" json:"challenger,omitempty"` WinnerUserId int64 `protobuf:"varint,10,opt,name=winner_user_id,json=winnerUserId,proto3" json:"winner_user_id,omitempty"` SettlementStatus string `protobuf:"bytes,11,opt,name=settlement_status,json=settlementStatus,proto3" json:"settlement_status,omitempty"` FailureReason string `protobuf:"bytes,12,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"` TimeoutAtMs int64 `protobuf:"varint,13,opt,name=timeout_at_ms,json=timeoutAtMs,proto3" json:"timeout_at_ms,omitempty"` RevealAtMs int64 `protobuf:"varint,14,opt,name=reveal_at_ms,json=revealAtMs,proto3" json:"reveal_at_ms,omitempty"` CreatedAtMs int64 `protobuf:"varint,15,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` MatchedAtMs int64 `protobuf:"varint,16,opt,name=matched_at_ms,json=matchedAtMs,proto3" json:"matched_at_ms,omitempty"` SettledAtMs int64 `protobuf:"varint,17,opt,name=settled_at_ms,json=settledAtMs,proto3" json:"settled_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,18,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` StakeGiftIdText string `protobuf:"bytes,19,opt,name=stake_gift_id_text,json=stakeGiftIdText,proto3" json:"stake_gift_id_text,omitempty"` } func (x *RoomRPSChallenge) Reset() { *x = RoomRPSChallenge{} mi := &file_proto_game_v1_game_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSChallenge) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSChallenge) ProtoMessage() {} func (x *RoomRPSChallenge) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSChallenge.ProtoReflect.Descriptor instead. func (*RoomRPSChallenge) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{24} } func (x *RoomRPSChallenge) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *RoomRPSChallenge) GetChallengeId() string { if x != nil { return x.ChallengeId } return "" } func (x *RoomRPSChallenge) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *RoomRPSChallenge) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *RoomRPSChallenge) GetStatus() string { if x != nil { return x.Status } return "" } func (x *RoomRPSChallenge) GetStakeGiftId() int64 { if x != nil { return x.StakeGiftId } return 0 } func (x *RoomRPSChallenge) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *RoomRPSChallenge) GetInitiator() *RoomRPSPlayer { if x != nil { return x.Initiator } return nil } func (x *RoomRPSChallenge) GetChallenger() *RoomRPSPlayer { if x != nil { return x.Challenger } return nil } func (x *RoomRPSChallenge) GetWinnerUserId() int64 { if x != nil { return x.WinnerUserId } return 0 } func (x *RoomRPSChallenge) GetSettlementStatus() string { if x != nil { return x.SettlementStatus } return "" } func (x *RoomRPSChallenge) GetFailureReason() string { if x != nil { return x.FailureReason } return "" } func (x *RoomRPSChallenge) GetTimeoutAtMs() int64 { if x != nil { return x.TimeoutAtMs } return 0 } func (x *RoomRPSChallenge) GetRevealAtMs() int64 { if x != nil { return x.RevealAtMs } return 0 } func (x *RoomRPSChallenge) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *RoomRPSChallenge) GetMatchedAtMs() int64 { if x != nil { return x.MatchedAtMs } return 0 } func (x *RoomRPSChallenge) GetSettledAtMs() int64 { if x != nil { return x.SettledAtMs } return 0 } func (x *RoomRPSChallenge) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *RoomRPSChallenge) GetStakeGiftIdText() string { if x != nil { return x.StakeGiftIdText } return "" } type GetRoomRPSConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` } func (x *GetRoomRPSConfigRequest) Reset() { *x = GetRoomRPSConfigRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetRoomRPSConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRoomRPSConfigRequest) ProtoMessage() {} func (x *GetRoomRPSConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRoomRPSConfigRequest.ProtoReflect.Descriptor instead. func (*GetRoomRPSConfigRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{25} } func (x *GetRoomRPSConfigRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } type RoomRPSConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *RoomRPSConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *RoomRPSConfigResponse) Reset() { *x = RoomRPSConfigResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSConfigResponse) ProtoMessage() {} func (x *RoomRPSConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSConfigResponse.ProtoReflect.Descriptor instead. func (*RoomRPSConfigResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{26} } func (x *RoomRPSConfigResponse) GetConfig() *RoomRPSConfig { if x != nil { return x.Config } return nil } func (x *RoomRPSConfigResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type CreateRoomRPSChallengeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,4,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` GiftId int64 `protobuf:"varint,5,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"` Gesture string `protobuf:"bytes,6,opt,name=gesture,proto3" json:"gesture,omitempty"` GiftIdText string `protobuf:"bytes,7,opt,name=gift_id_text,json=giftIdText,proto3" json:"gift_id_text,omitempty"` } func (x *CreateRoomRPSChallengeRequest) Reset() { *x = CreateRoomRPSChallengeRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRoomRPSChallengeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRoomRPSChallengeRequest) ProtoMessage() {} func (x *CreateRoomRPSChallengeRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRoomRPSChallengeRequest.ProtoReflect.Descriptor instead. func (*CreateRoomRPSChallengeRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{27} } func (x *CreateRoomRPSChallengeRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *CreateRoomRPSChallengeRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *CreateRoomRPSChallengeRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *CreateRoomRPSChallengeRequest) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *CreateRoomRPSChallengeRequest) GetGiftId() int64 { if x != nil { return x.GiftId } return 0 } func (x *CreateRoomRPSChallengeRequest) GetGesture() string { if x != nil { return x.Gesture } return "" } func (x *CreateRoomRPSChallengeRequest) GetGiftIdText() string { if x != nil { return x.GiftIdText } return "" } type AcceptRoomRPSChallengeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` ChallengeId string `protobuf:"bytes,3,opt,name=challenge_id,json=challengeId,proto3" json:"challenge_id,omitempty"` Gesture string `protobuf:"bytes,4,opt,name=gesture,proto3" json:"gesture,omitempty"` } func (x *AcceptRoomRPSChallengeRequest) Reset() { *x = AcceptRoomRPSChallengeRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AcceptRoomRPSChallengeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AcceptRoomRPSChallengeRequest) ProtoMessage() {} func (x *AcceptRoomRPSChallengeRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AcceptRoomRPSChallengeRequest.ProtoReflect.Descriptor instead. func (*AcceptRoomRPSChallengeRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{28} } func (x *AcceptRoomRPSChallengeRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *AcceptRoomRPSChallengeRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *AcceptRoomRPSChallengeRequest) GetChallengeId() string { if x != nil { return x.ChallengeId } return "" } func (x *AcceptRoomRPSChallengeRequest) GetGesture() string { if x != nil { return x.Gesture } return "" } type GetRoomRPSChallengeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` ChallengeId string `protobuf:"bytes,3,opt,name=challenge_id,json=challengeId,proto3" json:"challenge_id,omitempty"` } func (x *GetRoomRPSChallengeRequest) Reset() { *x = GetRoomRPSChallengeRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetRoomRPSChallengeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRoomRPSChallengeRequest) ProtoMessage() {} func (x *GetRoomRPSChallengeRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRoomRPSChallengeRequest.ProtoReflect.Descriptor instead. func (*GetRoomRPSChallengeRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{29} } func (x *GetRoomRPSChallengeRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *GetRoomRPSChallengeRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *GetRoomRPSChallengeRequest) GetChallengeId() string { if x != nil { return x.ChallengeId } return "" } type ListRoomRPSChallengesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` InitiatorUserId int64 `protobuf:"varint,5,opt,name=initiator_user_id,json=initiatorUserId,proto3" json:"initiator_user_id,omitempty"` ChallengerUserId int64 `protobuf:"varint,6,opt,name=challenger_user_id,json=challengerUserId,proto3" json:"challenger_user_id,omitempty"` StartTimeMs int64 `protobuf:"varint,7,opt,name=start_time_ms,json=startTimeMs,proto3" json:"start_time_ms,omitempty"` EndTimeMs int64 `protobuf:"varint,8,opt,name=end_time_ms,json=endTimeMs,proto3" json:"end_time_ms,omitempty"` PageSize int32 `protobuf:"varint,9,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` Cursor string `protobuf:"bytes,10,opt,name=cursor,proto3" json:"cursor,omitempty"` } func (x *ListRoomRPSChallengesRequest) Reset() { *x = ListRoomRPSChallengesRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListRoomRPSChallengesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRoomRPSChallengesRequest) ProtoMessage() {} func (x *ListRoomRPSChallengesRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRoomRPSChallengesRequest.ProtoReflect.Descriptor instead. func (*ListRoomRPSChallengesRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{30} } func (x *ListRoomRPSChallengesRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListRoomRPSChallengesRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *ListRoomRPSChallengesRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *ListRoomRPSChallengesRequest) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ListRoomRPSChallengesRequest) GetInitiatorUserId() int64 { if x != nil { return x.InitiatorUserId } return 0 } func (x *ListRoomRPSChallengesRequest) GetChallengerUserId() int64 { if x != nil { return x.ChallengerUserId } return 0 } func (x *ListRoomRPSChallengesRequest) GetStartTimeMs() int64 { if x != nil { return x.StartTimeMs } return 0 } func (x *ListRoomRPSChallengesRequest) GetEndTimeMs() int64 { if x != nil { return x.EndTimeMs } return 0 } func (x *ListRoomRPSChallengesRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListRoomRPSChallengesRequest) GetCursor() string { if x != nil { return x.Cursor } return "" } type RoomRPSChallengeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Challenge *RoomRPSChallenge `protobuf:"bytes,1,opt,name=challenge,proto3" json:"challenge,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *RoomRPSChallengeResponse) Reset() { *x = RoomRPSChallengeResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RoomRPSChallengeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomRPSChallengeResponse) ProtoMessage() {} func (x *RoomRPSChallengeResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RoomRPSChallengeResponse.ProtoReflect.Descriptor instead. func (*RoomRPSChallengeResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{31} } func (x *RoomRPSChallengeResponse) GetChallenge() *RoomRPSChallenge { if x != nil { return x.Challenge } return nil } func (x *RoomRPSChallengeResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type ListRoomRPSChallengesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Challenges []*RoomRPSChallenge `protobuf:"bytes,1,rep,name=challenges,proto3" json:"challenges,omitempty"` NextCursor string `protobuf:"bytes,2,opt,name=next_cursor,json=nextCursor,proto3" json:"next_cursor,omitempty"` PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` ServerTimeMs int64 `protobuf:"varint,4,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListRoomRPSChallengesResponse) Reset() { *x = ListRoomRPSChallengesResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListRoomRPSChallengesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRoomRPSChallengesResponse) ProtoMessage() {} func (x *ListRoomRPSChallengesResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRoomRPSChallengesResponse.ProtoReflect.Descriptor instead. func (*ListRoomRPSChallengesResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{32} } func (x *ListRoomRPSChallengesResponse) GetChallenges() []*RoomRPSChallenge { if x != nil { return x.Challenges } return nil } func (x *ListRoomRPSChallengesResponse) GetNextCursor() string { if x != nil { return x.NextCursor } return "" } func (x *ListRoomRPSChallengesResponse) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListRoomRPSChallengesResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type UpdateRoomRPSConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Config *RoomRPSConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } func (x *UpdateRoomRPSConfigRequest) Reset() { *x = UpdateRoomRPSConfigRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateRoomRPSConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateRoomRPSConfigRequest) ProtoMessage() {} func (x *UpdateRoomRPSConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateRoomRPSConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateRoomRPSConfigRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{33} } func (x *UpdateRoomRPSConfigRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpdateRoomRPSConfigRequest) GetConfig() *RoomRPSConfig { if x != nil { return x.Config } return nil } type RetryRoomRPSSettlementRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` ChallengeId string `protobuf:"bytes,2,opt,name=challenge_id,json=challengeId,proto3" json:"challenge_id,omitempty"` } func (x *RetryRoomRPSSettlementRequest) Reset() { *x = RetryRoomRPSSettlementRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RetryRoomRPSSettlementRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RetryRoomRPSSettlementRequest) ProtoMessage() {} func (x *RetryRoomRPSSettlementRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RetryRoomRPSSettlementRequest.ProtoReflect.Descriptor instead. func (*RetryRoomRPSSettlementRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{34} } func (x *RetryRoomRPSSettlementRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *RetryRoomRPSSettlementRequest) GetChallengeId() string { if x != nil { return x.ChallengeId } return "" } type ExpireRoomRPSChallengeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` ChallengeId string `protobuf:"bytes,2,opt,name=challenge_id,json=challengeId,proto3" json:"challenge_id,omitempty"` } func (x *ExpireRoomRPSChallengeRequest) Reset() { *x = ExpireRoomRPSChallengeRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExpireRoomRPSChallengeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExpireRoomRPSChallengeRequest) ProtoMessage() {} func (x *ExpireRoomRPSChallengeRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExpireRoomRPSChallengeRequest.ProtoReflect.Descriptor instead. func (*ExpireRoomRPSChallengeRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{35} } func (x *ExpireRoomRPSChallengeRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ExpireRoomRPSChallengeRequest) GetChallengeId() string { if x != nil { return x.ChallengeId } return "" } type CreateDiceMatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` RoomId string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` StakeCoin int64 `protobuf:"varint,6,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` MinPlayers int32 `protobuf:"varint,7,opt,name=min_players,json=minPlayers,proto3" json:"min_players,omitempty"` MaxPlayers int32 `protobuf:"varint,8,opt,name=max_players,json=maxPlayers,proto3" json:"max_players,omitempty"` RpsGesture string `protobuf:"bytes,9,opt,name=rps_gesture,json=rpsGesture,proto3" json:"rps_gesture,omitempty"` // country_id 由 gateway 从当前用户资料注入,客户端不能直接决定统计国家。 CountryId int64 `protobuf:"varint,10,opt,name=country_id,json=countryId,proto3" json:"country_id,omitempty"` } func (x *CreateDiceMatchRequest) Reset() { *x = CreateDiceMatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateDiceMatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateDiceMatchRequest) ProtoMessage() {} func (x *CreateDiceMatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateDiceMatchRequest.ProtoReflect.Descriptor instead. func (*CreateDiceMatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{36} } func (x *CreateDiceMatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *CreateDiceMatchRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *CreateDiceMatchRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *CreateDiceMatchRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *CreateDiceMatchRequest) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *CreateDiceMatchRequest) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *CreateDiceMatchRequest) GetMinPlayers() int32 { if x != nil { return x.MinPlayers } return 0 } func (x *CreateDiceMatchRequest) GetMaxPlayers() int32 { if x != nil { return x.MaxPlayers } return 0 } func (x *CreateDiceMatchRequest) GetRpsGesture() string { if x != nil { return x.RpsGesture } return "" } func (x *CreateDiceMatchRequest) GetCountryId() int64 { if x != nil { return x.CountryId } return 0 } type JoinDiceMatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` MatchId string `protobuf:"bytes,3,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` RpsGesture string `protobuf:"bytes,5,opt,name=rps_gesture,json=rpsGesture,proto3" json:"rps_gesture,omitempty"` } func (x *JoinDiceMatchRequest) Reset() { *x = JoinDiceMatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *JoinDiceMatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*JoinDiceMatchRequest) ProtoMessage() {} func (x *JoinDiceMatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use JoinDiceMatchRequest.ProtoReflect.Descriptor instead. func (*JoinDiceMatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{37} } func (x *JoinDiceMatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *JoinDiceMatchRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *JoinDiceMatchRequest) GetMatchId() string { if x != nil { return x.MatchId } return "" } func (x *JoinDiceMatchRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *JoinDiceMatchRequest) GetRpsGesture() string { if x != nil { return x.RpsGesture } return "" } type GetDiceMatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` MatchId string `protobuf:"bytes,3,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *GetDiceMatchRequest) Reset() { *x = GetDiceMatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetDiceMatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetDiceMatchRequest) ProtoMessage() {} func (x *GetDiceMatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetDiceMatchRequest.ProtoReflect.Descriptor instead. func (*GetDiceMatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{38} } func (x *GetDiceMatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *GetDiceMatchRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *GetDiceMatchRequest) GetMatchId() string { if x != nil { return x.MatchId } return "" } func (x *GetDiceMatchRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type RollDiceMatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` MatchId string `protobuf:"bytes,3,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` RpsGesture string `protobuf:"bytes,5,opt,name=rps_gesture,json=rpsGesture,proto3" json:"rps_gesture,omitempty"` } func (x *RollDiceMatchRequest) Reset() { *x = RollDiceMatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RollDiceMatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RollDiceMatchRequest) ProtoMessage() {} func (x *RollDiceMatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RollDiceMatchRequest.ProtoReflect.Descriptor instead. func (*RollDiceMatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{39} } func (x *RollDiceMatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *RollDiceMatchRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *RollDiceMatchRequest) GetMatchId() string { if x != nil { return x.MatchId } return "" } func (x *RollDiceMatchRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *RollDiceMatchRequest) GetRpsGesture() string { if x != nil { return x.RpsGesture } return "" } type MatchDiceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` RoomId string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` RegionId int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` StakeCoin int64 `protobuf:"varint,6,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` RpsGesture string `protobuf:"bytes,7,opt,name=rps_gesture,json=rpsGesture,proto3" json:"rps_gesture,omitempty"` // country_id 由 gateway 从当前用户资料注入,客户端不能直接决定统计国家。 CountryId int64 `protobuf:"varint,8,opt,name=country_id,json=countryId,proto3" json:"country_id,omitempty"` } func (x *MatchDiceRequest) Reset() { *x = MatchDiceRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *MatchDiceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*MatchDiceRequest) ProtoMessage() {} func (x *MatchDiceRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MatchDiceRequest.ProtoReflect.Descriptor instead. func (*MatchDiceRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{40} } func (x *MatchDiceRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *MatchDiceRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *MatchDiceRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *MatchDiceRequest) GetRoomId() string { if x != nil { return x.RoomId } return "" } func (x *MatchDiceRequest) GetRegionId() int64 { if x != nil { return x.RegionId } return 0 } func (x *MatchDiceRequest) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *MatchDiceRequest) GetRpsGesture() string { if x != nil { return x.RpsGesture } return "" } func (x *MatchDiceRequest) GetCountryId() int64 { if x != nil { return x.CountryId } return 0 } type CancelDiceMatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` MatchId string `protobuf:"bytes,3,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *CancelDiceMatchRequest) Reset() { *x = CancelDiceMatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CancelDiceMatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancelDiceMatchRequest) ProtoMessage() {} func (x *CancelDiceMatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CancelDiceMatchRequest.ProtoReflect.Descriptor instead. func (*CancelDiceMatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{41} } func (x *CancelDiceMatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *CancelDiceMatchRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *CancelDiceMatchRequest) GetMatchId() string { if x != nil { return x.MatchId } return "" } func (x *CancelDiceMatchRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type DiceMatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Match *DiceMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *DiceMatchResponse) Reset() { *x = DiceMatchResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceMatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceMatchResponse) ProtoMessage() {} func (x *DiceMatchResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceMatchResponse.ProtoReflect.Descriptor instead. func (*DiceMatchResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{42} } func (x *DiceMatchResponse) GetMatch() *DiceMatch { if x != nil { return x.Match } return nil } func (x *DiceMatchResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type CallbackRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` PlatformCode string `protobuf:"bytes,2,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` Operation string `protobuf:"bytes,3,opt,name=operation,proto3" json:"operation,omitempty"` RawBody []byte `protobuf:"bytes,4,opt,name=raw_body,json=rawBody,proto3" json:"raw_body,omitempty"` Headers map[string]string `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Query map[string]string `protobuf:"bytes,6,rep,name=query,proto3" json:"query,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` RemoteAddr string `protobuf:"bytes,7,opt,name=remote_addr,json=remoteAddr,proto3" json:"remote_addr,omitempty"` } func (x *CallbackRequest) Reset() { *x = CallbackRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CallbackRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CallbackRequest) ProtoMessage() {} func (x *CallbackRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CallbackRequest.ProtoReflect.Descriptor instead. func (*CallbackRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{43} } func (x *CallbackRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *CallbackRequest) GetPlatformCode() string { if x != nil { return x.PlatformCode } return "" } func (x *CallbackRequest) GetOperation() string { if x != nil { return x.Operation } return "" } func (x *CallbackRequest) GetRawBody() []byte { if x != nil { return x.RawBody } return nil } func (x *CallbackRequest) GetHeaders() map[string]string { if x != nil { return x.Headers } return nil } func (x *CallbackRequest) GetQuery() map[string]string { if x != nil { return x.Query } return nil } func (x *CallbackRequest) GetRemoteAddr() string { if x != nil { return x.RemoteAddr } return "" } type CallbackResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RawBody []byte `protobuf:"bytes,1,opt,name=raw_body,json=rawBody,proto3" json:"raw_body,omitempty"` ContentType string `protobuf:"bytes,2,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` } func (x *CallbackResponse) Reset() { *x = CallbackResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CallbackResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CallbackResponse) ProtoMessage() {} func (x *CallbackResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CallbackResponse.ProtoReflect.Descriptor instead. func (*CallbackResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{44} } func (x *CallbackResponse) GetRawBody() []byte { if x != nil { return x.RawBody } return nil } func (x *CallbackResponse) GetContentType() string { if x != nil { return x.ContentType } return "" } type CronBatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` RunId string `protobuf:"bytes,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"` WorkerId string `protobuf:"bytes,3,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` BatchSize int32 `protobuf:"varint,4,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` LockTtlMs int64 `protobuf:"varint,5,opt,name=lock_ttl_ms,json=lockTtlMs,proto3" json:"lock_ttl_ms,omitempty"` } func (x *CronBatchRequest) Reset() { *x = CronBatchRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CronBatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CronBatchRequest) ProtoMessage() {} func (x *CronBatchRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CronBatchRequest.ProtoReflect.Descriptor instead. func (*CronBatchRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{45} } func (x *CronBatchRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *CronBatchRequest) GetRunId() string { if x != nil { return x.RunId } return "" } func (x *CronBatchRequest) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *CronBatchRequest) GetBatchSize() int32 { if x != nil { return x.BatchSize } return 0 } func (x *CronBatchRequest) GetLockTtlMs() int64 { if x != nil { return x.LockTtlMs } return 0 } type CronBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ClaimedCount int32 `protobuf:"varint,1,opt,name=claimed_count,json=claimedCount,proto3" json:"claimed_count,omitempty"` ProcessedCount int32 `protobuf:"varint,2,opt,name=processed_count,json=processedCount,proto3" json:"processed_count,omitempty"` SuccessCount int32 `protobuf:"varint,3,opt,name=success_count,json=successCount,proto3" json:"success_count,omitempty"` FailureCount int32 `protobuf:"varint,4,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"` HasMore bool `protobuf:"varint,5,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` } func (x *CronBatchResponse) Reset() { *x = CronBatchResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CronBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CronBatchResponse) ProtoMessage() {} func (x *CronBatchResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CronBatchResponse.ProtoReflect.Descriptor instead. func (*CronBatchResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{46} } func (x *CronBatchResponse) GetClaimedCount() int32 { if x != nil { return x.ClaimedCount } return 0 } func (x *CronBatchResponse) GetProcessedCount() int32 { if x != nil { return x.ProcessedCount } return 0 } func (x *CronBatchResponse) GetSuccessCount() int32 { if x != nil { return x.SuccessCount } return 0 } func (x *CronBatchResponse) GetFailureCount() int32 { if x != nil { return x.FailureCount } return 0 } func (x *CronBatchResponse) GetHasMore() bool { if x != nil { return x.HasMore } return false } type ListPlatformsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` } func (x *ListPlatformsRequest) Reset() { *x = ListPlatformsRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListPlatformsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPlatformsRequest) ProtoMessage() {} func (x *ListPlatformsRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListPlatformsRequest.ProtoReflect.Descriptor instead. func (*ListPlatformsRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{47} } func (x *ListPlatformsRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListPlatformsRequest) GetStatus() string { if x != nil { return x.Status } return "" } type ListPlatformsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Platforms []*GamePlatform `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListPlatformsResponse) Reset() { *x = ListPlatformsResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListPlatformsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPlatformsResponse) ProtoMessage() {} func (x *ListPlatformsResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListPlatformsResponse.ProtoReflect.Descriptor instead. func (*ListPlatformsResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{48} } func (x *ListPlatformsResponse) GetPlatforms() []*GamePlatform { if x != nil { return x.Platforms } return nil } func (x *ListPlatformsResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type UpsertPlatformRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Platform *GamePlatform `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"` } func (x *UpsertPlatformRequest) Reset() { *x = UpsertPlatformRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpsertPlatformRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpsertPlatformRequest) ProtoMessage() {} func (x *UpsertPlatformRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpsertPlatformRequest.ProtoReflect.Descriptor instead. func (*UpsertPlatformRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{49} } func (x *UpsertPlatformRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpsertPlatformRequest) GetPlatform() *GamePlatform { if x != nil { return x.Platform } return nil } type PlatformResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Platform *GamePlatform `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *PlatformResponse) Reset() { *x = PlatformResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformResponse) ProtoMessage() {} func (x *PlatformResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformResponse.ProtoReflect.Descriptor instead. func (*PlatformResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{50} } func (x *PlatformResponse) GetPlatform() *GamePlatform { if x != nil { return x.Platform } return nil } func (x *PlatformResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type ListCatalogRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` PlatformCode string `protobuf:"bytes,2,opt,name=platform_code,json=platformCode,proto3" json:"platform_code,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` Cursor string `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"` } func (x *ListCatalogRequest) Reset() { *x = ListCatalogRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListCatalogRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListCatalogRequest) ProtoMessage() {} func (x *ListCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListCatalogRequest.ProtoReflect.Descriptor instead. func (*ListCatalogRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{51} } func (x *ListCatalogRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListCatalogRequest) GetPlatformCode() string { if x != nil { return x.PlatformCode } return "" } func (x *ListCatalogRequest) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ListCatalogRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListCatalogRequest) GetCursor() string { if x != nil { return x.Cursor } return "" } type ListCatalogResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Games []*GameCatalogItem `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` NextCursor string `protobuf:"bytes,2,opt,name=next_cursor,json=nextCursor,proto3" json:"next_cursor,omitempty"` ServerTimeMs int64 `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListCatalogResponse) Reset() { *x = ListCatalogResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListCatalogResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListCatalogResponse) ProtoMessage() {} func (x *ListCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListCatalogResponse.ProtoReflect.Descriptor instead. func (*ListCatalogResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{52} } func (x *ListCatalogResponse) GetGames() []*GameCatalogItem { if x != nil { return x.Games } return nil } func (x *ListCatalogResponse) GetNextCursor() string { if x != nil { return x.NextCursor } return "" } func (x *ListCatalogResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type UpsertCatalogRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Game *GameCatalogItem `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` } func (x *UpsertCatalogRequest) Reset() { *x = UpsertCatalogRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpsertCatalogRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpsertCatalogRequest) ProtoMessage() {} func (x *UpsertCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpsertCatalogRequest.ProtoReflect.Descriptor instead. func (*UpsertCatalogRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{53} } func (x *UpsertCatalogRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpsertCatalogRequest) GetGame() *GameCatalogItem { if x != nil { return x.Game } return nil } type CatalogResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Game *GameCatalogItem `protobuf:"bytes,1,opt,name=game,proto3" json:"game,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *CatalogResponse) Reset() { *x = CatalogResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CatalogResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CatalogResponse) ProtoMessage() {} func (x *CatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CatalogResponse.ProtoReflect.Descriptor instead. func (*CatalogResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{54} } func (x *CatalogResponse) GetGame() *GameCatalogItem { if x != nil { return x.Game } return nil } func (x *CatalogResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type SetGameStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` } func (x *SetGameStatusRequest) Reset() { *x = SetGameStatusRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SetGameStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetGameStatusRequest) ProtoMessage() {} func (x *SetGameStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetGameStatusRequest.ProtoReflect.Descriptor instead. func (*SetGameStatusRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{55} } func (x *SetGameStatusRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *SetGameStatusRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *SetGameStatusRequest) GetStatus() string { if x != nil { return x.Status } return "" } type DeleteCatalogRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *DeleteCatalogRequest) Reset() { *x = DeleteCatalogRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteCatalogRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteCatalogRequest) ProtoMessage() {} func (x *DeleteCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteCatalogRequest.ProtoReflect.Descriptor instead. func (*DeleteCatalogRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{56} } func (x *DeleteCatalogRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *DeleteCatalogRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type DeleteCatalogResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ServerTimeMs int64 `protobuf:"varint,1,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *DeleteCatalogResponse) Reset() { *x = DeleteCatalogResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteCatalogResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteCatalogResponse) ProtoMessage() {} func (x *DeleteCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteCatalogResponse.ProtoReflect.Descriptor instead. func (*DeleteCatalogResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{57} } func (x *DeleteCatalogResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type ListSelfGamesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` } func (x *ListSelfGamesRequest) Reset() { *x = ListSelfGamesRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListSelfGamesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSelfGamesRequest) ProtoMessage() {} func (x *ListSelfGamesRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSelfGamesRequest.ProtoReflect.Descriptor instead. func (*ListSelfGamesRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{58} } func (x *ListSelfGamesRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } type ListSelfGamesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Games []*DiceConfig `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListSelfGamesResponse) Reset() { *x = ListSelfGamesResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListSelfGamesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSelfGamesResponse) ProtoMessage() {} func (x *ListSelfGamesResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSelfGamesResponse.ProtoReflect.Descriptor instead. func (*ListSelfGamesResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{59} } func (x *ListSelfGamesResponse) GetGames() []*DiceConfig { if x != nil { return x.Games } return nil } func (x *ListSelfGamesResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type UpdateDiceConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Config *DiceConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } func (x *UpdateDiceConfigRequest) Reset() { *x = UpdateDiceConfigRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateDiceConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateDiceConfigRequest) ProtoMessage() {} func (x *UpdateDiceConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateDiceConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateDiceConfigRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{60} } func (x *UpdateDiceConfigRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpdateDiceConfigRequest) GetConfig() *DiceConfig { if x != nil { return x.Config } return nil } type SelfGameNewUserPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` ProtectionRounds int32 `protobuf:"varint,4,opt,name=protection_rounds,json=protectionRounds,proto3" json:"protection_rounds,omitempty"` ProtectionHours int32 `protobuf:"varint,5,opt,name=protection_hours,json=protectionHours,proto3" json:"protection_hours,omitempty"` MaxStakeCoin int64 `protobuf:"varint,6,opt,name=max_stake_coin,json=maxStakeCoin,proto3" json:"max_stake_coin,omitempty"` LifetimeSubsidyQuotaCoin int64 `protobuf:"varint,7,opt,name=lifetime_subsidy_quota_coin,json=lifetimeSubsidyQuotaCoin,proto3" json:"lifetime_subsidy_quota_coin,omitempty"` Day1SubsidyQuotaCoin int64 `protobuf:"varint,8,opt,name=day1_subsidy_quota_coin,json=day1SubsidyQuotaCoin,proto3" json:"day1_subsidy_quota_coin,omitempty"` SingleRoundSubsidyCapCoin int64 `protobuf:"varint,9,opt,name=single_round_subsidy_cap_coin,json=singleRoundSubsidyCapCoin,proto3" json:"single_round_subsidy_cap_coin,omitempty"` StrategyLevel string `protobuf:"bytes,10,opt,name=strategy_level,json=strategyLevel,proto3" json:"strategy_level,omitempty"` LoseStreakProtectionEnabled bool `protobuf:"varint,11,opt,name=lose_streak_protection_enabled,json=loseStreakProtectionEnabled,proto3" json:"lose_streak_protection_enabled,omitempty"` LoseStreakTrigger int32 `protobuf:"varint,12,opt,name=lose_streak_trigger,json=loseStreakTrigger,proto3" json:"lose_streak_trigger,omitempty"` CreatedAtMs int64 `protobuf:"varint,13,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,14,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` NormalPhaseTargetWinRatePercent int32 `protobuf:"varint,15,opt,name=normal_phase_target_win_rate_percent,json=normalPhaseTargetWinRatePercent,proto3" json:"normal_phase_target_win_rate_percent,omitempty"` BlackPoolRobotForceWinEnabled bool `protobuf:"varint,16,opt,name=black_pool_robot_force_win_enabled,json=blackPoolRobotForceWinEnabled,proto3" json:"black_pool_robot_force_win_enabled,omitempty"` } func (x *SelfGameNewUserPolicy) Reset() { *x = SelfGameNewUserPolicy{} mi := &file_proto_game_v1_game_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SelfGameNewUserPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*SelfGameNewUserPolicy) ProtoMessage() {} func (x *SelfGameNewUserPolicy) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SelfGameNewUserPolicy.ProtoReflect.Descriptor instead. func (*SelfGameNewUserPolicy) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{61} } func (x *SelfGameNewUserPolicy) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *SelfGameNewUserPolicy) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *SelfGameNewUserPolicy) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *SelfGameNewUserPolicy) GetProtectionRounds() int32 { if x != nil { return x.ProtectionRounds } return 0 } func (x *SelfGameNewUserPolicy) GetProtectionHours() int32 { if x != nil { return x.ProtectionHours } return 0 } func (x *SelfGameNewUserPolicy) GetMaxStakeCoin() int64 { if x != nil { return x.MaxStakeCoin } return 0 } func (x *SelfGameNewUserPolicy) GetLifetimeSubsidyQuotaCoin() int64 { if x != nil { return x.LifetimeSubsidyQuotaCoin } return 0 } func (x *SelfGameNewUserPolicy) GetDay1SubsidyQuotaCoin() int64 { if x != nil { return x.Day1SubsidyQuotaCoin } return 0 } func (x *SelfGameNewUserPolicy) GetSingleRoundSubsidyCapCoin() int64 { if x != nil { return x.SingleRoundSubsidyCapCoin } return 0 } func (x *SelfGameNewUserPolicy) GetStrategyLevel() string { if x != nil { return x.StrategyLevel } return "" } func (x *SelfGameNewUserPolicy) GetLoseStreakProtectionEnabled() bool { if x != nil { return x.LoseStreakProtectionEnabled } return false } func (x *SelfGameNewUserPolicy) GetLoseStreakTrigger() int32 { if x != nil { return x.LoseStreakTrigger } return 0 } func (x *SelfGameNewUserPolicy) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *SelfGameNewUserPolicy) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } func (x *SelfGameNewUserPolicy) GetNormalPhaseTargetWinRatePercent() int32 { if x != nil { return x.NormalPhaseTargetWinRatePercent } return 0 } func (x *SelfGameNewUserPolicy) GetBlackPoolRobotForceWinEnabled() bool { if x != nil { return x.BlackPoolRobotForceWinEnabled } return false } type GetSelfGameNewUserPolicyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *GetSelfGameNewUserPolicyRequest) Reset() { *x = GetSelfGameNewUserPolicyRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetSelfGameNewUserPolicyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSelfGameNewUserPolicyRequest) ProtoMessage() {} func (x *GetSelfGameNewUserPolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSelfGameNewUserPolicyRequest.ProtoReflect.Descriptor instead. func (*GetSelfGameNewUserPolicyRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{62} } func (x *GetSelfGameNewUserPolicyRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *GetSelfGameNewUserPolicyRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type UpdateSelfGameNewUserPolicyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Policy *SelfGameNewUserPolicy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"` } func (x *UpdateSelfGameNewUserPolicyRequest) Reset() { *x = UpdateSelfGameNewUserPolicyRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateSelfGameNewUserPolicyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSelfGameNewUserPolicyRequest) ProtoMessage() {} func (x *UpdateSelfGameNewUserPolicyRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSelfGameNewUserPolicyRequest.ProtoReflect.Descriptor instead. func (*UpdateSelfGameNewUserPolicyRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{63} } func (x *UpdateSelfGameNewUserPolicyRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpdateSelfGameNewUserPolicyRequest) GetPolicy() *SelfGameNewUserPolicy { if x != nil { return x.Policy } return nil } type SelfGameNewUserPolicyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Policy *SelfGameNewUserPolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *SelfGameNewUserPolicyResponse) Reset() { *x = SelfGameNewUserPolicyResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SelfGameNewUserPolicyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SelfGameNewUserPolicyResponse) ProtoMessage() {} func (x *SelfGameNewUserPolicyResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SelfGameNewUserPolicyResponse.ProtoReflect.Descriptor instead. func (*SelfGameNewUserPolicyResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{64} } func (x *SelfGameNewUserPolicyResponse) GetPolicy() *SelfGameNewUserPolicy { if x != nil { return x.Policy } return nil } func (x *SelfGameNewUserPolicyResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type SelfGameStakePool struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` StakeCoin int64 `protobuf:"varint,3,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` BalanceCoin int64 `protobuf:"varint,4,opt,name=balance_coin,json=balanceCoin,proto3" json:"balance_coin,omitempty"` ReservedCoin int64 `protobuf:"varint,5,opt,name=reserved_coin,json=reservedCoin,proto3" json:"reserved_coin,omitempty"` AvailableCoin int64 `protobuf:"varint,6,opt,name=available_coin,json=availableCoin,proto3" json:"available_coin,omitempty"` TargetBalanceCoin int64 `protobuf:"varint,7,opt,name=target_balance_coin,json=targetBalanceCoin,proto3" json:"target_balance_coin,omitempty"` SafeBalanceCoin int64 `protobuf:"varint,8,opt,name=safe_balance_coin,json=safeBalanceCoin,proto3" json:"safe_balance_coin,omitempty"` WarningBalanceCoin int64 `protobuf:"varint,9,opt,name=warning_balance_coin,json=warningBalanceCoin,proto3" json:"warning_balance_coin,omitempty"` DangerBalanceCoin int64 `protobuf:"varint,10,opt,name=danger_balance_coin,json=dangerBalanceCoin,proto3" json:"danger_balance_coin,omitempty"` Status string `protobuf:"bytes,11,opt,name=status,proto3" json:"status,omitempty"` PoolLevel string `protobuf:"bytes,12,opt,name=pool_level,json=poolLevel,proto3" json:"pool_level,omitempty"` RequiredPoolCoin int64 `protobuf:"varint,13,opt,name=required_pool_coin,json=requiredPoolCoin,proto3" json:"required_pool_coin,omitempty"` HumanWinCapacity int64 `protobuf:"varint,14,opt,name=human_win_capacity,json=humanWinCapacity,proto3" json:"human_win_capacity,omitempty"` BotMatchEnabled bool `protobuf:"varint,15,opt,name=bot_match_enabled,json=botMatchEnabled,proto3" json:"bot_match_enabled,omitempty"` BlackReason string `protobuf:"bytes,16,opt,name=black_reason,json=blackReason,proto3" json:"black_reason,omitempty"` CreatedAtMs int64 `protobuf:"varint,17,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,18,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` } func (x *SelfGameStakePool) Reset() { *x = SelfGameStakePool{} mi := &file_proto_game_v1_game_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SelfGameStakePool) String() string { return protoimpl.X.MessageStringOf(x) } func (*SelfGameStakePool) ProtoMessage() {} func (x *SelfGameStakePool) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SelfGameStakePool.ProtoReflect.Descriptor instead. func (*SelfGameStakePool) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{65} } func (x *SelfGameStakePool) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *SelfGameStakePool) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *SelfGameStakePool) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } func (x *SelfGameStakePool) GetBalanceCoin() int64 { if x != nil { return x.BalanceCoin } return 0 } func (x *SelfGameStakePool) GetReservedCoin() int64 { if x != nil { return x.ReservedCoin } return 0 } func (x *SelfGameStakePool) GetAvailableCoin() int64 { if x != nil { return x.AvailableCoin } return 0 } func (x *SelfGameStakePool) GetTargetBalanceCoin() int64 { if x != nil { return x.TargetBalanceCoin } return 0 } func (x *SelfGameStakePool) GetSafeBalanceCoin() int64 { if x != nil { return x.SafeBalanceCoin } return 0 } func (x *SelfGameStakePool) GetWarningBalanceCoin() int64 { if x != nil { return x.WarningBalanceCoin } return 0 } func (x *SelfGameStakePool) GetDangerBalanceCoin() int64 { if x != nil { return x.DangerBalanceCoin } return 0 } func (x *SelfGameStakePool) GetStatus() string { if x != nil { return x.Status } return "" } func (x *SelfGameStakePool) GetPoolLevel() string { if x != nil { return x.PoolLevel } return "" } func (x *SelfGameStakePool) GetRequiredPoolCoin() int64 { if x != nil { return x.RequiredPoolCoin } return 0 } func (x *SelfGameStakePool) GetHumanWinCapacity() int64 { if x != nil { return x.HumanWinCapacity } return 0 } func (x *SelfGameStakePool) GetBotMatchEnabled() bool { if x != nil { return x.BotMatchEnabled } return false } func (x *SelfGameStakePool) GetBlackReason() string { if x != nil { return x.BlackReason } return "" } func (x *SelfGameStakePool) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *SelfGameStakePool) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } type ListSelfGameStakePoolsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` } func (x *ListSelfGameStakePoolsRequest) Reset() { *x = ListSelfGameStakePoolsRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListSelfGameStakePoolsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSelfGameStakePoolsRequest) ProtoMessage() {} func (x *ListSelfGameStakePoolsRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSelfGameStakePoolsRequest.ProtoReflect.Descriptor instead. func (*ListSelfGameStakePoolsRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{66} } func (x *ListSelfGameStakePoolsRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListSelfGameStakePoolsRequest) GetGameId() string { if x != nil { return x.GameId } return "" } type UpdateSelfGameStakePoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` Pool *SelfGameStakePool `protobuf:"bytes,2,opt,name=pool,proto3" json:"pool,omitempty"` } func (x *UpdateSelfGameStakePoolRequest) Reset() { *x = UpdateSelfGameStakePoolRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateSelfGameStakePoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSelfGameStakePoolRequest) ProtoMessage() {} func (x *UpdateSelfGameStakePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSelfGameStakePoolRequest.ProtoReflect.Descriptor instead. func (*UpdateSelfGameStakePoolRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{67} } func (x *UpdateSelfGameStakePoolRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *UpdateSelfGameStakePoolRequest) GetPool() *SelfGameStakePool { if x != nil { return x.Pool } return nil } type SelfGameStakePoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pool *SelfGameStakePool `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *SelfGameStakePoolResponse) Reset() { *x = SelfGameStakePoolResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SelfGameStakePoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SelfGameStakePoolResponse) ProtoMessage() {} func (x *SelfGameStakePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SelfGameStakePoolResponse.ProtoReflect.Descriptor instead. func (*SelfGameStakePoolResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{68} } func (x *SelfGameStakePoolResponse) GetPool() *SelfGameStakePool { if x != nil { return x.Pool } return nil } func (x *SelfGameStakePoolResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type ListSelfGameStakePoolsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pools []*SelfGameStakePool `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListSelfGameStakePoolsResponse) Reset() { *x = ListSelfGameStakePoolsResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListSelfGameStakePoolsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListSelfGameStakePoolsResponse) ProtoMessage() {} func (x *ListSelfGameStakePoolsResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListSelfGameStakePoolsResponse.ProtoReflect.Descriptor instead. func (*ListSelfGameStakePoolsResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{69} } func (x *ListSelfGameStakePoolsResponse) GetPools() []*SelfGameStakePool { if x != nil { return x.Pools } return nil } func (x *ListSelfGameStakePoolsResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type DicePoolAdjustment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AdjustmentId string `protobuf:"bytes,1,opt,name=adjustment_id,json=adjustmentId,proto3" json:"adjustment_id,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` AmountCoin int64 `protobuf:"varint,3,opt,name=amount_coin,json=amountCoin,proto3" json:"amount_coin,omitempty"` Direction string `protobuf:"bytes,4,opt,name=direction,proto3" json:"direction,omitempty"` Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` BalanceAfter int64 `protobuf:"varint,6,opt,name=balance_after,json=balanceAfter,proto3" json:"balance_after,omitempty"` CreatedAtMs int64 `protobuf:"varint,7,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` StakeCoin int64 `protobuf:"varint,8,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` } func (x *DicePoolAdjustment) Reset() { *x = DicePoolAdjustment{} mi := &file_proto_game_v1_game_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DicePoolAdjustment) String() string { return protoimpl.X.MessageStringOf(x) } func (*DicePoolAdjustment) ProtoMessage() {} func (x *DicePoolAdjustment) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DicePoolAdjustment.ProtoReflect.Descriptor instead. func (*DicePoolAdjustment) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{70} } func (x *DicePoolAdjustment) GetAdjustmentId() string { if x != nil { return x.AdjustmentId } return "" } func (x *DicePoolAdjustment) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *DicePoolAdjustment) GetAmountCoin() int64 { if x != nil { return x.AmountCoin } return 0 } func (x *DicePoolAdjustment) GetDirection() string { if x != nil { return x.Direction } return "" } func (x *DicePoolAdjustment) GetReason() string { if x != nil { return x.Reason } return "" } func (x *DicePoolAdjustment) GetBalanceAfter() int64 { if x != nil { return x.BalanceAfter } return 0 } func (x *DicePoolAdjustment) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *DicePoolAdjustment) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } type AdjustSelfGameStakePoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` AmountCoin int64 `protobuf:"varint,3,opt,name=amount_coin,json=amountCoin,proto3" json:"amount_coin,omitempty"` Direction string `protobuf:"bytes,4,opt,name=direction,proto3" json:"direction,omitempty"` Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` StakeCoin int64 `protobuf:"varint,6,opt,name=stake_coin,json=stakeCoin,proto3" json:"stake_coin,omitempty"` } func (x *AdjustSelfGameStakePoolRequest) Reset() { *x = AdjustSelfGameStakePoolRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AdjustSelfGameStakePoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdjustSelfGameStakePoolRequest) ProtoMessage() {} func (x *AdjustSelfGameStakePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AdjustSelfGameStakePoolRequest.ProtoReflect.Descriptor instead. func (*AdjustSelfGameStakePoolRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{71} } func (x *AdjustSelfGameStakePoolRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *AdjustSelfGameStakePoolRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *AdjustSelfGameStakePoolRequest) GetAmountCoin() int64 { if x != nil { return x.AmountCoin } return 0 } func (x *AdjustSelfGameStakePoolRequest) GetDirection() string { if x != nil { return x.Direction } return "" } func (x *AdjustSelfGameStakePoolRequest) GetReason() string { if x != nil { return x.Reason } return "" } func (x *AdjustSelfGameStakePoolRequest) GetStakeCoin() int64 { if x != nil { return x.StakeCoin } return 0 } type AdjustSelfGameStakePoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Adjustment *DicePoolAdjustment `protobuf:"bytes,1,opt,name=adjustment,proto3" json:"adjustment,omitempty"` Config *DiceConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` ServerTimeMs int64 `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *AdjustSelfGameStakePoolResponse) Reset() { *x = AdjustSelfGameStakePoolResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AdjustSelfGameStakePoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdjustSelfGameStakePoolResponse) ProtoMessage() {} func (x *AdjustSelfGameStakePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AdjustSelfGameStakePoolResponse.ProtoReflect.Descriptor instead. func (*AdjustSelfGameStakePoolResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{72} } func (x *AdjustSelfGameStakePoolResponse) GetAdjustment() *DicePoolAdjustment { if x != nil { return x.Adjustment } return nil } func (x *AdjustSelfGameStakePoolResponse) GetConfig() *DiceConfig { if x != nil { return x.Config } return nil } func (x *AdjustSelfGameStakePoolResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type DiceRobot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` CreatedByAdminId int64 `protobuf:"varint,5,opt,name=created_by_admin_id,json=createdByAdminId,proto3" json:"created_by_admin_id,omitempty"` CreatedAtMs int64 `protobuf:"varint,6,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"` UpdatedAtMs int64 `protobuf:"varint,7,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"` } func (x *DiceRobot) Reset() { *x = DiceRobot{} mi := &file_proto_game_v1_game_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceRobot) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceRobot) ProtoMessage() {} func (x *DiceRobot) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceRobot.ProtoReflect.Descriptor instead. func (*DiceRobot) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{73} } func (x *DiceRobot) GetAppCode() string { if x != nil { return x.AppCode } return "" } func (x *DiceRobot) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *DiceRobot) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *DiceRobot) GetStatus() string { if x != nil { return x.Status } return "" } func (x *DiceRobot) GetCreatedByAdminId() int64 { if x != nil { return x.CreatedByAdminId } return 0 } func (x *DiceRobot) GetCreatedAtMs() int64 { if x != nil { return x.CreatedAtMs } return 0 } func (x *DiceRobot) GetUpdatedAtMs() int64 { if x != nil { return x.UpdatedAtMs } return 0 } type ListDiceRobotsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` Cursor string `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"` } func (x *ListDiceRobotsRequest) Reset() { *x = ListDiceRobotsRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListDiceRobotsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDiceRobotsRequest) ProtoMessage() {} func (x *ListDiceRobotsRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListDiceRobotsRequest.ProtoReflect.Descriptor instead. func (*ListDiceRobotsRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{74} } func (x *ListDiceRobotsRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *ListDiceRobotsRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *ListDiceRobotsRequest) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ListDiceRobotsRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListDiceRobotsRequest) GetCursor() string { if x != nil { return x.Cursor } return "" } type ListDiceRobotsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Robots []*DiceRobot `protobuf:"bytes,1,rep,name=robots,proto3" json:"robots,omitempty"` NextCursor string `protobuf:"bytes,2,opt,name=next_cursor,json=nextCursor,proto3" json:"next_cursor,omitempty"` ServerTimeMs int64 `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *ListDiceRobotsResponse) Reset() { *x = ListDiceRobotsResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListDiceRobotsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDiceRobotsResponse) ProtoMessage() {} func (x *ListDiceRobotsResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListDiceRobotsResponse.ProtoReflect.Descriptor instead. func (*ListDiceRobotsResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{75} } func (x *ListDiceRobotsResponse) GetRobots() []*DiceRobot { if x != nil { return x.Robots } return nil } func (x *ListDiceRobotsResponse) GetNextCursor() string { if x != nil { return x.NextCursor } return "" } func (x *ListDiceRobotsResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type RegisterDiceRobotsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` UserIds []int64 `protobuf:"varint,3,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` } func (x *RegisterDiceRobotsRequest) Reset() { *x = RegisterDiceRobotsRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RegisterDiceRobotsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterDiceRobotsRequest) ProtoMessage() {} func (x *RegisterDiceRobotsRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterDiceRobotsRequest.ProtoReflect.Descriptor instead. func (*RegisterDiceRobotsRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{76} } func (x *RegisterDiceRobotsRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *RegisterDiceRobotsRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *RegisterDiceRobotsRequest) GetUserIds() []int64 { if x != nil { return x.UserIds } return nil } type RegisterDiceRobotsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Robots []*DiceRobot `protobuf:"bytes,1,rep,name=robots,proto3" json:"robots,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *RegisterDiceRobotsResponse) Reset() { *x = RegisterDiceRobotsResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RegisterDiceRobotsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterDiceRobotsResponse) ProtoMessage() {} func (x *RegisterDiceRobotsResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterDiceRobotsResponse.ProtoReflect.Descriptor instead. func (*RegisterDiceRobotsResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{77} } func (x *RegisterDiceRobotsResponse) GetRobots() []*DiceRobot { if x != nil { return x.Robots } return nil } func (x *RegisterDiceRobotsResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type SetDiceRobotStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` } func (x *SetDiceRobotStatusRequest) Reset() { *x = SetDiceRobotStatusRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SetDiceRobotStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetDiceRobotStatusRequest) ProtoMessage() {} func (x *SetDiceRobotStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetDiceRobotStatusRequest.ProtoReflect.Descriptor instead. func (*SetDiceRobotStatusRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{78} } func (x *SetDiceRobotStatusRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *SetDiceRobotStatusRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *SetDiceRobotStatusRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } func (x *SetDiceRobotStatusRequest) GetStatus() string { if x != nil { return x.Status } return "" } type DeleteDiceRobotRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *DeleteDiceRobotRequest) Reset() { *x = DeleteDiceRobotRequest{} mi := &file_proto_game_v1_game_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteDiceRobotRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteDiceRobotRequest) ProtoMessage() {} func (x *DeleteDiceRobotRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteDiceRobotRequest.ProtoReflect.Descriptor instead. func (*DeleteDiceRobotRequest) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{79} } func (x *DeleteDiceRobotRequest) GetMeta() *RequestMeta { if x != nil { return x.Meta } return nil } func (x *DeleteDiceRobotRequest) GetGameId() string { if x != nil { return x.GameId } return "" } func (x *DeleteDiceRobotRequest) GetUserId() int64 { if x != nil { return x.UserId } return 0 } type DeleteDiceRobotResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Deleted bool `protobuf:"varint,1,opt,name=deleted,proto3" json:"deleted,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *DeleteDiceRobotResponse) Reset() { *x = DeleteDiceRobotResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteDiceRobotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteDiceRobotResponse) ProtoMessage() {} func (x *DeleteDiceRobotResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteDiceRobotResponse.ProtoReflect.Descriptor instead. func (*DeleteDiceRobotResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{80} } func (x *DeleteDiceRobotResponse) GetDeleted() bool { if x != nil { return x.Deleted } return false } func (x *DeleteDiceRobotResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } type DiceRobotResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Robot *DiceRobot `protobuf:"bytes,1,opt,name=robot,proto3" json:"robot,omitempty"` ServerTimeMs int64 `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"` } func (x *DiceRobotResponse) Reset() { *x = DiceRobotResponse{} mi := &file_proto_game_v1_game_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DiceRobotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiceRobotResponse) ProtoMessage() {} func (x *DiceRobotResponse) ProtoReflect() protoreflect.Message { mi := &file_proto_game_v1_game_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DiceRobotResponse.ProtoReflect.Descriptor instead. func (*DiceRobotResponse) Descriptor() ([]byte, []int) { return file_proto_game_v1_game_proto_rawDescGZIP(), []int{81} } func (x *DiceRobotResponse) GetRobot() *DiceRobot { if x != nil { return x.Robot } return nil } func (x *DiceRobotResponse) GetServerTimeMs() int64 { if x != nil { return x.ServerTimeMs } return 0 } var File_proto_game_v1_game_proto protoreflect.FileDescriptor var file_proto_game_v1_game_proto_rawDesc = []byte{ 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x22, 0xc9, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xf4, 0x03, 0x0a, 0x0c, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x42, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x49, 0x70, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x97, 0x04, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xa4, 0x03, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x61, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 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, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x67, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x68, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x6f, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x09, 0x77, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x77, 0x6f, 0x6e, 0x41, 0x74, 0x4d, 0x73, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x48, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xaa, 0x01, 0x0a, 0x16, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x15, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x22, 0x7e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x11, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x22, 0xdf, 0x01, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xa6, 0x03, 0x0a, 0x0f, 0x44, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x61, 0x74, 0x5f, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x61, 0x74, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x70, 0x73, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x70, 0x73, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x22, 0x86, 0x07, 0x0a, 0x09, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6a, 0x6f, 0x69, 0x6e, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x65, 0x65, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x65, 0x65, 0x42, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x42, 0x70, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x6f, 0x6f, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x0f, 0x44, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xe1, 0x03, 0x0a, 0x0a, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x65, 0x65, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x65, 0x65, 0x42, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x42, 0x70, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x13, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x12, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x9d, 0x02, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x47, 0x69, 0x66, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x69, 0x66, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x66, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x69, 0x66, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x69, 0x66, 0x74, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0xc7, 0x02, 0x0a, 0x0d, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4d, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x47, 0x69, 0x66, 0x74, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x47, 0x69, 0x66, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0d, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x22, 0xd8, 0x05, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x47, 0x69, 0x66, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x47, 0x69, 0x66, 0x74, 0x49, 0x64, 0x54, 0x65, 0x78, 0x74, 0x22, 0x49, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x15, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x54, 0x65, 0x78, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x1d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x22, 0xeb, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7f, 0x0a, 0x18, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x72, 0x0a, 0x1d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x70, 0x73, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x70, 0x73, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x14, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x70, 0x73, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x70, 0x73, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x14, 0x52, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x70, 0x73, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x70, 0x73, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x70, 0x73, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x70, 0x73, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x16, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 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, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x11, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x61, 0x77, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x10, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x61, 0x77, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x74, 0x6c, 0x4d, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x72, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x78, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x71, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x7a, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x77, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x5f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x46, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x7c, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x99, 0x06, 0x0a, 0x15, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x61, 0x79, 0x31, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x64, 0x61, 0x79, 0x31, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x1d, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x43, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x43, 0x0a, 0x1e, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x6c, 0x6f, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6c, 0x6f, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x4d, 0x0a, 0x24, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x68, 0x61, 0x73, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x57, 0x69, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x6a, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xbd, 0x05, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x57, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x22, 0x68, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x77, 0x0a, 0x19, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x7e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x12, 0x44, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xdf, 0x01, 0x0a, 0x1e, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xbd, 0x01, 0x0a, 0x1f, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 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, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x91, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x7f, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x74, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 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, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 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, 0x22, 0x59, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0x69, 0x0a, 0x11, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x32, 0xe6, 0x0c, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x68, 0x0a, 0x13, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x74, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x1c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd8, 0x12, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x21, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7e, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2d, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x17, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2d, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x25, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x50, 0x53, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x26, 0x5a, 0x24, 0x68, 0x79, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_proto_game_v1_game_proto_rawDescOnce sync.Once file_proto_game_v1_game_proto_rawDescData = file_proto_game_v1_game_proto_rawDesc ) func file_proto_game_v1_game_proto_rawDescGZIP() []byte { file_proto_game_v1_game_proto_rawDescOnce.Do(func() { file_proto_game_v1_game_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_game_v1_game_proto_rawDescData) }) return file_proto_game_v1_game_proto_rawDescData } var file_proto_game_v1_game_proto_msgTypes = make([]protoimpl.MessageInfo, 84) var file_proto_game_v1_game_proto_goTypes = []any{ (*RequestMeta)(nil), // 0: hyapp.game.v1.RequestMeta (*GamePlatform)(nil), // 1: hyapp.game.v1.GamePlatform (*GameCatalogItem)(nil), // 2: hyapp.game.v1.GameCatalogItem (*AppGame)(nil), // 3: hyapp.game.v1.AppGame (*ListGamesRequest)(nil), // 4: hyapp.game.v1.ListGamesRequest (*ListGamesResponse)(nil), // 5: hyapp.game.v1.ListGamesResponse (*ListRecentGamesRequest)(nil), // 6: hyapp.game.v1.ListRecentGamesRequest (*ListExploreWinnersRequest)(nil), // 7: hyapp.game.v1.ListExploreWinnersRequest (*ExploreWinner)(nil), // 8: hyapp.game.v1.ExploreWinner (*ListExploreWinnersResponse)(nil), // 9: hyapp.game.v1.ListExploreWinnersResponse (*GetBridgeScriptRequest)(nil), // 10: hyapp.game.v1.GetBridgeScriptRequest (*GameBridgeScriptConfig)(nil), // 11: hyapp.game.v1.GameBridgeScriptConfig (*GetBridgeScriptResponse)(nil), // 12: hyapp.game.v1.GetBridgeScriptResponse (*LaunchGameRequest)(nil), // 13: hyapp.game.v1.LaunchGameRequest (*LaunchGameResponse)(nil), // 14: hyapp.game.v1.LaunchGameResponse (*DiceParticipant)(nil), // 15: hyapp.game.v1.DiceParticipant (*DiceMatch)(nil), // 16: hyapp.game.v1.DiceMatch (*DiceStakeOption)(nil), // 17: hyapp.game.v1.DiceStakeOption (*DiceConfig)(nil), // 18: hyapp.game.v1.DiceConfig (*GetDiceConfigRequest)(nil), // 19: hyapp.game.v1.GetDiceConfigRequest (*DiceConfigResponse)(nil), // 20: hyapp.game.v1.DiceConfigResponse (*RoomRPSStakeGift)(nil), // 21: hyapp.game.v1.RoomRPSStakeGift (*RoomRPSConfig)(nil), // 22: hyapp.game.v1.RoomRPSConfig (*RoomRPSPlayer)(nil), // 23: hyapp.game.v1.RoomRPSPlayer (*RoomRPSChallenge)(nil), // 24: hyapp.game.v1.RoomRPSChallenge (*GetRoomRPSConfigRequest)(nil), // 25: hyapp.game.v1.GetRoomRPSConfigRequest (*RoomRPSConfigResponse)(nil), // 26: hyapp.game.v1.RoomRPSConfigResponse (*CreateRoomRPSChallengeRequest)(nil), // 27: hyapp.game.v1.CreateRoomRPSChallengeRequest (*AcceptRoomRPSChallengeRequest)(nil), // 28: hyapp.game.v1.AcceptRoomRPSChallengeRequest (*GetRoomRPSChallengeRequest)(nil), // 29: hyapp.game.v1.GetRoomRPSChallengeRequest (*ListRoomRPSChallengesRequest)(nil), // 30: hyapp.game.v1.ListRoomRPSChallengesRequest (*RoomRPSChallengeResponse)(nil), // 31: hyapp.game.v1.RoomRPSChallengeResponse (*ListRoomRPSChallengesResponse)(nil), // 32: hyapp.game.v1.ListRoomRPSChallengesResponse (*UpdateRoomRPSConfigRequest)(nil), // 33: hyapp.game.v1.UpdateRoomRPSConfigRequest (*RetryRoomRPSSettlementRequest)(nil), // 34: hyapp.game.v1.RetryRoomRPSSettlementRequest (*ExpireRoomRPSChallengeRequest)(nil), // 35: hyapp.game.v1.ExpireRoomRPSChallengeRequest (*CreateDiceMatchRequest)(nil), // 36: hyapp.game.v1.CreateDiceMatchRequest (*JoinDiceMatchRequest)(nil), // 37: hyapp.game.v1.JoinDiceMatchRequest (*GetDiceMatchRequest)(nil), // 38: hyapp.game.v1.GetDiceMatchRequest (*RollDiceMatchRequest)(nil), // 39: hyapp.game.v1.RollDiceMatchRequest (*MatchDiceRequest)(nil), // 40: hyapp.game.v1.MatchDiceRequest (*CancelDiceMatchRequest)(nil), // 41: hyapp.game.v1.CancelDiceMatchRequest (*DiceMatchResponse)(nil), // 42: hyapp.game.v1.DiceMatchResponse (*CallbackRequest)(nil), // 43: hyapp.game.v1.CallbackRequest (*CallbackResponse)(nil), // 44: hyapp.game.v1.CallbackResponse (*CronBatchRequest)(nil), // 45: hyapp.game.v1.CronBatchRequest (*CronBatchResponse)(nil), // 46: hyapp.game.v1.CronBatchResponse (*ListPlatformsRequest)(nil), // 47: hyapp.game.v1.ListPlatformsRequest (*ListPlatformsResponse)(nil), // 48: hyapp.game.v1.ListPlatformsResponse (*UpsertPlatformRequest)(nil), // 49: hyapp.game.v1.UpsertPlatformRequest (*PlatformResponse)(nil), // 50: hyapp.game.v1.PlatformResponse (*ListCatalogRequest)(nil), // 51: hyapp.game.v1.ListCatalogRequest (*ListCatalogResponse)(nil), // 52: hyapp.game.v1.ListCatalogResponse (*UpsertCatalogRequest)(nil), // 53: hyapp.game.v1.UpsertCatalogRequest (*CatalogResponse)(nil), // 54: hyapp.game.v1.CatalogResponse (*SetGameStatusRequest)(nil), // 55: hyapp.game.v1.SetGameStatusRequest (*DeleteCatalogRequest)(nil), // 56: hyapp.game.v1.DeleteCatalogRequest (*DeleteCatalogResponse)(nil), // 57: hyapp.game.v1.DeleteCatalogResponse (*ListSelfGamesRequest)(nil), // 58: hyapp.game.v1.ListSelfGamesRequest (*ListSelfGamesResponse)(nil), // 59: hyapp.game.v1.ListSelfGamesResponse (*UpdateDiceConfigRequest)(nil), // 60: hyapp.game.v1.UpdateDiceConfigRequest (*SelfGameNewUserPolicy)(nil), // 61: hyapp.game.v1.SelfGameNewUserPolicy (*GetSelfGameNewUserPolicyRequest)(nil), // 62: hyapp.game.v1.GetSelfGameNewUserPolicyRequest (*UpdateSelfGameNewUserPolicyRequest)(nil), // 63: hyapp.game.v1.UpdateSelfGameNewUserPolicyRequest (*SelfGameNewUserPolicyResponse)(nil), // 64: hyapp.game.v1.SelfGameNewUserPolicyResponse (*SelfGameStakePool)(nil), // 65: hyapp.game.v1.SelfGameStakePool (*ListSelfGameStakePoolsRequest)(nil), // 66: hyapp.game.v1.ListSelfGameStakePoolsRequest (*UpdateSelfGameStakePoolRequest)(nil), // 67: hyapp.game.v1.UpdateSelfGameStakePoolRequest (*SelfGameStakePoolResponse)(nil), // 68: hyapp.game.v1.SelfGameStakePoolResponse (*ListSelfGameStakePoolsResponse)(nil), // 69: hyapp.game.v1.ListSelfGameStakePoolsResponse (*DicePoolAdjustment)(nil), // 70: hyapp.game.v1.DicePoolAdjustment (*AdjustSelfGameStakePoolRequest)(nil), // 71: hyapp.game.v1.AdjustSelfGameStakePoolRequest (*AdjustSelfGameStakePoolResponse)(nil), // 72: hyapp.game.v1.AdjustSelfGameStakePoolResponse (*DiceRobot)(nil), // 73: hyapp.game.v1.DiceRobot (*ListDiceRobotsRequest)(nil), // 74: hyapp.game.v1.ListDiceRobotsRequest (*ListDiceRobotsResponse)(nil), // 75: hyapp.game.v1.ListDiceRobotsResponse (*RegisterDiceRobotsRequest)(nil), // 76: hyapp.game.v1.RegisterDiceRobotsRequest (*RegisterDiceRobotsResponse)(nil), // 77: hyapp.game.v1.RegisterDiceRobotsResponse (*SetDiceRobotStatusRequest)(nil), // 78: hyapp.game.v1.SetDiceRobotStatusRequest (*DeleteDiceRobotRequest)(nil), // 79: hyapp.game.v1.DeleteDiceRobotRequest (*DeleteDiceRobotResponse)(nil), // 80: hyapp.game.v1.DeleteDiceRobotResponse (*DiceRobotResponse)(nil), // 81: hyapp.game.v1.DiceRobotResponse nil, // 82: hyapp.game.v1.CallbackRequest.HeadersEntry nil, // 83: hyapp.game.v1.CallbackRequest.QueryEntry } var file_proto_game_v1_game_proto_depIdxs = []int32{ 0, // 0: hyapp.game.v1.ListGamesRequest.meta:type_name -> hyapp.game.v1.RequestMeta 3, // 1: hyapp.game.v1.ListGamesResponse.games:type_name -> hyapp.game.v1.AppGame 0, // 2: hyapp.game.v1.ListRecentGamesRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 3: hyapp.game.v1.ListExploreWinnersRequest.meta:type_name -> hyapp.game.v1.RequestMeta 8, // 4: hyapp.game.v1.ListExploreWinnersResponse.winners:type_name -> hyapp.game.v1.ExploreWinner 0, // 5: hyapp.game.v1.GetBridgeScriptRequest.meta:type_name -> hyapp.game.v1.RequestMeta 11, // 6: hyapp.game.v1.GetBridgeScriptResponse.config:type_name -> hyapp.game.v1.GameBridgeScriptConfig 0, // 7: hyapp.game.v1.LaunchGameRequest.meta:type_name -> hyapp.game.v1.RequestMeta 15, // 8: hyapp.game.v1.DiceMatch.participants:type_name -> hyapp.game.v1.DiceParticipant 17, // 9: hyapp.game.v1.DiceConfig.stake_options:type_name -> hyapp.game.v1.DiceStakeOption 0, // 10: hyapp.game.v1.GetDiceConfigRequest.meta:type_name -> hyapp.game.v1.RequestMeta 18, // 11: hyapp.game.v1.DiceConfigResponse.config:type_name -> hyapp.game.v1.DiceConfig 21, // 12: hyapp.game.v1.RoomRPSConfig.stake_gifts:type_name -> hyapp.game.v1.RoomRPSStakeGift 23, // 13: hyapp.game.v1.RoomRPSChallenge.initiator:type_name -> hyapp.game.v1.RoomRPSPlayer 23, // 14: hyapp.game.v1.RoomRPSChallenge.challenger:type_name -> hyapp.game.v1.RoomRPSPlayer 0, // 15: hyapp.game.v1.GetRoomRPSConfigRequest.meta:type_name -> hyapp.game.v1.RequestMeta 22, // 16: hyapp.game.v1.RoomRPSConfigResponse.config:type_name -> hyapp.game.v1.RoomRPSConfig 0, // 17: hyapp.game.v1.CreateRoomRPSChallengeRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 18: hyapp.game.v1.AcceptRoomRPSChallengeRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 19: hyapp.game.v1.GetRoomRPSChallengeRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 20: hyapp.game.v1.ListRoomRPSChallengesRequest.meta:type_name -> hyapp.game.v1.RequestMeta 24, // 21: hyapp.game.v1.RoomRPSChallengeResponse.challenge:type_name -> hyapp.game.v1.RoomRPSChallenge 24, // 22: hyapp.game.v1.ListRoomRPSChallengesResponse.challenges:type_name -> hyapp.game.v1.RoomRPSChallenge 0, // 23: hyapp.game.v1.UpdateRoomRPSConfigRequest.meta:type_name -> hyapp.game.v1.RequestMeta 22, // 24: hyapp.game.v1.UpdateRoomRPSConfigRequest.config:type_name -> hyapp.game.v1.RoomRPSConfig 0, // 25: hyapp.game.v1.RetryRoomRPSSettlementRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 26: hyapp.game.v1.ExpireRoomRPSChallengeRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 27: hyapp.game.v1.CreateDiceMatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 28: hyapp.game.v1.JoinDiceMatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 29: hyapp.game.v1.GetDiceMatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 30: hyapp.game.v1.RollDiceMatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 31: hyapp.game.v1.MatchDiceRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 32: hyapp.game.v1.CancelDiceMatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 16, // 33: hyapp.game.v1.DiceMatchResponse.match:type_name -> hyapp.game.v1.DiceMatch 0, // 34: hyapp.game.v1.CallbackRequest.meta:type_name -> hyapp.game.v1.RequestMeta 82, // 35: hyapp.game.v1.CallbackRequest.headers:type_name -> hyapp.game.v1.CallbackRequest.HeadersEntry 83, // 36: hyapp.game.v1.CallbackRequest.query:type_name -> hyapp.game.v1.CallbackRequest.QueryEntry 0, // 37: hyapp.game.v1.CronBatchRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 38: hyapp.game.v1.ListPlatformsRequest.meta:type_name -> hyapp.game.v1.RequestMeta 1, // 39: hyapp.game.v1.ListPlatformsResponse.platforms:type_name -> hyapp.game.v1.GamePlatform 0, // 40: hyapp.game.v1.UpsertPlatformRequest.meta:type_name -> hyapp.game.v1.RequestMeta 1, // 41: hyapp.game.v1.UpsertPlatformRequest.platform:type_name -> hyapp.game.v1.GamePlatform 1, // 42: hyapp.game.v1.PlatformResponse.platform:type_name -> hyapp.game.v1.GamePlatform 0, // 43: hyapp.game.v1.ListCatalogRequest.meta:type_name -> hyapp.game.v1.RequestMeta 2, // 44: hyapp.game.v1.ListCatalogResponse.games:type_name -> hyapp.game.v1.GameCatalogItem 0, // 45: hyapp.game.v1.UpsertCatalogRequest.meta:type_name -> hyapp.game.v1.RequestMeta 2, // 46: hyapp.game.v1.UpsertCatalogRequest.game:type_name -> hyapp.game.v1.GameCatalogItem 2, // 47: hyapp.game.v1.CatalogResponse.game:type_name -> hyapp.game.v1.GameCatalogItem 0, // 48: hyapp.game.v1.SetGameStatusRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 49: hyapp.game.v1.DeleteCatalogRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 50: hyapp.game.v1.ListSelfGamesRequest.meta:type_name -> hyapp.game.v1.RequestMeta 18, // 51: hyapp.game.v1.ListSelfGamesResponse.games:type_name -> hyapp.game.v1.DiceConfig 0, // 52: hyapp.game.v1.UpdateDiceConfigRequest.meta:type_name -> hyapp.game.v1.RequestMeta 18, // 53: hyapp.game.v1.UpdateDiceConfigRequest.config:type_name -> hyapp.game.v1.DiceConfig 0, // 54: hyapp.game.v1.GetSelfGameNewUserPolicyRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 55: hyapp.game.v1.UpdateSelfGameNewUserPolicyRequest.meta:type_name -> hyapp.game.v1.RequestMeta 61, // 56: hyapp.game.v1.UpdateSelfGameNewUserPolicyRequest.policy:type_name -> hyapp.game.v1.SelfGameNewUserPolicy 61, // 57: hyapp.game.v1.SelfGameNewUserPolicyResponse.policy:type_name -> hyapp.game.v1.SelfGameNewUserPolicy 0, // 58: hyapp.game.v1.ListSelfGameStakePoolsRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 59: hyapp.game.v1.UpdateSelfGameStakePoolRequest.meta:type_name -> hyapp.game.v1.RequestMeta 65, // 60: hyapp.game.v1.UpdateSelfGameStakePoolRequest.pool:type_name -> hyapp.game.v1.SelfGameStakePool 65, // 61: hyapp.game.v1.SelfGameStakePoolResponse.pool:type_name -> hyapp.game.v1.SelfGameStakePool 65, // 62: hyapp.game.v1.ListSelfGameStakePoolsResponse.pools:type_name -> hyapp.game.v1.SelfGameStakePool 0, // 63: hyapp.game.v1.AdjustSelfGameStakePoolRequest.meta:type_name -> hyapp.game.v1.RequestMeta 70, // 64: hyapp.game.v1.AdjustSelfGameStakePoolResponse.adjustment:type_name -> hyapp.game.v1.DicePoolAdjustment 18, // 65: hyapp.game.v1.AdjustSelfGameStakePoolResponse.config:type_name -> hyapp.game.v1.DiceConfig 0, // 66: hyapp.game.v1.ListDiceRobotsRequest.meta:type_name -> hyapp.game.v1.RequestMeta 73, // 67: hyapp.game.v1.ListDiceRobotsResponse.robots:type_name -> hyapp.game.v1.DiceRobot 0, // 68: hyapp.game.v1.RegisterDiceRobotsRequest.meta:type_name -> hyapp.game.v1.RequestMeta 73, // 69: hyapp.game.v1.RegisterDiceRobotsResponse.robots:type_name -> hyapp.game.v1.DiceRobot 0, // 70: hyapp.game.v1.SetDiceRobotStatusRequest.meta:type_name -> hyapp.game.v1.RequestMeta 0, // 71: hyapp.game.v1.DeleteDiceRobotRequest.meta:type_name -> hyapp.game.v1.RequestMeta 73, // 72: hyapp.game.v1.DiceRobotResponse.robot:type_name -> hyapp.game.v1.DiceRobot 4, // 73: hyapp.game.v1.GameAppService.ListGames:input_type -> hyapp.game.v1.ListGamesRequest 6, // 74: hyapp.game.v1.GameAppService.ListRecentGames:input_type -> hyapp.game.v1.ListRecentGamesRequest 7, // 75: hyapp.game.v1.GameAppService.ListExploreWinners:input_type -> hyapp.game.v1.ListExploreWinnersRequest 10, // 76: hyapp.game.v1.GameAppService.GetBridgeScript:input_type -> hyapp.game.v1.GetBridgeScriptRequest 13, // 77: hyapp.game.v1.GameAppService.LaunchGame:input_type -> hyapp.game.v1.LaunchGameRequest 19, // 78: hyapp.game.v1.GameAppService.GetDiceConfig:input_type -> hyapp.game.v1.GetDiceConfigRequest 40, // 79: hyapp.game.v1.GameAppService.MatchDice:input_type -> hyapp.game.v1.MatchDiceRequest 36, // 80: hyapp.game.v1.GameAppService.CreateDiceMatch:input_type -> hyapp.game.v1.CreateDiceMatchRequest 37, // 81: hyapp.game.v1.GameAppService.JoinDiceMatch:input_type -> hyapp.game.v1.JoinDiceMatchRequest 38, // 82: hyapp.game.v1.GameAppService.GetDiceMatch:input_type -> hyapp.game.v1.GetDiceMatchRequest 39, // 83: hyapp.game.v1.GameAppService.RollDiceMatch:input_type -> hyapp.game.v1.RollDiceMatchRequest 41, // 84: hyapp.game.v1.GameAppService.CancelDiceMatch:input_type -> hyapp.game.v1.CancelDiceMatchRequest 25, // 85: hyapp.game.v1.GameAppService.GetRoomRPSConfig:input_type -> hyapp.game.v1.GetRoomRPSConfigRequest 30, // 86: hyapp.game.v1.GameAppService.ListRoomRPSChallenges:input_type -> hyapp.game.v1.ListRoomRPSChallengesRequest 27, // 87: hyapp.game.v1.GameAppService.CreateRoomRPSChallenge:input_type -> hyapp.game.v1.CreateRoomRPSChallengeRequest 28, // 88: hyapp.game.v1.GameAppService.AcceptRoomRPSChallenge:input_type -> hyapp.game.v1.AcceptRoomRPSChallengeRequest 29, // 89: hyapp.game.v1.GameAppService.GetRoomRPSChallenge:input_type -> hyapp.game.v1.GetRoomRPSChallengeRequest 43, // 90: hyapp.game.v1.GameCallbackService.HandleCallback:input_type -> hyapp.game.v1.CallbackRequest 45, // 91: hyapp.game.v1.GameCronService.ProcessLevelEventOutboxBatch:input_type -> hyapp.game.v1.CronBatchRequest 47, // 92: hyapp.game.v1.GameAdminService.ListPlatforms:input_type -> hyapp.game.v1.ListPlatformsRequest 49, // 93: hyapp.game.v1.GameAdminService.UpsertPlatform:input_type -> hyapp.game.v1.UpsertPlatformRequest 51, // 94: hyapp.game.v1.GameAdminService.ListCatalog:input_type -> hyapp.game.v1.ListCatalogRequest 53, // 95: hyapp.game.v1.GameAdminService.UpsertCatalog:input_type -> hyapp.game.v1.UpsertCatalogRequest 55, // 96: hyapp.game.v1.GameAdminService.SetGameStatus:input_type -> hyapp.game.v1.SetGameStatusRequest 56, // 97: hyapp.game.v1.GameAdminService.DeleteCatalog:input_type -> hyapp.game.v1.DeleteCatalogRequest 58, // 98: hyapp.game.v1.GameAdminService.ListSelfGames:input_type -> hyapp.game.v1.ListSelfGamesRequest 60, // 99: hyapp.game.v1.GameAdminService.UpdateDiceConfig:input_type -> hyapp.game.v1.UpdateDiceConfigRequest 62, // 100: hyapp.game.v1.GameAdminService.GetSelfGameNewUserPolicy:input_type -> hyapp.game.v1.GetSelfGameNewUserPolicyRequest 63, // 101: hyapp.game.v1.GameAdminService.UpdateSelfGameNewUserPolicy:input_type -> hyapp.game.v1.UpdateSelfGameNewUserPolicyRequest 66, // 102: hyapp.game.v1.GameAdminService.ListSelfGameStakePools:input_type -> hyapp.game.v1.ListSelfGameStakePoolsRequest 67, // 103: hyapp.game.v1.GameAdminService.UpdateSelfGameStakePool:input_type -> hyapp.game.v1.UpdateSelfGameStakePoolRequest 71, // 104: hyapp.game.v1.GameAdminService.AdjustSelfGameStakePool:input_type -> hyapp.game.v1.AdjustSelfGameStakePoolRequest 74, // 105: hyapp.game.v1.GameAdminService.ListDiceRobots:input_type -> hyapp.game.v1.ListDiceRobotsRequest 76, // 106: hyapp.game.v1.GameAdminService.RegisterDiceRobots:input_type -> hyapp.game.v1.RegisterDiceRobotsRequest 78, // 107: hyapp.game.v1.GameAdminService.SetDiceRobotStatus:input_type -> hyapp.game.v1.SetDiceRobotStatusRequest 79, // 108: hyapp.game.v1.GameAdminService.DeleteDiceRobot:input_type -> hyapp.game.v1.DeleteDiceRobotRequest 25, // 109: hyapp.game.v1.GameAdminService.GetRoomRPSConfig:input_type -> hyapp.game.v1.GetRoomRPSConfigRequest 33, // 110: hyapp.game.v1.GameAdminService.UpdateRoomRPSConfig:input_type -> hyapp.game.v1.UpdateRoomRPSConfigRequest 30, // 111: hyapp.game.v1.GameAdminService.ListRoomRPSChallenges:input_type -> hyapp.game.v1.ListRoomRPSChallengesRequest 29, // 112: hyapp.game.v1.GameAdminService.GetRoomRPSChallenge:input_type -> hyapp.game.v1.GetRoomRPSChallengeRequest 34, // 113: hyapp.game.v1.GameAdminService.RetryRoomRPSSettlement:input_type -> hyapp.game.v1.RetryRoomRPSSettlementRequest 35, // 114: hyapp.game.v1.GameAdminService.ExpireRoomRPSChallenge:input_type -> hyapp.game.v1.ExpireRoomRPSChallengeRequest 5, // 115: hyapp.game.v1.GameAppService.ListGames:output_type -> hyapp.game.v1.ListGamesResponse 5, // 116: hyapp.game.v1.GameAppService.ListRecentGames:output_type -> hyapp.game.v1.ListGamesResponse 9, // 117: hyapp.game.v1.GameAppService.ListExploreWinners:output_type -> hyapp.game.v1.ListExploreWinnersResponse 12, // 118: hyapp.game.v1.GameAppService.GetBridgeScript:output_type -> hyapp.game.v1.GetBridgeScriptResponse 14, // 119: hyapp.game.v1.GameAppService.LaunchGame:output_type -> hyapp.game.v1.LaunchGameResponse 20, // 120: hyapp.game.v1.GameAppService.GetDiceConfig:output_type -> hyapp.game.v1.DiceConfigResponse 42, // 121: hyapp.game.v1.GameAppService.MatchDice:output_type -> hyapp.game.v1.DiceMatchResponse 42, // 122: hyapp.game.v1.GameAppService.CreateDiceMatch:output_type -> hyapp.game.v1.DiceMatchResponse 42, // 123: hyapp.game.v1.GameAppService.JoinDiceMatch:output_type -> hyapp.game.v1.DiceMatchResponse 42, // 124: hyapp.game.v1.GameAppService.GetDiceMatch:output_type -> hyapp.game.v1.DiceMatchResponse 42, // 125: hyapp.game.v1.GameAppService.RollDiceMatch:output_type -> hyapp.game.v1.DiceMatchResponse 42, // 126: hyapp.game.v1.GameAppService.CancelDiceMatch:output_type -> hyapp.game.v1.DiceMatchResponse 26, // 127: hyapp.game.v1.GameAppService.GetRoomRPSConfig:output_type -> hyapp.game.v1.RoomRPSConfigResponse 32, // 128: hyapp.game.v1.GameAppService.ListRoomRPSChallenges:output_type -> hyapp.game.v1.ListRoomRPSChallengesResponse 31, // 129: hyapp.game.v1.GameAppService.CreateRoomRPSChallenge:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 31, // 130: hyapp.game.v1.GameAppService.AcceptRoomRPSChallenge:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 31, // 131: hyapp.game.v1.GameAppService.GetRoomRPSChallenge:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 44, // 132: hyapp.game.v1.GameCallbackService.HandleCallback:output_type -> hyapp.game.v1.CallbackResponse 46, // 133: hyapp.game.v1.GameCronService.ProcessLevelEventOutboxBatch:output_type -> hyapp.game.v1.CronBatchResponse 48, // 134: hyapp.game.v1.GameAdminService.ListPlatforms:output_type -> hyapp.game.v1.ListPlatformsResponse 50, // 135: hyapp.game.v1.GameAdminService.UpsertPlatform:output_type -> hyapp.game.v1.PlatformResponse 52, // 136: hyapp.game.v1.GameAdminService.ListCatalog:output_type -> hyapp.game.v1.ListCatalogResponse 54, // 137: hyapp.game.v1.GameAdminService.UpsertCatalog:output_type -> hyapp.game.v1.CatalogResponse 54, // 138: hyapp.game.v1.GameAdminService.SetGameStatus:output_type -> hyapp.game.v1.CatalogResponse 57, // 139: hyapp.game.v1.GameAdminService.DeleteCatalog:output_type -> hyapp.game.v1.DeleteCatalogResponse 59, // 140: hyapp.game.v1.GameAdminService.ListSelfGames:output_type -> hyapp.game.v1.ListSelfGamesResponse 20, // 141: hyapp.game.v1.GameAdminService.UpdateDiceConfig:output_type -> hyapp.game.v1.DiceConfigResponse 64, // 142: hyapp.game.v1.GameAdminService.GetSelfGameNewUserPolicy:output_type -> hyapp.game.v1.SelfGameNewUserPolicyResponse 64, // 143: hyapp.game.v1.GameAdminService.UpdateSelfGameNewUserPolicy:output_type -> hyapp.game.v1.SelfGameNewUserPolicyResponse 69, // 144: hyapp.game.v1.GameAdminService.ListSelfGameStakePools:output_type -> hyapp.game.v1.ListSelfGameStakePoolsResponse 68, // 145: hyapp.game.v1.GameAdminService.UpdateSelfGameStakePool:output_type -> hyapp.game.v1.SelfGameStakePoolResponse 72, // 146: hyapp.game.v1.GameAdminService.AdjustSelfGameStakePool:output_type -> hyapp.game.v1.AdjustSelfGameStakePoolResponse 75, // 147: hyapp.game.v1.GameAdminService.ListDiceRobots:output_type -> hyapp.game.v1.ListDiceRobotsResponse 77, // 148: hyapp.game.v1.GameAdminService.RegisterDiceRobots:output_type -> hyapp.game.v1.RegisterDiceRobotsResponse 81, // 149: hyapp.game.v1.GameAdminService.SetDiceRobotStatus:output_type -> hyapp.game.v1.DiceRobotResponse 80, // 150: hyapp.game.v1.GameAdminService.DeleteDiceRobot:output_type -> hyapp.game.v1.DeleteDiceRobotResponse 26, // 151: hyapp.game.v1.GameAdminService.GetRoomRPSConfig:output_type -> hyapp.game.v1.RoomRPSConfigResponse 26, // 152: hyapp.game.v1.GameAdminService.UpdateRoomRPSConfig:output_type -> hyapp.game.v1.RoomRPSConfigResponse 32, // 153: hyapp.game.v1.GameAdminService.ListRoomRPSChallenges:output_type -> hyapp.game.v1.ListRoomRPSChallengesResponse 31, // 154: hyapp.game.v1.GameAdminService.GetRoomRPSChallenge:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 31, // 155: hyapp.game.v1.GameAdminService.RetryRoomRPSSettlement:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 31, // 156: hyapp.game.v1.GameAdminService.ExpireRoomRPSChallenge:output_type -> hyapp.game.v1.RoomRPSChallengeResponse 115, // [115:157] is the sub-list for method output_type 73, // [73:115] is the sub-list for method input_type 73, // [73:73] is the sub-list for extension type_name 73, // [73:73] is the sub-list for extension extendee 0, // [0:73] is the sub-list for field type_name } func init() { file_proto_game_v1_game_proto_init() } func file_proto_game_v1_game_proto_init() { if File_proto_game_v1_game_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_game_v1_game_proto_rawDesc, NumEnums: 0, NumMessages: 84, NumExtensions: 0, NumServices: 4, }, GoTypes: file_proto_game_v1_game_proto_goTypes, DependencyIndexes: file_proto_game_v1_game_proto_depIdxs, MessageInfos: file_proto_game_v1_game_proto_msgTypes, }.Build() File_proto_game_v1_game_proto = out.File file_proto_game_v1_game_proto_rawDesc = nil file_proto_game_v1_game_proto_goTypes = nil file_proto_game_v1_game_proto_depIdxs = nil }